[Php-objetos] Jorge Re: Noticias del resto

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Jue Feb 19 14:59:44 ARST 2009


Hola Jorge,

El jue, 19-02-2009 a las 17:39 -0300, Jorge Castorina escribió:
> Ups! 
> Es cierto, despues se amontonan las cosas y es peor.

	Siempre las cosas amontonadas son mś difíciles.
	Además metiendo mano a los prácticos tendremos mejores clases porque
habrá más ida y vuelta.

> En mi caso me cuesta bastante agarrarle el tranco. Aunque antes habia
> echo algunos intentos (con tutoriales sacados de internet y ejemplos)
> se ve que una cosa es "escribir" y otra "pensar" esto de los objetos.

	Totalmente!
	Por eso insisto con la imagen de la Tierra, la Tierra de todos los
días, pero vista desde un lugar totalmente nuevo, lo que implica un
montón de cosas inconcebibles antes.
	En el curso la idea es apuntar a resolver los problemas de la forma
correcta, no solo a que den el resultado correcto.
	Cualquiera escribe código que entiendan las computadoras. lo que
cualquiera no escribe es código en entiendan las personas.

> Como me atrasé bastante y tuve la oportunidad de ver el sabado en
> clase y a través de los mensajes de la lista bastante de lo que han
> hecho algunos compañeros de curso envio las tres versiones de lo que
> pude armar para que se vea, espero, que algo lo trabaje.

	Me alegra saberlo!

> En el primer intento habia creado un clase abstracta minima y repetia
> metodos y atributos en cada subclase.
> Para la segunda vuelta trate de arreglar ese tema (con parent para
> usar parte de los metodos de la superclase).
> Para la tercera arregle el hecho de que habian quedado todos los
> atributos como public.

	Se ve una mejora conceptual en el código.

 
> Preguntas
>  
> 1. se ve que nunca cambie la clase Combustible, aunque no veo que
> nadie haya hecho algo asi. ¿Es incorrecto?

	Sí, la clase combustible es "rara". El enunciado indica que tiene dos
atributos, pero modelaste solo uno, el que se usa en el cálculo. No le
encuentro el sentido al vector adentro del constructor: definís un
vector de 2 elementos para luego usar uno, y acto seguido tirar el
vector.

> 2. cuando cambie los atributos de public a private, por ejemplo en
> plazas (del auto), adverti que ya no funcionaba
>         $miauto->plazas y daba error.  
> Ok, hay que hacer un "getPlazas" para tener ese valor disponible. 
> La pregunta es:
> en la clase auto le paso ese valor asi: 
>         $this->plazas = $plazas;
> y luego escribo la function getPlazas. En cambio en Pickup y Camion
> hago:
>         $this->setkgCarga($kgCarga);
> y luego escribo las funciones setkgCarga y getkgCarga. 
> ¿Una es mas correcta que la otra? Como parece funcionar igual si hay
> alguna diferencia se me escapa.

	vamos por partes, porque son varios tenas.
	Por una parte al pasar de public a private, los atributos dejan de
estar disponibles para las subclases. Si los necesitás disponibles van
protected. Repasá el tema de estos identificadores de visibilidad.

	Por otra parte, excepto en el setter y getter del atributo que será
algo como $this->atributo = valor, todo lo demás debería hacer uso de
los setter y getters.
	Esto de usar los setter y getter adentro de la implementación del
Objeto mismo se llama Doble Encapsulamento. La idea es que ni siquiera
el propio Objeto use directamente los atributos, sino que lo haga a
través de su propia interfaz.

	Después: Combustible es un atributo común pero no está en la superclase
ni en las sublcases. Es un poco mágico como lo hiciste funcionar sin que
las instancias tengan un combustible.
	Fijate que el Vehículo tiene "tipo" que lo tenés disociado del
"precio". Supongo que este error está relacionado con el de la
implementación del Combustible que menciono más arriba.

	Revisalo, incorporá estas cosas y reenviámelo!

> Saludos, Jorge

	=mente!
-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
http://www.prometeustech.com.ar / http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
                



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