Subido por Samael Martinez

U4Tarea1

Anuncio
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.
Descargar