Supongamos que tenemos la clase Vehiculo de las cuales heredan las clases Auto, Moto, Camion. Yo lo que voy a recibir es un string con el tipo de vehiculo, es decir 'auto' o 'moto' o 'camion'.
Y por otro lado tengo una clase llamada Garage, a la cual se le puede settear UNA INSTANCIA de Vehiculo (quiero usar polimorfismo). Si yo estoy recibiendo un string ¿exite alguna forma de poder instanciar las clases Auto, Moto o Camion apatir de este string?
PD: Al principio se me habia ocurrido usar IFs. Pero en clase me dijeron que estaba mal. Es decir habia puesto:
No entiendo, vos quereés hacer que Garage tome un Vehiculo en ese metodo.. Auto, Moto y Camion heredan de Vehiculo. Después donde entra el string?
Creo que la idea es que Garaje devuelva un Vehículo, pero que uno le pueda pedir qué tipo de vehículo sea.
Creo que es lo que dice Nacho. Osea básicamente usar el patrón "Factory". Después si Auto, Moto y Camión son lo mismo lo único que haces es asignar en el objeto Vehículo el tipo (que a fines prácticos no te interesa y es asignar el string al correspondiente atributo). Si tenes que hacer que tengan comportamientos distintos, usas algo parecido a lo que dijo Dargor
Dargor escribió:
Usá un diccionario. Que de claves tenga 'auto', 'moto' y 'camion', y que guarden de valor objetos Auto, Moto y Camión respectivamente.
Pero en el diccionario guardas el comportamiento que diferencia a Auto Moto y Camión. Ahí estas usando el patrón "Strategy". Supongo que es eso, por lo que decís y la altura del cuatrimestre eso estarán dando. Espero que te sirva.
En smalltalk ya están implementados, busca la clase Dictionary
Igual creo que lo que necesitas es mas lo que dice Hige, en smalltalk podes almacenar objetos en un diccionario pero no funciones, o sea podrías almacenar un objeto auto que hayas creado, pero no la función Auto new.
Perfecto!! Ya lo estoy usando. Ademas un ayudante de catedra tambien me recomendo usar diccionarios. Y como bien dijo Dargor, en smalltalk ya tenes definida la clase Dictionary. Yo pense que tenia que implentarlo y toda la bola .
Buscando en internet, encontre un mini apunte de diccionarios en smalltalk. Lo paso para futuras personas que vean el "topic" y se les presente la misma duda:
Ver tema siguiente Ver tema anterior Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker 365 Attacks blocked.