Uso avanzado de las clases

De Wiket
Salta a la navegació Salta a la cerca

En este apartado nos centraremos en la herencia de clases y el polimorfismo. Aquí tenéis un material teórico para profundizar y aclarar dudas

  1. Herencia y polimorfismo
  2. Principios SOLID y como diseñar clases correctamente
  3. Clases abstractas e interfaces

Ejercicios

  1. Vamos a crear un conjunto de clases que nos permitan gestionar viviendas, para ello crearemos una clase vivienda con los siguientes atributos: estado(disponible, alquilada, vendida), precio, dirección, nombre del propietario. Ahora crearemos dos clases más (casa y piso) que representaran distintos tipos de viviendas. ¿Qué atributos tendrán estas clases? ¿Tiene sentido que alguna de las clases sea un clase abstracta o una interfaz?
  2. Usando el modelo de clases del ejercicio anterior vamos a añadir un método que nos permita comprar una vivienda. ¿Qué firma debe de tener este método?¿Qué acciones ha de tener el método?¿En qué clase/s situamos a este método?
  3. Siguiendo con nuestro ejemplo anterior añade un método para alquilar una vivienda. ¿Crees que sería interesante crear un método más genérico, por ejemplo, gestionarVivienda? ¿Donde situaríamos ese método?¿Que firma tendría para permitir realizar las acciones de comprar y alquilar una vivienda?
  4. Ahora vamos a crear 4 viviendas 3 pisos y 1 casa. Los pisos serán los 3 de alquiler con precios entre los 500 y los 1000€, la casa será de compra y su valor será de 250.000€. Al crear las viviendas su estado SIEMPRE ha de ser disponible. Ahora vamos a alquilar el "piso1", si todo ha ido bien deberíamos ver un mensaje indicando que el alquiler se ha efectuado correctamente indicando que piso es, datos del inquilino, etc. Ahora intentamos comprar el "piso2" dado que es una vivienda que solo permite alquiler deberíamos de ver un mensaje de error indicando que ha pasado. Por último intentamos volver a alquilar el "piso1", dado que ese piso ya está alquilado deberíamos de ver un mensaje de error indicando que ese piso ya está alquilado.
  5. Por último vamos a crear un array y añadiremos todas las viviendas dentro del array y recorremos el array para imprimir la información sobre las viviendas. ¿Como puedo tener un array que contenga tanto pisos como casas si son clases diferentes? ¿Explica como funcionaría en este caso el polimorfismo y porqué es útil?