Buenas, quiero 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.
 
Y tendría que:
- 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.
 
Realizar un programa principal que cree una agencia inmobiliaria y que cree objetos para cada una de estas clases y que muestre la información de cada uno de los objetos creados.



