Ver Mensaje Individual
  #10 (permalink)  
Antiguo 18/08/2008, 09:33
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: duda sobre instanciar una clase dentro de otra

Cita:
por ejemplo, tenemos la clase "planeta" pero tambien hay una "sistema" y tambien hay una "galaxia", entonses aqui segun lo que tengo entendido si se puede hacer una herencia,
Les voy a prohibir el uso/abuso de la herencia

¿Cual es la relación de parentesco entre Galaxia -> Sistemas -> Planetas?

No será que "las galaxias están compuestas por varios sistemas, y que a su vez, los sistemas están compuestos por muchos planetas"?

Usemos el tradicional "es un": ¿un planeta es un tipo de sistema? ¿un sistema es un tipo de galaxia?

Ahí entraría la relación de "agregación" (una especialización de la relación "asociación"), donde "asocias/agrupas varios elementos".

Diagrama UML

En código se traduce en un atributo que es un array ("contenedor de objetos") y un método que agrega los objetos a ese array (generalmente con el nombre "add").

Código PHP:
$planeta1 = new Planeta('Tierra');
$planeta2 = new Planeta('Marte');
$planeta3 = new Planeta('Urano');

$sistema = new Sistema('Solar');
$galaxia = new Galaxia('Via Lactea');

$sistema->add($planeta1);
$sistema->add($planeta2);
$sistema->add($planeta3);

$galaxia->add($sistema); 
Si quieres saber el contenido de la Galaxia solo es recorrer el contenido de su "contenedor", preguntarle a cada "contenido" qué tiene dentro y a cada uno su nombre (todo se podría hacer con el toString de cada uno).

Cita:
porque en una galaxia hay sistemas y en sistemas hay planetas, ok, hasta aqui esta bien, pero, es recomendable hacer esto, digo, seria lo mejor, pero si no siempre voy a utilizar por ejemplo los metodos de "galaxia" ni de "sistema" es recomendable incluirlos (porque si se hereda de las anteriores es necesario incluir las clases no?)
Sigues razonando a través del código, del lenguaje, y no a través de los conceptos, de los objetos.

"Luke, pensar como programador debes evitar, la realidad que ves solo debes describir"
__________________
Blog phpsenior.com Cursos a Distancia surforce.com