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"