[Php-objetos] Juan Re: Entrega ejercicio 3.1

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Vie Mar 6 17:10:19 ARST 2009


Hola Juan,

El jue, 05-03-2009 a las 14:49 -0300, Juan Marcos Rigoli escribió:
> >>  Una de las diferencias con lo que me acuerso es que yo
> >> modelé los pagos.
> >
> >        Sí, no le veo mucho sentido para este enunciado...
> >        Además, modelaste el Pago, no los PagoS. Tenés una cardinalidad 0 - 1.
> > Tampoco le veo el sentido, si son los Pagos, que sean una agregación.
> >
> 
> A veces lo de plural se me confunde, deberia hacer una clase Pagos que
> tenga una relación de Composición con una clase Pago.

	Tal vez sí, y la clase Pagos sería solo una colección de objetos Pago.
	Obvio que no hace falta modelar la clase, ya que basta un atributo
Pagos que sea una colección de Objetos Pago

> >>  Se que no va a estar bien de una, pero quiero
> >> ponerme práctico para cuando tenga que hacer la tesis.
> >
> >        Tenés unas cosas sin sentido. Por ejemplo hacés
> >
> > public function puedeRetirar() {
> >        if (! $this->pagos->cuotaAlDia($this->idAsociado))
> >                return false;
> > ...
> >
> >        Pero si tenés como atributo interno a los pagos, no tiene sentido
> > pasarle al método como atributo el ID del Asociado!
> 
> El tema es que se me confunde un poco, la biblioteca tiene que tener
> una lista de todos los pagos, y el asociado tendria que tener una
> lista de pagos relacionado con el usuario,

	Mmmm... si bien se puede modelar de varias maneras, hay cosas que se
cancelan. Si la Biblioteca tiene una colección de Asociados, y los
Asociados tienen una colección de Pagos, no hace falta poner un acceso a
los Pagos modelado en la Biblioteca, porque ya los tiene vía los
Asociados.
	También podrías modelar que la Biblioteca tiene una colección de
Asociados y otra de PagosDeAsociados, pero en ese caso el Asociado no
tiene sus pagos, sino que los tiene la Biblioteca.
	Tener dos veces los Pagos seguro que no está bien!


>  pero entro un poco en
> conflicto con eso, en alguna parte del programa deberia hacer:
> 
> $pago = new Pago($guita, $usuario [, mes]); // $usuario por agregación
> 
> $usuario->addPago($pago);
> $banco->addPago($pago);
> // Ambos por agregación
> 
> esto esta bien asi?

	No, porque repetís sin sentido los Pagos...

> >        Tenés mal varias asociaciones... revisá cuando es rombo vacío y cuando
> > es lleno, y qué sentido tiene en este modelo.
> >        También revisá las cardinalidades: según tu gráfico un asociado puede
> > no tener un tipo de asociado, lo cual no tiene sentido...
> 
> El asociado tiene que tener un tipo, pero habiamos hablado de
> asociarlo para que si en algun momento un tipo de usuario modifica la
> restricción de líbros, todos los asociados que sean de ese tipo se
> modificarían.

	Es correcto.

>  O sería mas correcto hacer Asociado abstracto y que
> AsociadoRegular y AsociadoEspecial ambos que hereden de Asociado?

	Esto es un detalle de implementación. De hecho yo hubiera abstraido
tanto al Asociado como al Tipo!

> Porque si bien en ambos la diferencia es la cantidad de libros que
> pueden retirar, dice que el diseño tiene que contemplar nuevos tipos
> de asociados que pueden tener restricciones distintas.

	Efectivamente, una forma simple de agregar funcionalidad es agregar
nuevas subclases y que el que las usa, se refiera a la superclase.


	Seguimos!
-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-objetos