Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivos:
Comprender la manera en cómo la herencia promueve la reutilización en el diseño del software a partir de la creación de clases a través
de heredar clases existentes, identificando las características de los tipos de herencia para Implementar este principio POO en
programas en lenguaje C++.
Preguntas introductorias
1
2
3
4
5
Introducción
Uno de los principios de la programación orientada a objetos es que permite encapsular y vincular objetos básicos con objetos más
elaborados, esto se le identifica como la propiedad que permite definir nuevas clases usando como base o clases ya existentes.
La utilidad de encapsular se presenta cuando tenemos la necesidad de actualizar algunas clases de nuestro programa, entre menos
dependamos de una clase menos impacto tendrá el hecho de que se cambie, así mismo nos permitirá esconder los detalles de
implementación de nuestro programa, lo que aumenta su resistencia a ataques, esto debido a que al declarar métodos y/o variables
como privadas las ocultamos y dejan de ser visibles para las demás clases.
Las siguientes imágenes muestran aspectos del encapsulamiento en diferentes situaciones con el objetivo de hacer Analogías con el
encapsulamiento de los miembros de una clase en c++
Tipo Struct sin Tipo Clase con un nivel de Tipo Clase donde define Que protege la capsula o ( clase) ?
encapsulamiento con nivel encapsulamiento niveles de atributos
de acceso global private encapsulamiento cuatro
métodos a nivel de Cuál es el medio de comunicarse en
acceso public este caso alimentarse fuera de la
Dos atributos a nivel de capsula? Captura de los datos y y
acceso private desplegar la informacion
La Herencia es uno de los conceptos fundamentales de la programación orientada a objetos ya que permite la reusabilidad
de variables y funcionalidades que se han definido en otras clases.
La herencia significa que se pueden crear nuevas clases partiendo de clases existentes, que tendrá todas los atributos y los
métodos de su 'superclase' o 'clase padre' y además se le podrán añadir otros atributos y métodos propios.
Sintaxis
class : <nombre de la clase derivada>:<tipo de acceso herencia><nombre de la clase base>
Ejemplo:
class ClaseDerivada : public ClaseBase
{
Propias caracteristicas
};
La herencia está fuertemente ligada a la reutilización del código en la OOP. Esto es, el código de cualquiera de las clases puede ser
utilizado sin más que crear una clase derivada de ella, o bien una subclase.
Hay dos tipos de herencia: Herencia Simple y Herencia Múltiple. La primera indica que se pueden definir nuevas clases solamente a
partir de una clase inicial mientras que la segunda indica que se pueden definir nuevas clases a partir de dos o más clases iniciales. Java
sólo permite herencia simple.
En lenguaje c++ identifica a la herencia como la capacidad de compartir atributos y métodos entre clases, y se logra a través de la
relación entre dos clases, una clase denominada derivada o subclase que se crea a partir de otra ya existente, denominada clase base o
superclase.
Una de las ventajas es, que se evita duplicar el código de la clase base por lo que se opta por crear la clase derivada con el código y
datos comunes más sus propias características
Herencia
Simple. Múltiple.
se pueden definir nuevas clases solamente a partir de una indica que se pueden definir nuevas clases a partir de dos o
clase inicial más clases iniciales.
Imagen que representa herencia simple Imagen que representa herencia múltiple
C++ utiliza especificadores de acceso para controlar el acceso a los miembros de la clase (atributos o propiedades y funciones o
métodos).
Los especificadores de acceso permiten acceder a algunos miembros de la clase y restringir el acceso a otros.
La interfaz de una clase es el conjunto de funciones públicos y el medio por el que podemos comunicarnos con objetos de esa clase y
podemos manipular y modificar a los datos
Hay tres especificadores de acceso en las clases en lenguaje C++: public, private y protected.
La encapsulación define por defecto a todos los miembros de la clase como privados para protegerlos, pero se puede modificar el
acceso a los métodos de privado a público, para poder acceder a los datos
Imágenes que muestran el Control de acceso que se Cuando un miembro de una clase es declarado:
puede determinar de los miembros de una clase
Si no se especifica ninguno, por defecto se asume que es private. Por lo que los
miembros heredados de la base pasan a tener el tipo según la siguiente tabla.
Los miembros de la clase base pasan a la clase derivada como class ClaseDerivada : private ClaseBase
Herencia privada: en la que todos
públicos → privados los miembros públicos y protegidos
protegidos → privados de la clase base adquieren el nivel
privados → INACCESIBLES de acceso privado en las clases
derivadas. De ahí se desprende que
una clase derivada que haya
heredado mediante herencia
privada no puede heredar a otras
clases los miembros que ha
heredado de otras clases.
Actividades
Actividad 1
Class Actor{ };
Class objetoinerte{ };
Class Persona:public Actor{};
Class vehiculo:public Actor,public Objetoinerte{};
Class Profesor:public Persona{};
Class estudiante:public Persona{};
Class coche:public vehiculo{};
Class Bicicleta :public vehiculo{};
Actividad 2
Identifica tipo de herencia y analizar el código correspondiente
#include<iostream>
using namespace std;
class Base
{
// Declaración de atributos y métodos de la clase Base
};
int main(){
Base objeto1;
Derivada objeto2;
return 0
}
Actividad 3
Identifica tipo de herencia y analizar el código correspondiente
class Base
{
// Declaración de atributos y métodos de la clase Base
};
int main(){
Base objeto1;
Derivada1 objeto2;
Derivada2 objeto3;
return 0;
}
Actividad 4
Identifica tipo de herencia y analizar el código correspondiente
#include<iostream>
using namespace std;
class Base1
{
// Declaración de atributos y métodos de la clase Base1
};
class Base2
{
// Declaración de atributos y métodos de la clase Base2
};
int main(){
Base1 objeto1;
Base2 obejto2;
Derivada objeto3;
return 0;
}
Actividad 5
#include <iostream>
using namespace std;
class Persona
{
protected:
char nombre[40];
int edad;
public:
Persona( ) { }; // constructor por defecto
void leerdatos( );
void imprimirdatos( );
};
{
cout << endl << endl;
cout << "----- Imprimir los Datos del Empleado -----" << endl;
cout << "Nombre : " << nombre << endl;
cout << "Edad : " << edad << " a";
printf("%c",164); // Para mostrar la letra "ñ"
cout << "os" << endl;
/*******************************************************/
class Empleado : public Persona /* Definición de la Clase
Empleado como clase derivada de la clase Persona. Se utiliza
herencia pública */
{
protected:
float salarioanual;
char cargo[60];
public:
Empleado( ){ };
void leeremp( ); //
void imprimiremp( );
};
{
Persona::leerdatos(); //se hace uso de lo que se hereda
cout << "Introducir Cargo:" << endl;
cin >> cargo;
cout << "Introducir Sueldo:" << endl;
cin >> salarioanual;
}
{
Persona :: imprimirdatos( );
cout << "Cargo del empleado: " << cargo << endl;
cout << "Sueldo anual empleado: $ " << salarioanual << endl;
}
int main( )
{
Empleado RCA; // Crear un objeto tipo empleado
system("pause");
return 0;
}
Actividad 8
#include <iostream>
using namespace std;
class base {
protected:
int i, j;
public:
void mostrar()
{
cout << i << " " << j << "\n";
}
};
public:
void setm() { m = i-j; }
void mostrarm() { cout << m << "\n"; }
};
int main()
{
derivada1 obj1;
derivada2 obj2;
obj1.set(2, 3);
obj1.mostrar();
obj1.setk();
obj1.mostrark();
obj2.set(3, 4);
obj2.mostrar();
obj2.setk();
obj2.setm();
obj2.mostrark();
obj2.mostrarm();
return 0;
}
Actividad 9
a) Metodos
b) Atriburtos
Actividad 10
métodos
setcaptura()
setimpresion]()
Actividad 11
Investiga y explica haciendo una analogía de la herencia genética con la herencia de clases
Diagrama explicación
Actividad 12
La figura muestra un diagrama de clases considera las relaciones Cabeceras de los archivos que se crean en un proyecto consola
y escribe las cabeceras de un proyecto de consola para cada una O un solo archivo de clases?
de las clases
Clase1
Clase2
Clase3
Clase4
Clase5
Actividad 13
Conclusiones
Actividad 14
Fuentes recomendadas
Liga Contenido
http://www.oocities.org/webmeyer/prog/estilocpp/estilocpp_06.html
http://c.conclase.net/curso/?cap=036
Pensar en c++
Programación Orientada a Objetos, Herencia. - Bing video
Relaciones_entre_clases_y_objetos_en_C.pdf (unr.edu.ar)