Segundo Parcial - Programación 2 POO Soluciones

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 2

Segundo Parcial - Programación 2

22 de Abril del 2019

Nombre: Mauricio Balderrama Ali

-= no estamos interesados en tener una solución que solo funcione, sino que
apliquen el conocimiento adquirido en clase =-

1.- (1 punto) Puede una clase abstract tener un construcrtor publico no abstracto?
Si la respuesta es afirmativa, porque sera util tener dicho constructor?

R.- Si, bueno como en el ejemplo de las unidades teníamos Millas y Metros, su padre
de los dos es Units en el cual va haber métodos abstractos pero tenemos un objeto
Value que necesitamos asi el constructor no abstracto para ser de su uso con los
hijas.

2.- (1 punto) Describa dos consideraciones o restriscciones que se tiene al definir


un método abstracto?

* Al tener un método abstracto los hijas de la clase también tienen que tener los
métodos

* No se pude crear objetos con el método abstracto

3.- (4 puntos) Las invariantes de objetos, son condiciones que deben ser ciertas a
lo largo de toda la existencia de un objeto. En este ejercicio, haremos un modelo de
formularios (Form) que permitan tener dos tipos de campos (Field), de los cuales se
puedan controlar sus invariantes.

● EmailField, que tiene el nombre del campo, el email que el usuario lleno en el
formulario y el dominio al que pertenece el email. Como puede ver aqui la
invariante es que el email que ingreso el usuario coincida con el dominio.
● NumberField, que tiene el nombre del campo, el numero (valor) que ingreso
el usuario al llenar el formulario y el valor minimo que tiene debe tener el
valor ingresado, como puede ver aqui la invariante es que el valor que el
usuario ingreso debe ser mayor o igual al valor minimo.

La invariante de un formulario, es que todos sus campos (fields) esten bien


llenados, es decir, que cumplan sus invariantes. Como ejemplo, considere los tests
que se encuentran en moodle.

4.- (4 puntos) Double Dispatch es un patrón de diseño para resolver situaciones en


las que el comportamiento resultante no depende solamente del objeto que recibe
el mensaje sino también de parámetro enviado en ese mensaje. Veamos un caso
concreto para entender mejor esta situación.

Supongamos que debemos modelar un juego de naves espaciales tipo Galaga


donde tenemos distintos tipos de objetos espaciales como ser Naves, Estaciones y
Asteroides. Estos objetos pueden colisionar entre si y el resultado de dicha colisión
depende particularmente de quienes son los objetos involucrados y del estado de
los mismos.

● Si un Asteroid colisiona con un SpaceShip, la nave se destruye (velocidad=0,


vida=0) y el Asteroid reduce su velocidad en 10.
● Si un Asteroid colisiona con un Station, la estación se destruye (velocidad=0,
vida=0) y el Asteroid reduce su velocidad en 15.
● Si dos Asteroides colisionan los dos se destruyen (velocidad=0, vida=0).
● Si dos SpaceShip colicionan, ambas naves se destruyen.
● Si un SpaceShip coliciona con un Station, la vida del SpaceShip reduce en 4.
● Si dos Stations collicionan, no pasa nada pq las estaciones no tiene
velocidad.

Se pide crear un metodo collideWith, vea los test de ejemplo en moodle.

También podría gustarte