HERENCIA Y CLASES DERIVADAS
Fundamento teórico de Herencia:
Herencia: es un concepto fundamental en la programación orientada a objetos (POO). Se basa en
la idea de que una nueva clase puede heredar atributos y comportamientos de una clase
existente, lo que permite la reutilización de código y la creación de una estructura jerárquica en la
programación.
Clase Base: Una clase base(también llamada clase padreo superclase) es la clase original de la cual
otras clases pueden heredar propiedades y métodos. Contiene las características comunes que se
compartirán con las clases derivadas.
Clase Derivada: Una clase derivada(también llamada **clase hija** o **subclase**) es una clase
que hereda atributos y métodos de una clase base. Además de heredar, una clase derivada puede
agregar sus propios atributos y métodos o modificar los que ha heredado.
Jerarquía de Herencia:La jerarquía de herencia es una estructura organizada de clases donde las
clases derivadas se relacionan con una o más clases base. Esto crea una jerarquía o árbol de
herencia, donde las clases derivadas pueden tener sus propias clases derivadas, creando así
niveles de herencia.
PROBLEMA DE CLASE
#include <bits/stdc++.h>
using namespace std;
class vertebrados
protected:
int edad, peso;
public :
vertebrados (int e=0, int p=0){
edad=e; peso=p;}
int getEdad(){ return edad;}
void setEdad(int e){ edad=e;} no
int getPeso(){ return peso;}
void setPeso(int p){ peso=p;}
void muestre (){
cout<<"vertebrados de sangre caliente"<<endl;
};
class Terrestres:public vertebrados
private:
string nombre;
public:
Terrestres(int e , int p , string n=""):vertebrados(peso,edad){
edad =e ;
peso=p;
nombre=n;}
void correr(){
cout<<"los terrestres corren ...";}
string getNombre(){return nombre;}
void setNombre(string n){nombre=n;}
};
class acuatico:public vertebrados
public:
acuatico(int e, int p):vertebrados(edad , peso){
edad=e;
peso=p;}
void nadar(){
cout << "los acuaticos nadan";}
};
class aves:public vertebrados
public:
aves(int e, int p):vertebrados(edad , peso){
edad=e;
peso=p;}
void volar(){
cout << "No todas las aves vuelan ";}
};
int main()
vertebrados gato(2,5);
cout<<"edad del gato es:"<<[Link]()<<endl;
cout<<"el peso del gato es:"<<[Link]()<<endl;
[Link]();
Terrestres perro(4,12,"boby");
[Link](15);
cout<<"edad del perro es:"<<[Link]()<<endl;
cout<<"el peso del perro es:"<<[Link]()<<endl;
cout<<"nombre del perro es"<<[Link]()<<endl;
acuatico trucha(3,6);
cout<<"la edad de la trucha es:"<<[Link]()<<endl;
cout<<" el peso de la trucha es:"<<[Link]()<<endl;
aves pajarito (3,6);
cout<<"la edad del pajarito es:"<<[Link]()<<endl;
cout<<" el peso del pajarito es:"<<[Link]()<<endl;
return 0;
PROBLEMAS PROPUESTOS
- En el ejemplo 1 agregar la clase aves, agregando el atribulo altura_vuelo, función
velocidad_tierra() muestre “Caminan muy lento”. Mostrar un objeto de cada clase.
#include <bits/stdc++.h>
using namespace std;
class vertebrados
protected:
int edad, peso;
public :
vertebrados (int e=0, int p=0){
edad=e; peso=p;}
int getEdad(){ return edad;}
void setEdad(int e){ edad=e;} no
int getPeso(){ return peso;}
void setPeso(int p){ peso=p;}
void muestre (){
cout<<"vertebrados de sangre caliente"<<endl;
};
class Terrestres:public vertebrados
private:
string nombre;
public:
Terrestres(int e , int p , string n=""):vertebrados(peso,edad){
edad =e ;
peso=p;
nombre=n;}
void correr(){
cout<<"los terrestres corren ...";}
string getNombre(){return nombre;}
void setNombre(string n){nombre=n;}
};
class acuatico:public vertebrados
public:
acuatico(int e, int p):vertebrados(edad , peso){
edad=e;
peso=p;}
void nadar(){
cout << "los acuaticos nadan";}
};
class aves:public vertebrados
public:
aves(int e, int p):vertebrados(edad , peso){
edad=e;
peso=p;}
void volar(){
cout << "No todas las aves vuelan ";}
};
Class aves : public vertebrados
Private:
Int altura_vuelo;
Public:
Aves(int e, int p, int altura) : vertebrados(e, p), altura_vuelo(altura) {}
Int getAlturaVuelo() { return altura_vuelo; }
Void setAlturaVuelo(int altura) { altura_vuelo = altura; }
Void velocidad_tierra()
Cout << “Caminan muy lento” << endl;
Void volar()
Cout << “Algunas aves vuelan” << endl;
};
Int main()
Aves aguila(5, 10, 100);
[Link](150);
Cout << “Edad del águila: “ << [Link]() << endl;
Cout << “Peso del águila: “ << [Link]() << endl;
Cout << “Altura de vuelo del águila: “ << [Link]() << “ metros” << endl;
[Link]();
Aguila.velocidad_tierra();
[Link]();
vertebrados gato(2,5);
cout<<"edad del gato es:"<<[Link]()<<endl;
cout<<"el peso del gato es:"<<[Link]()<<endl;
[Link]();
Terrestres perro(4,12,"boby");
[Link](15);
cout<<"edad del perro es:"<<[Link]()<<endl;
cout<<"el peso del perro es:"<<[Link]()<<endl;
cout<<"nombre del perro es"<<[Link]()<<endl;
acuatico trucha(3,6);
cout<<"la edad de la trucha es:"<<[Link]()<<endl;
cout<<" el peso de la trucha es:"<<[Link]()<<endl;
aves pajarito (3,6);
cout<<"la edad del pajarito es:"<<[Link]()<<endl;
cout<<" el peso del pajarito es:"<<[Link]()<<endl;
return 0;
- Una editorial de libros y discos desea crear fichas que almacenen el título y el precio (de
tipo float) de cada publicación. Crear la correspondiente clase denominada publicacion
que implemente los datos anteriores. A partir de esta clase, diseñar dos clases derivadas:
libro: con el número de páginas (tipo int), año de publicación (tipo int) y precio (tipo
float):
y disco, con duración en minutos (tipo float) y precio (tipo int). Cada una de las clases
tendrá una función leer() y otra función mostrar(), para visualizar sus datos. Escribir un
programa que cree instancias de libro y disco. Solicite datos del usuario y a continuación
los visualice.
#include <iostream>
#include <string>
using namespace std;
class publicacion {
protected:
string titulo;
float precio;
public:
publicacion() : titulo(""), precio(0.0) {}
void leer() {
cout << "Ingrese el título: ";
[Link]();
getline(cin, titulo);
cout << "Ingrese el precio: ";
cin >> precio;
}
void mostrar() {
cout << "Título: " << titulo << endl;
cout << "Precio: $" << precio << endl;
}
};
class libro : public publicacion {
private:
int numPaginas;
int anioPublicacion;
public:
libro() : numPaginas(0), anioPublicacion(0) {}
void leer() {
publicacion::leer(); // Llamamos a la función leer de la clase base
cout << "Ingrese el número de páginas: ";
cin >> numPaginas;
cout << "Ingrese el año de publicación: ";
cin >> anioPublicacion;
}
void mostrar() {
publicacion::mostrar(); // Llamamos a la función mostrar de la clase base
cout << "Número de páginas: " << numPaginas << endl;
cout << "Año de publicación: " << anioPublicacion << endl;
}
};
class disco : public publicacion {
private:
float duracionMinutos;
public:
disco() : duracionMinutos(0.0) {}
void leer() {
publicacion::leer(); // Llamamos a la función leer de la clase base
cout << "Ingrese la duración en minutos: ";
cin >> duracionMinutos;
}
void mostrar() {
publicacion::mostrar(); // Llamamos a la función mostrar de la clase base
cout << "Duración en minutos: " << duracionMinutos << endl;
}
};
int main() {
libro libro1;
disco disco1;
cout << "Ingrese los datos del libro:" << endl;
[Link]();
cout << "\nIngrese los datos del disco:" << endl;
[Link]();
cout << "\nDatos del libro:" << endl;
[Link]();
cout << "\nDatos del disco:" << endl;
[Link]();
return 0;
}