Herencia y Polimorfismo en Pokémon
Herencia y Polimorfismo en Pokémon
Ejercicio 1. Pokemons
Los Pokémon son animales amables que son apasionados por la programación orientada a objetos en general.
y por el polimorfismo en particular.
Existen cuatro grandes categorías de pokémons:
Los pokémons deportivos: Estos pokémons se caracterizan por un nombre, un peso (en kg), un
nombre de patas, una altura (en metros) y una frecuencia cardíaca medida en número de
pulsaciones por minuto. Estos pokémons se mueven por la tierra a una cierta velocidad que se
se puede calcular gracias a la siguiente fórmula: velocidad = número de patas * tamaño * 3
Los pokémons caseros: Estos pokémons se caracterizan por un nombre, un peso (en kg), un
nombre de patas, una talla (en metros) y el número de horas por día que miran la
televisión. Estos pokémons también se mueven por la tierra a una cierta velocidad que se
se puede calcular gracias a la fórmula siguiente: velocidad = número de patas * tamaño * 3
Los pokémons del mar: Estos pokémons se caracterizan por un nombre, un peso (en kg) y un
nombre de aletas. Estos pokémons solo se mueven en el mar a una velocidad que se
se puede calcular gracias a la siguiente fórmula: velocidad = peso / 25 * número de aletas
-Los pokémons de crucero: Estos pokémons se caracterizan por un nombre, un peso (en kg) y
un nombre de aletas. Estos pokémons solo se desplazan en el mar a una velocidad que se
se puede calcular gracias a la siguiente fórmula: velocidad = (peso / 25 * número de aletas) / 2
Para cada una de estas cuatro categorías de pokémons, se desea disponer de un método toString
que devuelve (en una cadena de caracteres) las características del pokémon.
Por ejemplo, el método toString aplicado a un pokémon deportivo devolvería:
Soy el Pokémon Pikachu, mi peso es de 18 kg, mi velocidad es de 5,1 km/h, tengo 2 patas, mi tamaño
est de 0,85 m mi frecuencia cardíaca es de 120 pulsaciones por minuto
Este mismo método aplicado a un pokémon casero podría resultar en:
Soy el Pokémon Salamèche, mi peso es de 12 kg, mi velocidad es de 3,9 km/h, tengo 2 patas, mi
tamaño es de 0,65 m veo la tele 8 horas al día
Sobre un pokémon de los mares:
Soy el pokémon Rondoudou, mi peso es de 45 kg, mi velocidad es de 3,6 km/h y tengo 2 aletas.
Y finalmente sobre un Pokémon de crucero:
Soy el pokémon Bulbasaur, mi peso es de 15 kg, mi velocidad es de 0,9 km/h, tengo 3 aletas.
Pregunta [Link] un diagrama de clases que permita gestionar la jerarquía de los Pokémons.
Pregunta [Link] estas clases en Java. Los atributos son privados. Para evitar tener que
crear tantos archivos como clases, solo puede declarar una clase "pública", la que
contiene el método main de la aplicación.
Ahora queremos definir una clase CollectionPokemons que tenga como atributo privado una
instancia de [Link] que puede contener pokémons de categorías cualquiera.
más de un constructor, esta clase debe comprender los siguientes métodos:
un método que inserta un pokémon en la colección
una método que calcula la velocidad media de los pokemons de la colección.
Atención: asegúrese de estar en la versión al menos 1.5 para utilizar la generisidad al realizar la declaración
del ArrayList.
TP 3 page 1
Pregunta [Link] la clase ColecciónPokemons.
Pregunta [Link] a la clase CollectionPokemons el método velocidadMediaDeportivos() que
retorna la velocidad media de los Pokémon deportistas de la colección.
Una empresa de Patagonia desarrolla un motor a aceite de rúgbaga, y dota varios vehículos
de este motor. Antes de realizar pruebas a gran escala, la empresa diseña un programa de
simulación del comportamiento de los vehículos. Este programa está escrito en Java. Aquí no nos interesa
que una muy pequeña parte de este programa. El problema que queremos resolver en primer lugar
el tiempo es el de la representación de los vehículos y del cálculo de la velocidad máxima que puede
ser atropellado por un vehículo.
Todo vehículo tiene una matrícula (propia de cada vehículo) y un peso en vacío (propio
a cada tipo de vehículo). Algunos vehículos pueden transportar una carga: se llama
Entonces carga el peso de esta carga. La carga de un vehículo no debe exceder un cierto
El peso, que se llamará carga máxima, depende del tipo de vehículo.
Los diferentes tipos de vehículos equipados con el famoso motor son los siguientes: los pequeños autobuses, los
camiones cisterna, y los camiones cubiertos.
• Un petit bus a un poids à vide de 4 tonnes et peut atteindre une vitesse maximale de 150.
km/h. No tiene carga (el peso de los pasajeros se considera como
negligible en comparación con el peso en vacío.
• Un camión citerne tiene un peso vacío de 3 toneladas y una carga máxima de 10 toneladas.
la velocidad máxima depende de su carga:
130 km/h si la carga es nula
110 km/h si la carga es inferior o igual a 1 tonelada
90 km/h si la carga es superior a 1 tonelada e inferior o igual a 4 toneladas
80 km/h para una carga superior a 4 toneladas.
• Un camión tiene un peso vacío de 4 toneladas y una carga máxima de 20 toneladas. Su
La velocidad máxima también depende de su carga (pero a carga igual, un camión cisterna tiene
una velocidad máxima más baja, ya que el líquido que transporta es más inestable que un
carga sólida):
130 km/h si la carga es nula
TP 3 page 2
110 km/h si la carga es inferior o igual a 3 toneladas
90 km/h si la carga es superior a 3 toneladas y inferior o igual a 7 toneladas
80 km/h más allá.
Pregunta 1.
Dibujar una jerarquía de clases, cuya clase raíz se llame Vehículo, que permita:
Usted indicará el nombre de los atributos y los métodos de cada clase, y mencionará, si hay
lugar, qué clases y métodos son abstractos. No es necesario preocuparse por los
constructores en esta etapa del diseño.
Pregunta 2.
Escribir las clases que participan en la definición de un camión cubierto (es decir, la clase Vehículo, y
la clase que permite representar un camión cubierto, así como las posibles clases
intermediarios si estas dos clases no están en relación de herencia directa).
TP: programar todas las clases que participan en la definición de todos los tipos de vehículos.
Agregar un método main() que cree dos camiones cubiertos y muestre su descripción así como
su velocidad máxima.
Pregunta 3.
Ahora nos enfocamos en la definición de una clase Convoi, que permite gestionar un convoy de
vehículos. Esta clase debe saber calcular la velocidad máxima de un convoy, sabiendo que esta
la velocidad corresponde a la más baja de las velocidades máximas de los vehículos del convoy.
(3.a)Definir uno o varios atributos de la clase Convoy que permitan representar los vehículos de un
convoy. Se supondrá que a lo largo de la vida de un objeto instancia de la clase Convoy, no se modifica
pas la composición del convoy de vehículos (en particular, el número de vehículos es estable).
TP: Programar la clase Convoi. Agregarle un método main que cree dos convoyes y los muestre.
las características de cada uno de estos convoys, así como su velocidad máxima. Verifique que sus
¡Los cálculos son correctos!
TP 3 page 3
Pregunta 4.
Los ingenieros de la empresa proporcionan una fórmula para calcular el consumo de
carburante de un vehículo en función de su velocidad y de su peso total (peso vacío + carga)
eventual). Esta fórmula es la misma para todos los tipos de vehículos.
Integrar en la jerarquía de clases uno o más métodos que permitan calcular el consumo
de un vehículo que va a una cierta velocidad (que no necesariamente es su velocidad máxima). Y agregar
en la clase Convoi un método que permite calcular el consumo total de un convoy yendo
a su velocidad máxima (es decir, lo recordamos, a la más pequeña de las velocidades máximas de
vehículos del convoy.
TP: Agregar la clase Utilitarios con su método consumo. En lo que respecta a la fórmula de
cálculo, no importa si no es plausible (por ejemplo, consumo = velocidad-en-km/h
/10 + peso-en-toneladas); es más importante que pueda verificar que el cálculo de la
La consommation d'un convoi est correcte.
Modificar la jerarquía de clases para integrar el cálculo del consumo de los vehículos y de
convoys. Añadir al método main de la clase Convoi la visualización del consumo de cada uno
de los dos convoyes a su velocidad máxima.
TP 3 page 4