0% encontró este documento útil (0 votos)
16 vistas7 páginas

Herencia Informe

Cargado por

noemiamundaray16
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas7 páginas

Herencia Informe

Cargado por

noemiamundaray16
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Republica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educacion Universitaria


Universidad Politecnica Territorial “Ludovico Silva”
Sede Punta de Mata
Programa Nacional de Formacion en Informatica
Trayecto 2, Seccion 01

Herencia en Programacion
Orientada a Objetos

Docente: Estuduantes:
Rosana Velasques Joselin Amundaray
CI:32.238.108
Osmarys Rincones
CI:32.238.107
Eliana Febres
CI:31.097.489
Daniel Cabello
CI:32.097.166
Omar Gonzalez
CI:31.880.023
Junio 2025
Herencia en Programación Orientada a Objetos

La programación orientada a objetos (POO) ha revolucionado la forma en que los


desarrolladores diseñan y estructuran el software. A través de conceptos
fundamentales como clases, objetos, encapsulamiento y polimorfismo, la POO permite
construir aplicaciones más modulares, escalables y mantenibles. Uno de los pilares
más importantes de la POO es la herencia, que permite a las clases derivadas adquirir
características y comportamientos de clases base. Este mecanismo no solo facilita la
reutilización del código, sino que también promueve una estructura jerárquica que
puede reflejar relaciones del mundo real, como "es un tipo de".

En este informe, se explorarán en profundidad los conceptos relacionados con la


herencia, incluyendo su definición, los diferentes tipos de herencia, las clases base
virtuales, la visibilidad en la herencia, así como las clases abstractas y los métodos
virtuales. También se abordará la gestión de constructores y destructores en el
contexto de la herencia. Comprender estos conceptos es esencial para cualquier
estudiante de informática que desee desarrollar software robusto y eficiente, ya que la
herencia no solo optimiza el proceso de desarrollo, sino que también mejora la
legibilidad y la organización del código.

La herencia es un principio fundamental de la POO que permite a una clase (llamada


clase derivada o subclase) heredar atributos y métodos de otra clase (llamada clase
base o superclase). Este proceso crea una relación jerárquica que permite a los
desarrolladores construir sistemas complejos de manera más sencilla y eficiente.

Beneficios de la herencia:

• Reutilización del código: Las clases derivadas pueden utilizar el código ya


existente en las clases base, lo que reduce la duplicación y el tiempo de
desarrollo.

• Organización y estructura: Facilita la creación de estructuras de clases que


reflejan relaciones del mundo real, lo que hace que el código sea más intuitivo y
fácil de entender.

• Facilidad de mantenimiento: Los cambios en la clase base se reflejan


automáticamente en las clases derivadas, lo que simplifica el proceso de
mantenimiento y actualización del software.

• Polimorfismo: Permite definir métodos que pueden comportarse de diferentes


maneras según el objeto que los invoca, aumentando la flexibilidad del código.
Tipos de Herencia

• Herencia Simple

La herencia simple se produce cuando una clase derivada hereda de una única
clase base. Este tipo es el más común y ofrece una implementación directa y
fácil de entender.

```cpp

class Padre {

public:

void metodo() { /* Código */ }

};

class Hijo : public Padre {

public:

void otroMetodo() { /* Código */ }

};

• Herencia Múltiple

La herencia múltiple permite que una clase derivada herede de varias clases base.
Aunque esto proporciona mayor flexibilidad, también puede complicar la resolución de
ambigüedades en métodos y atributos.

```cpp

class Padre1 {

public:

void metodo1() { /* Código */ }

};

class Padre2 {

public:

void metodo2() { /* Código */ }

};
class Hijo : public Padre1, public Padre2 {

public:

void metodoHijo() { /* Código */ }

};

• Clases Base Virtuales

Las clases base virtuales se utilizan para resolver problemas de ambigüedad en la


herencia múltiple. Al declarar una clase base como virtual, se asegura que solo haya
una instancia de esa clase base en la jerarquía, evitando problemas de "diamante".

cpp

class Base {

public:

virtual void metodo() { /* Código */ }

};

class Derivada1 : public virtual Base { };

class Derivada2 : public virtual Base { };

• Visibilidad de la Herencia

La visibilidad en la herencia determina cómo los miembros de la clase base son


accesibles desde la clase derivada. Los modificadores de acceso son:

- public: Los miembros son accesibles públicamente. La herencia es pública.

- protected: Los miembros son accesibles en la clase base y en las clases derivadas,
pero no externamente.

- private: Los miembros no son accesibles desde las clases derivadas.

cpp

class Base {

protected:

int valorProtegido; // Accesible en clases derivadas

};
class Derivada : public Base {

public:

void metodo() {

valorProtegido = 10; // Acceso permitido

};

• Clases Abstractas y Métodos Virtuales

a. Clases Abstractas

Una clase abstracta es aquella que no puede ser instanciada y sirve como base para
otras clases. Contiene al menos un método virtual puro, obligando a las clases
derivadas a implementar este método.

cpp

class Abstracta {

public:

virtual void metodoVirtualPuro() = 0; // Método puro

};

b. Métodos Virtuales

Los métodos virtuales permiten que las subclases proporcionen implementaciones


específicas de un método definido en la clase base, facilitando así el polimorfismo.

cpp

class Base {

public:

virtual void mostrar() {

std::cout << "Clase Base" << std::endl;

};
class Derivada : public Base {

public:

void mostrar() override {

std::cout << "Clase Derivada" << std::endl;

};

• Constructores y Destructores con Herencia

Los constructores de la clase base se invocan antes que los de la clase derivada,
asegurando que los miembros de la clase base estén inicializados correctamente.

cpp

class Base {

public:

Base() { /* Inicialización */ }

};

class Derivada : public Base {

public:

Derivada() : Base() { /* Inicialización derivada */ }

};

Los destructores se invocan en orden inverso al de los constructores. Es fundamental


declarar el destructor de la clase base como virtual si se espera que la clase sea
derivada, para asegurar la correcta liberación de recursos.

cpp

class Base {

public:

virtual ~Base() { /* Liberación de recursos */ }

};
La herencia es un concepto crucial en la programación orientada a objetos que permite
crear aplicaciones más flexibles, escalables y organizadas. Al comprender cómo
funciona la herencia, los estudiantes de informática pueden aprovechar sus beneficios
para desarrollar software eficiente y de alta calidad. Desde la reutilización del código y
la organización estructural hasta el uso de clases abstractas y métodos virtuales, la
herencia permite a los desarrolladores construir jerarquías de clases que reflejan
relaciones complejas de manera sencilla y clara.

A medida que los sistemas de software continúan evolucionando, la comprensión de la


herencia y sus principios asociados se vuelve aún más relevante. Los desafíos que
presenta la herencia múltiple y la necesidad de una gestión adecuada de constructores
y destructores son aspectos que todo desarrollador debe dominar. En última instancia,
la herencia no solo optimiza el proceso de desarrollo, sino que también mejora la
legibilidad y mantenibilidad del código, elementos esenciales en el desarrollo de
software moderno.

También podría gustarte