[Php-objetos] Hola a todos!!!
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Feb 13 00:33:26 ART 2009
Hola Juan,
El jue, 12-02-2009 a las 23:40 -0200, Juan Marcos escribió:
> Buenas buenas, soy Juan Marcos y felizmente compartiré con uds el aula
> éste sábado. Estuve trabajando en los prácticos y mis consultas son
> las siguientes:
>
>
> Sobre el práctico 1:
> a) ¿Hay que implementar los "getters" y "setters" para manipular los
> atributos de las clases o se declaran públicos? Tengo entendido que
> los atributos de los objetos deberían ser privados y modificados
> mediante el objeto mismo, pero es el primer práctico, por eso
> consulto.
Sí. Los setter y getters son el mecanismo para implementar el
encapsulamiento y el doble encapsulamiento, así que son importantes.
La salvedad es que si uno está tirando unas pruebas o un prototipo,
puede en principio no implementarlos para no gastar ese tiempo en
escribir setters y getters y probar rápido una idea.
Por otra parte, tal y como comentamos en clase, es una pavada armar un
script que pida nombre de clase, los atributos y los métodos y genere el
esqueleto de una clase. Además es una herramienta simpática de
escribir ;-)
> b) De implementar las funciones para manipular los atributos, en el
> caso del combustible al ser éste un objeto con dos atributos, ¿El set
> y el put insertan y devuelven un objeto de este tipo? (que a su vez
> tiene definido set y put de tipo y precio) ¿o diréctamente se usaria
> algo asi como $miauto->setTipoCombustible($tipo) y
> $miauto->getTipoCombustible()? (idem con el precio).
Da lo mismo mientras no se acceda directamente al atributo.
Una forma u otra tiene ventajas y desventajas según el caso. En este
ejercicio da lo mismo.
> Sobre el práctico 2:
> Lo hice declarando una clase Almacén que usa la interface
> IteratorAggregate, sin embargo los artículos (clases de tipo Articulo
> con los atributos necesarios) los guardo en un Array de objetos que
> para sacar el total del peso y precio declaro funciones en esa clase
> Almacén que implementan un foreach que recorre cada elemento del
> arreglo haciendo una sumatoria de lo que me interesa. El resultado lo
> obtengo pero.. no supe/necesité utilizar ninguna particularidad de la
> interfaz IteratorAggregate, es decir que si no hubiese usado esa
> interfaz mi programa hubiese quedado identico (salvo la definicion
> innecesaria del getIterator() que es obligatoria al utilizar la
> interface). O sea que pasando en limpio: ¿que quiero decir con todo
> esto? que seguramente esté mal o no comprendí como aprovechar el
> IteratorAggregate para resolverlo mas facilmente, ¿como es la idea?,
> si querés Leo pongo el código asi es mas "gráfico".
La idea es usar los mecanismos de recorrida del IteratorAgregate para
desentenderse de la estructura interna de almacenamiento de la
colección.
Tu código seguro que funcionará, pero depende en su escritura de que
usaste un Array, y vale la pena siempre abstraerse de las
implementaciones.
> Bueno, espero no haber aburrido a nadie, gracias por haber leido hasta
> aca abajo jeje. Saludos!
Para nada!
Ahora en clase, más te vale que primero pienses si conocés la respuesta
a la pregunta que vas a hacer y después recién la hagas! Jajajaja!
--
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