viernes, 4 de abril de 2014

Programación. UT 8. Clases Abstractas e Interfaces. Ejercicios.

Ejercicio 1

  • Crear la interfaz PuedeCantar (que es capaz de cantar), un interfaz muy simple que sólo posee un método cantar. 
  • Crear la clase Persona que implemente el interfaz PuedeCantar y que cuando cante lo haga con las notas musicales (muestre un string con las notas musicales). 
  • Crear la clase Canario y Gallo que implemente el interfaz PuedeCantar y que muestre como cantan (que muestre un string con los sonidos que hacen el canario y el gallo respectivamente)
  • Realice el programa que haga cantar a un canario y un tenor. 


Ejercicio 2: Implementar las clases e interfaces que se describen a continuación:

  • Algunos seres pueden caminar y puede nadar estas dos capacidades son interfaces (PuedeCaminar.java y PuedeNadar.java). 
  • Los mamiferos son animales que pueden moverse (Mamifero.java). El gato es un mamifero que puede nadar y moverse (Gato.java). 
  • Un Loro puede caminar pero no puede nadar. 
  • Agregue al ejercicio anterior la interface PuedeVolar.java 
  • Agregue la superclase Aves.java 
  • Herede la clase Avestruz.java (ave que solo camina) 
  • Herede la clase Loro.java (ave que camina y vuela) 
  • Herede la clase Murciélago.java (es un mamífero que vuela y camina) 
  • Cree la clase Felino.java (es un mamifero que camina y puede nadar). 
  • Modifique la clase Gato.java (es un Felino) 
  • Cree la clase Tigre.java
Ejercicio 3

Implementar una clase abstracta llamada Figura que contenga como atributo color y como métodos setColor, getColor, getArea y getPerimetro.
A continuación implementar las subclases de Figura Cuadrado, Rectangulo y Circulo.
Realizar un programa que muestre un menú con tres opciones (Cuadrado, Rectángulo y Círculo). 
  • Al seleccionar el cuadrado se le pedirá al usuario la longitud del lado y mostrará el área y el perímetro. 
  • Al seleccionar el rectángulo se le pedirá al usuario la base y la altura y mostrará el área y el perímetro. 
  • Al seleccionar el círculo se le pedirá al usuario la longitud del radio y mostrará el área y el perímetro.
Responder a las siguientes preguntas:
  • ¿Por qué se ha decidido declarar la clase Figura como abstracta en lugar de declarar una interfaz?
  • ¿Cuál es la diferencia entre clase abstracta e interfaz?
  • ¿Qué cambios harías para convertir la clase figura en interfaz?
Ejercicio 4: Inmobiliaria
Se quiere modelar una agencia inmobiliaria para lo cual se deben tener en cuenta las siguientes entidades e informaciones asociadas: 
  • Un inmueble viene dado por su ubicación y los metros cuadrados que ocupa. Hay dos tipos de inmuebles: superficies y construcciones. Los primeros tienen su precio por metro cuadrado. A su vez, hay dos tipos de superficies: solares y plazas de garaje. Los solares pueden estar en zona rústica o urbana. Las plazas de garaje pueden formar parte de un garaje público o de uno privado. Por su parte, las construcciones pueden ser nuevas o de segunda mano. Hay dos tipos de construcciones: viviendas y locales comerciales. Las viviendas tienen precio, número de habitaciones y piso. Los locales tienen precio por metro cuadrado. 
  •  La agencia que queremos modelar se dedica a la venta y alquiler de inmuebles. Ahora bien, solamente alquila plazas de garaje y locales comerciales, mientras que solo vende solares y viviendas.
  • La agencia inmobiliaria viene dada por sendas secuencias de alquileres y ventas.
Se pide:
  •  Definir la jerarquía de clases de forma que se cumplan los requisitos anteriores. 
  • Para cada una de las clases, definir su(s) constructora(s), métodos de acceso a cada uno de los atributos y un método muestra() que escriba, de la manera que consideres más conveniente, la información de la entidad de que se trate. 
  • Definir un método público precio() que calcula el precio que tiene una superficie.
  •  Definir un método añadeVentaInmueble(in) , que añade el inmueble dado por el parámetro a la secuencia de inmuebles en venta de la agencia, siempre que no estuviera ya antes en venta.
  • Definir un método añadeAlquilerInmueble(in) , que añade el inmueble dado por el parámetro a la secuencia de inmuebles en alquiler de la agencia, siempre que no estuviera ya antes en alquiler.
  • Definir métodos que respondan a los siguientes servicios: 
    • inmueblesVenta(p) , que muestra los inmuebles con un precio de venta inferior al parámetro. 
    • localesSegundaMano(m) , que muestra los locales comerciales de segunda mano con una superficie superior al parámetro. 
    • solaresRusticos() , que averigua cuántos solares no urbanos están en venta.
  • Define el método equals() y toString() para las clases AgenciaInmobiliaria, Inmueble, Superficie y Solar .
  •  Dos agencias inmobiliarias han decidido fusionarse. Define un método fusion(ag) dentro de la clase de las agencias inmobiliarias, que permita crear una agencia nueva a partir de la agencia que invoca el método y la del parámetro dado.

No hay comentarios:

Publicar un comentario