Hola, abro el tema debido a que me encuentro frente a el tema indicado en el titulo con dudas.
Respecto a mis apuntes sobre los temas los he entiendo, sus caracterisitcas y como funcionan pero al ponerlos en practica se me empiezan a plantear dudas, en este caso las voy a mostrar con ej que estoy haciendo.
Ej->Definir la jerarquía que considere adecuada con las siguientes clases: Figura,
Rectángulo y Triángulo Rectángulo. Implementar funciones para obtener el
perímetro y el área de cada una de ellas.
He realizado la siguiente solución :
class figura {
int b,h;
public:
figura(){b=h=0};
int obtiene_h(){return h};
int obtiene_b(){return b};
}
class rectan public:figura {
public:
virtual int perim(){return 2*obtiene_h()+2*obtiene_b()};
virtual int area(){return obtiene_h()*obtiene_b()};
}
class trectan public:rectan {
public:
int perim(){return .....}
int area(){return rectan::area()/2}
}
-------------
main(){
figura *pf[2];
rectan r1;
trectan tr1;
pf[0]=&r1;
pf[1]=&tr1;
cout<<"Area de rectangulo"<<pf[0]->area();
cout<<"Perim de rectangulo"<<pf[0]->perim();
cout<<"Area de T.rectangulo"<<pf[1]->area();
cout<<"Perim de T.rectangulo"<<pf[1]->perim();
.....}
La jerarquía como se ve es: la clase FIGURA (como base) contiene atributos comunes para las subclases, y después la clase RECTÁNGULO derivada de figura y por último la clase TRECTAN derivada de la clase rectángulo debido a la relación que existe entre ellas.
Por un lado tengo la duda de como se ve en la CLASE TRECTAN en la función que calcula el perímetro, no sé como acceder a los atributos de la CLASE FIGURA (¿Podría usar obtiene_h & obtiene_b?, en el caso de la función Área me sirve la función que esta en CLASE RECTÁNGULO (¿Así es?
Finalmente quería saber si ustedes observan algún otro error en la solución.
Un saludo