Ver Mensaje Individual
  #18 (permalink)  
Antiguo 04/04/2007, 21:07
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Re: Como se implementa la agregacion y composicion en php

Bueno, no voy a citar nada de lo expuesto porque quiero empezar de cero... además, casi que no te tomaste el tiempo para hacer una exposición simple y clara de tu duda, lo cual casi me da la misma pereza para leerte.

Vamos a los conceptos, el código -estimado haragán- se saca razonando (lo único que espero y rezo a todos los demonios es que no nos estés pasando tareas de estudio a los colegas de la lista).

Aquí, como siempre se repite en esta lista, el problema no es de código, es de conceptos y de ser obstinados en no razonar y esperar que te den la comida regurgitada.

¿Sabes por qué te lo digo? El método "prueba y error" es sinónimo de desorden, falta de metodología, de razonamiento, lo cual cada cosa que intentes te llevará mucho más tiempo que si te sientas a razonarlo por un buen rato.

Por ejemplo, me imagino que todos los "id" que colocas por todos lados los debes usar porque necesitas una correspondencia con un modelo "relacional" (bases de datos) y no porque son necesarios para trabajar con objetos. Ahora bien, razonando, no veo en ningún momento que hables de bases de datos, por lo tanto para simplificar el ejemplo y concentrarnos en los conceptos de la POO debes eliminar los "id".

Código PHP:
<?php

class Proyecto{
   private 
$descripcion;
   public function 
__construct$descripcion ){
      
$this->descripcion $descripcion;
   }
   public function 
getDescripcion(){ return $this->descripcion; }
}

class 
JefeProyecto{
    private 
$nombre;
       private 
$colProyectos = array();
       public function 
__construct$nombre ){
           
$this->nombre $nombre;
       }
       public function 
addProyectoProyecto $proyecto ){
           
$this->colProyectos[] = $proyecto;
       }
       public function 
listarProyectos(){
           foreach( 
$this->colProyectos as $proyecto ){
               
$retorno .= $proyecto->getDescripcion() . " ";
           }
           return 
$retorno;
       }
}

$jefe = new JefeProyecto"Enrique" );

$jefe->addProyecto( new Proyecto("POO") );
$jefe->addProyecto( new Proyecto("Estructurado") );

echo 
$jefe->listarProyectos();

//var_dump( $jefe ); // Si quieres ver como está compuesto internamente

?>
Entiende el concepto: los objetos están compuestos por otros objetos, unos contienen a otros. Eso es agregación. Punto, no le des más vueltas.

PD: espero que no pierdas el tiempo en ofenderte por mi forma de expresarme, espero que valores la cruda y dura sinceridad de mi despiadado ser (y lo de "colaborador" es solo un error de sintaxis).
__________________
Blog phpsenior.com Cursos a Distancia surforce.com