2
Algoritmos y Programas – Año 2012 Práctica 5 1) Codifique en Python la jerarquía de clases descripta en el diagrama UML dado a continuación, en un modulo llamado modelo. Considere que la implementación del método 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 Araña imprime “La araña come insectos”. Nota: los métodos getPatas() y setPatas() son concretos o sea tiene implementación. 2) Cree una clase llamada TestAnimales en un módulo llamado test, con las siguientes características: a) Defina un método de clase llamado main(), en el cual crea una instancia de Araña, otra de Gato y una de Pez. b) Declara un método de clase llamado muestraQueCome(animal) que recibe como argumento un objeto de tipo Animal. Este método simplemente invoca al método comer() del objeto que recibe como argumento. c) Desde el método main() invoque al método muestraQueCome(animal) enviándole como argumento cada una de las instancias creadas en el punto a. d) Implemente el código necesario para que se ejecute el método main() de la clase TestAnimales. e) ¿Qué métodos comer() fueron invocados en cada caso? ¿Se aplicó el concepto de Polimorfismo? 3) Defina las siguientes clases con los siguientes atributos y métodos: Agregue los métodos getters y setters para cada uno de sus atributos. Agregue los métodos getters y setters para cada uno de sus atributos. Animal - patas : int + Animal(patas: int) + comer() + getPatas : int +setPatas(patas :int) Araña + Araña () + comer() : void Gato + Gato() + comer() :void Pez + Pez() + comer() :void Empleado - nombre: String - domicilio: String - legajo: String - cargo: String +getNombre(): String +setNombre(String n): void Jefe - nombre: String - domicilio: String - legajo: String - departamentoAcargo: String - cantidadEmpleados: int +getNombre(): String +setNombre(String n): void

Practica 5

Embed Size (px)

Citation preview

Page 1: Practica  5

Algoritmos y Programas – Año 2012

Práctica 51) Codifique en Python la jerarquía de clases descripta en el diagrama UML dado a continuación, en

un modulo llamado modelo. Considere que la implementación del método 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 Araña imprime “La araña come insectos”.Nota: los métodos getPatas() y setPatas() son concretos o sea tiene implementación.

2) Cree una clase llamada TestAnimales en un módulo llamado test, con las siguientes características:a) Defina un método de clase llamado main(), en el cual crea una instancia de Araña, otra de

Gato y una de Pez.b) Declara un método de clase llamado muestraQueCome(animal) que recibe como argumento

un objeto de tipo Animal. Este método simplemente invoca al método comer() del objeto que recibe como argumento.

c) Desde el método main() invoque al método muestraQueCome(animal) enviándole como argumento cada una de las instancias creadas en el punto a.

d) Implemente el código necesario para que se ejecute el método main() de la clase TestAnimales.

e) ¿Qué métodos comer() fueron invocados en cada caso? ¿Se aplicó el concepto de Polimorfismo?

3) Defina las siguientes clases con los siguientes atributos y métodos:

Agregue los métodos getters y setters para cada uno de sus atributos.

Agregue los métodos getters y setters para cada uno de sus atributos.

Animal

- patas : int

+ Animal(patas: int)+ comer() + getPatas : int+setPatas(patas :int)

Araña

+ Araña ()+ comer() : void

Gato

+ Gato()+ comer() :void

Pez

+ Pez()+ comer() :void

Empleado

- nombre: String

- domicilio: String

- legajo: String

- cargo: String

+getNombre(): String

+setNombre(String n): void

Jefe

- nombre: String

- domicilio: String

- legajo: String

- departamentoAcargo: String

- cantidadEmpleados: int

+getNombre(): String

+setNombre(String n): void

Page 2: Practica  5

Algoritmos y Programas – Año 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 práctica anterior. Implemente en todas las clases el método __str__() de modo que retorne un texto con la información correspondiente al objeto. Nota: Tenga en cuenta aspectos de reutilización de código 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 leídos anteriormente y luego imprima todas las ellas usando la sentencia print.

6) Declare la clase Mascota en un módulo llamado domestico, dada la siguiente definición:

a) Modifique las clases Gato y Pez para que sean subclases de Mascota. b) El método jugar() imprimirá en pantalla el tipo de animal está invocando al método (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 método de clase llamado miMascota(Mascota) que recibe como parámetro un

objeto de tipo Mascota. La implementación de este método consiste en invocar al método getNombre() y jugar() del objeto que recibe como parámetro. Imprima en pantalla el nombre de la mascota.

b) El método 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 método miMascota() pasándole como parámetro cada uno de los elementos del arreglo.

c) El método jugar() es polimórfico ¿porqué?

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

9) Modifique la aplicación que grafica figuras geométricas codificada en el ejercicio 10 de la práctica anterior, de tal manera que el dibujo de las mismas sea polimórfico.

10) Responda las siguientes preguntas acerca de la sobrecarga de operadores:a) ¿Qué es la sobrecarga de operadores?b) ¿En Python cuáles son los métodos que hay que implementar para proveer sobrecarga de

operadores?c) ¿Es posible implementar una solución para la aritmética imaginaria con sobrecarga de

operadores en Python? En caso afirmativo impleméntela.

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