Foros del Web » Programación para mayores de 30 ;) » Java »

Composicion y herencia

Estas en el tema de Composicion y herencia en el foro de Java en Foros del Web. Hola, entiendo para que sirve la herencia y como se usa, pero no sé que diferencia tiene con Composicion, en que casos es mejor ocupar ...
  #1 (permalink)  
Antiguo 10/12/2008, 22:51
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 10 meses
Puntos: 3
Composicion y herencia

Hola, entiendo para que sirve la herencia y como se usa, pero no sé que diferencia tiene con Composicion, en que casos es mejor ocupar herencia y composición?
Me pueden dar un pequeño ejemplo de composición?

Gracias
  #2 (permalink)  
Antiguo 11/12/2008, 01:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Composicion y herencia

Heredar solo puedes heredar de una clase, así que al heredar hay que tener cuidado por que no puedes añadir más herencia y cambiarla puede ser dificil.

Componer puedes componer con tantos objetos como quieras, así que te dá más libertad. A cambio normalmente de escribir algo más de código, precisamente por que no "heredas" nada.

Así de simple, pero con profundas implicaciones .
S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 11/12/2008, 08:37
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 10 meses
Puntos: 3
Respuesta: Composicion y herencia

Cita:
Iniciado por GreenEyed Ver Mensaje
Heredar solo puedes heredar de una clase, así que al heredar hay que tener cuidado por que no puedes añadir más herencia y cambiarla puede ser dificil.

Componer puedes componer con tantos objetos como quieras, así que te dá más libertad. A cambio normalmente de escribir algo más de código, precisamente por que no "heredas" nada.

Así de simple, pero con profundas implicaciones .
S!
Gracias por tu respuesta.

Segun tu respuesta yo pienso que es más ventajoso utilizar composición por la libertad que se tienen al ocupar objetos. Tu que recomiendas para la construccion de un sistema, ¿ocupar composión o herencia?
gracias
  #4 (permalink)  
Antiguo 11/12/2008, 11:36
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Composicion y herencia

No existe respuesta correcta a una pregunta tan genérica . La respuesta es: "depende". A veces va mejor una cosa, a veces otra. Por ejemplo, si es algo que controlas tú totalmente, usar herencia no suele ser un problema por que tú sabes exactamente para qué la vas a usar, que clases heredarán de ahí etc.

En cambio si otra gente ha de implementar servicios tuyos, si usas herencia les obligas a crear clases nuevas que hereden de la tuya, no pueden usar clases suyas que hereden de otra cosa. Pero si tus clases tienen muuuuchos metodos opcionales que pueden o no implementarse, con composicion tienen que escribir todos esos metodos de nuevo y no hacer nada con ellos, en cambio con herencia cojen la implementación del padre por defecto....

Así que... depende .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 11/12/2008, 19:32
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 10 meses
Puntos: 3
Respuesta: Composicion y herencia

Cita:
Iniciado por GreenEyed Ver Mensaje
No existe respuesta correcta a una pregunta tan genérica . La respuesta es: "depende". A veces va mejor una cosa, a veces otra. Por ejemplo, si es algo que controlas tú totalmente, usar herencia no suele ser un problema por que tú sabes exactamente para qué la vas a usar, que clases heredarán de ahí etc.

En cambio si otra gente ha de implementar servicios tuyos, si usas herencia les obligas a crear clases nuevas que hereden de la tuya, no pueden usar clases suyas que hereden de otra cosa. Pero si tus clases tienen muuuuchos metodos opcionales que pueden o no implementarse, con composicion tienen que escribir todos esos metodos de nuevo y no hacer nada con ellos, en cambio con herencia cojen la implementación del padre por defecto....

Así que... depende .
Muchas gracias por tu respuesta ya me quedo claro
  #6 (permalink)  
Antiguo 11/12/2008, 22:33
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 10 meses
Puntos: 3
Respuesta: Composicion y herencia

Una ultima consulta: cuando intento hacer este pequeño programa con composición me arroja el siguiente error:
Código:
non-static variable fruta cannot be referenced from a static context
que es en esta linea fruta.mostrar();

a que se debe ese error y que debo cambiar en el codigo para que funcione?
gracias

Código PHP:
class Fruta {

    public  
void mostrar()
    {
    
System.out.println("mensaje de prueba");    
    }
}

 class 
Manzana {

    private 
Fruta fruta = new Fruta();
    
   public static 
void main(String[] arguments)
   {
   
fruta.mostrar();    
   } 
    

  #7 (permalink)  
Antiguo 12/12/2008, 01:11
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Composicion y herencia

El problema no tiene nada que ver con la herencia/composicion. Estas intentando usar una variable a nivel de miembro desde un metodo estático, y eso no se puede hacer. Para llamar a una variable de miembro necesitas una instancia de la clase Manzana.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 12/12/2008, 11:35
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 10 meses
Puntos: 3
Respuesta: Composicion y herencia

Gracias
  #9 (permalink)  
Antiguo 12/12/2008, 11:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Sonrisa Respuesta: Composicion y herencia

Estimado soy nuevo en esto y tengo problemas para grabar desde una pagina jsp, utilizando Servlets cargar en una base mysql.

Si alguno puede aportar un ejemplo de como seria para utilizando 3 capas guardar se los agradezco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:11.