Desarrolle el siguiente ejercicio aplicando herencia: 1.- Cree una clase Avión que almacene el nombre del vuelo que realiza y el destino (añadir métodos de acceso y modificación de dichos datos miembros) y permita mostrar por pantalla los datos asociados al mismo. Luego cree dos clases derivadas: AvionPasajeros y AvionHidrante, con los miembros necesarios para que el siguiente programa funcione correctamente: #include "AvionHidrante.h" #include "AvionPasajeros.h" #include <iostream> using namespace std; int main(void) { AvionPasajeros ap("AZ19B2", "Londres", 2400, 270.5); AvionHidrante ah("BT3533P8", "Bariloche", 500); ap.mostrarDatos(); ah.mostrarDatos(); ah.descargarAgua(300); ah.mostrarDatos(); ah.descargarAgua(); ah.mostrarDatos(); return 0; } De los aviones de pasajeros (además de los datos miembros del avión) debe almacenar información sobre la cantidad de kilos de equipaje que transporta y la duración prevista del vuelo (en minutos). De los aviones hidrantes interesa almacenar la cantidad de agua que transportan (en litros) y la cantidad de litros de agua actuales. La función descargarAgua() debe permitir disminuir la cantidad de agua que se le pase como argumento, sino se le pasa argumento deberá soltar todo el agua restante. 2.- Dado el archivo de cabecera de la clase abstracta Figura: class Figura { public: virtual double area(void)=0; //funcion virtual pura virtual double volumen(void)=0; //funcion virtual pura virtual void mostrar(void)=0; //muestra datos de las figuras //si this tiene mayor area que f retorna true bool mayorArea(Figura* f); bool mayorVolumen(Figura* f); }; defina las clases Rectangulo, Circulo y Triangulo derivadas de Figura. Implemente en las clases todas las funciones y datos miembros necesarios para ello. Arme una aplicación Test que tenga una función main que instancie objetos Rectangulo, Circulo y Triangulo (usando un contenedor de punteros de tipo Figura), y muestre un mensaje por pantalla indicando cuál es la de mayor tamaño, mostrando también sus características (ancho, alto, etc.). #include <iostream> #include "Triangulo.h" #include "Rectangulo.h" #include "Circulo.h" using namespace std; int main() { Figura* p1=new Triangulo(1,2); Figura* p2=new Rectangulo(2,1); Figura* p3=new Circulo(1); Figura* f; bool b = p3->mayorArea1(*p2); if (b) cout<<"El circulo es el mas grande"<<"\n"; if(p1->mayorArea(p2)) f = p1; else f = p2; if(p3->mayorArea(f)) f=p3; f->mostrar(); cout<<"Y tiene un area: "<<f->area()<<"\n"; return 0; } 3. Para el caso de los animales, existirá nombre y edad como atributos, además implemente las funciones setNombre, getNombre, setEdad y getEdad. Volador Animal +planea() : void +habla() : void +seDesplaza() : void Canario +habla() : void +seDesplaza() : void Perro +habla() : void +seDesplaza() : void 4.- Hasta ahora sabemos que una clase heredada puede fácilmente extender algunas funcionalidades, simplemente añadiendo nuevos atributos y métodos, o sobre escribiendo los ya existentes. Utilizando la herencia extiende la clase Vehiculo y realiza la siguiente implementación: Crea al menos un objeto de cada subclase y añádelos a una lista llamada vehiculos. Implementar el metodo virtual mostrar de manera que sea posible ver las caracteristicas de cada objeto derivado. Realiza una función llamada catalogar() que reciba la lista de vehiculos y los recorra mostrando el nombre de su clase y sus atributos. Implemente la función catalogar() para que reciba un argumento ruedas, haciendo que muestre únicamente los que su número de ruedas concuerde con el valor del argumento. También debe mostrar un mensaje "Se han encontrado { } vehículos con { } ruedas:" únicamente si se envía el argumento ruedas. Pruebelo con 0, 2 y 4 ruedas como valor.