0% encontró este documento útil (0 votos)
9 vistas4 páginas

Herencia y Polimorfismo en Pokémon

El documento presenta un ejercicio sobre la herencia y el polimorfismo en la programación orientada a objetos, centrado en la modelización de diferentes categorías de Pokémons y vehículos. Describe las características y los métodos asociados a cada categoría de Pokémon, así como los requisitos para crear una jerarquía de clases para los vehículos, incluyendo especificaciones sobre la velocidad y el consumo. Se plantean preguntas prácticas para guiar la creación de diagramas de clases y de código en Java.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas4 páginas

Herencia y Polimorfismo en Pokémon

El documento presenta un ejercicio sobre la herencia y el polimorfismo en la programación orientada a objetos, centrado en la modelización de diferentes categorías de Pokémons y vehículos. Describe las características y los métodos asociados a cada categoría de Pokémon, así como los requisitos para crear una jerarquía de clases para los vehículos, incluyendo especificaciones sobre la velocidad y el consumo. Se plantean preguntas prácticas para guiar la creación de diagramas de clases y de código en Java.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TP3 - Herencia y Polimorfismo

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.

Ejercicio 2. Un nuevo combustible


En este ejercicio, respete al máximo los siguientes principios:
1. Tan pronto como se crea un objeto, debe ser correctamente inicializado: todas sus propiedades (atributos)
deben tener valores correctos.
2. Una jerarquía de herencia debe ser extensible: idealmente, deberíamos poder agregar una
clase (por ejemplo, aquí un nuevo tipo de vehículo) sin afectar a las clases existentes.
En particular, una clase no se supone que conozca a sus subclases.
3. La herencia permite refactorizar el código: intenta aquí hacerlo lo más posible (incluso si
puede parecerle pesado en un ejemplo tan pequeño).
4. Cuando un valor es común a todos los objetos de una clase (por ejemplo, aquí el valor de
"peso vacío" o de "carga máxima"), no tiene la intención de ser almacenada en cada
objet. Puede ser almacenada en un atributo estático y devuelta por un método
(estática o no según el uso que se le quiera dar).
Este ejercicio es un extracto de un control. Se han añadido puntos marcados como 'TP' para adaptarlo a
una programación completa de las clases.

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:

- describir un vehículo por una cadena de caracteres: esta cadena contendrá


la matrícula, el peso en vacío, y, en su caso, la carga máxima y la carga del vehículo.
- calcular la velocidad máxima de un vehículo.

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).

(entonces no uses una tabla).

(3.b)Escribir los siguientes métodos:


- un constructor que toma como parámetro un array de vehículos
- un método toString que devuelve una cadena de caracteres que describe el convoy, es decir
cada uno de los vehículos que componen el convoy.
un método que calcula la velocidad máxima de un convoy de vehículos.

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.

Supondremos que se da en una clase anexa llamadaUtilitarios, el método de encabezado


siguiente :public static float consumo(int v, int p), que devuelve la
consumo (en litros por 100 km) de un vehículo de peso p que va a una velocidad v.

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

También podría gustarte