Por lo general no acostumbro a hacer esto de pedir las respuestas a mi actividades academicas por YR, pero esta vez estoy muy desorientado en el tema y tengo q entregar una actividad para mañana.
El caso es este: nos pidieron un ejemplo de la vida cotidiana para representarlo como una herencia en C++. Mi ejemplo es este (si no me equivoco es herencia simple): Una clase base llamada "Musica", y tres clases derivadas llamadas "Ranchera", "Ska" y "Merengue". Las cuales heredan ciertos datos (en este caso, instrumentos) de la clase base. Asi...
* Las tres heredan 'Trompeta'
* "Ranchera" y "Ska" heredan 'Guitarra'
* "Ska" y "Merengue" heredan 'Organo'
* "Ranchera" hereda violin
* "Merengue" hereda conga
* y "Ska" hereda Bateria
Me piden el encapsulamiento de las clases solamente, no tengo q desarrollar todo el codigo. Como hago dicho encapsulamiento en C++? Ayuda por favor.
Copyright © 2024 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
El encapsulamiento es el que los miembros de un objeto solo puedan ser manejados por operaciones o funciones definidas en la clase y no directamente.
En su caso:
class Ranchera : public Musica
{
private:
char creador[25];
int anioCreacion;
int valoracion;
public:
int getAnioCreacion();
int getValoracion();
char *getCreador();
void setAnioCreacion(int anio);
void setValoracion(int valor);
void setCreador(char *nombre);
};
Como ves, las propiedades de la clase son:
- Creador.
- Año de creación.
- Valoración propia.
Y a dichos valores solo se los puede modificar u obtener con las funciones setxxx() o getxxx() respectivamente.
Si nos dirigimos a la clase base (Musica) quedaría:
enum Instrumentos {Trompeta, Guitarra, Organo, Violin, Conga, Bateria};
class Musica
{
private:
Instrumentos instrumento;
protected:
void setInstrumento (Instrumentos ins);
Instrumentos getInstrumento();
};
El protected es para que solo los herederos de esa clase puedan usar dichas funciones (suponiendo que Musica es una clase abstracta).