Está en la página 1de 2

Algoritmos y Programas Ao 2012

Prctica 5
1) Codifique en Python la jerarqua de clases descripta en el diagrama UML dado a continuacin, en un modulo llamado modelo. Considere que la implementacin del mtodo comer() en las distintas subclases de Animal consiste en imprimir en pantalla el tipo de alimento que ingiere el animal. Por ejemplo, en la clase Araa imprime La araa come insectos. Nota: los mtodos getPatas() y setPatas() son concretos o sea tiene implementacin.
Animal - patas : int + Animal(patas: int) + comer() + getPatas : int +setPatas(patas :int)

Pez

Araa

Gato

+ Pez() + comer() :void

+ Araa () + comer() : void

+ Gato() + comer() :void

2) Cree una clase llamada TestAnimales en un mdulo llamado test, con las siguientes caractersticas: a) Defina un mtodo de clase llamado main(), en el cual crea una instancia de Araa, otra de Gato y una de Pez. b) Declara un mtodo de clase llamado muestraQueCome(animal) que recibe como argumento un objeto de tipo Animal. Este mtodo simplemente invoca al mtodo comer() del objeto que recibe como argumento. c) Desde el mtodo main() invoque al mtodo muestraQueCome(animal) envindole como argumento cada una de las instancias creadas en el punto a. d) Implemente el cdigo necesario para que se ejecute el mtodo main() de la clase TestAnimales. e) Qu mtodos comer() fueron invocados en cada caso? Se aplic el concepto de Polimorfismo? 3) Defina las siguientes clases con los siguientes atributos y mtodos:
Empleado - nombre: String - domicilio: String - legajo: String - cargo: String +getNombre(): String +setNombre(String n): void +getNombre(): String +setNombre(String n): void - nombre: String - domicilio: String - legajo: String - departamentoAcargo: String - cantidadEmpleados: int Jefe

Agregue los mtodos getters y setters para cada uno de sus atributos.

Agregue los mtodos getters y setters para cada uno de sus atributos.

Algoritmos y Programas Ao 2012 4) Redefina las clases Empleado y Jefe de modo que Jefe sea una subclase de Empleado y esta
ltima sea subclase de Persona, codificada en la prctica anterior. Implemente en todas las clases el mtodo __str__() de modo que retorne un texto con la informacin correspondiente al objeto. Nota: Tenga en cuenta aspectos de reutilizacin de cdigo utilizando la sobre-escritura.

5) Implemente un programa que lea del teclado el datos de 5 empleados y 5 jefes, cree las instancias
necesarias de cada clase, las complete con los datos ledos anteriormente y luego imprima todas las ellas usando la sentencia print.

6) Declare la clase Mascota en un mdulo llamado domestico, dada la siguiente definicin:


Mascota - propietario: Persona + getNombre(): String + setNombre(nom : String): void + jugar(): void Persona - nombre: String - domicilio: String - ocupacion: String - edad: int + getApellido(): String + setApellido(ape : String): void + getNombre(): String + setNombre(nom : String): void + getOcupacion(): String + setOcupacion(ocu : String): void + getEdad(): int + setEdad(edad : int): void

a) Modifique las clases Gato y Pez para que sean subclases de Mascota. b) El mtodo jugar() imprimir en pantalla el tipo de animal est invocando al mtodo (por ejemplo: Gato.jugar() o Pez.jugar()). 7) Codifique la clase TestAnimalesDomesticos para probar las implementaciones de Mascota, de acuerdo a las siguientes indicaciones: a) Codifique un mtodo de clase llamado miMascota(Mascota) que recibe como parmetro un objeto de tipo Mascota. La implementacin de este mtodo consiste en invocar al mtodo getNombre() y jugar() del objeto que recibe como parmetro. Imprima en pantalla el nombre de la mascota. b) El mtodo main() crea un arreglo de tipo Mascota que contiene 2 instancias de Pez, y 2 de Gato. Luego, recorre iterativamente el arreglo e invoca al mtodo miMascota() pasndole como parmetro cada uno de los elementos del arreglo. c) El mtodo jugar() es polimrfico porqu?

8) Defina una superclase de nombre FiguraGeometrica para Linea, Circulo y Rectangulo del
ejercicio 9 de la prctica anterior. Dicha clase contendr los aspectos comunes a las tres figuras geomtricas y aspectos propios de dicha clase.

9) Modifique la aplicacin que grafica figuras geomtricas codificada en el ejercicio 10 de la prctica


anterior, de tal manera que el dibujo de las mismas sea polimrfico.

10) Responda las siguientes preguntas acerca de la sobrecarga de operadores:


a) Qu es la sobrecarga de operadores? b) En Python cules son los mtodos que hay que implementar para proveer sobrecarga de operadores? c) Es posible implementar una solucin para la aritmtica imaginaria con sobrecarga de operadores en Python? En caso afirmativo implemntela.

También podría gustarte