Programa de Herencia Jerárquica en C++

C++C++Beginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, demostraremos cómo crear un programa en C++ que demuestre el concepto de Herencia Jerárquica. Escribiremos un programa sencillo usando clases y objetos para entender mejor el tema.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/OOPGroup -.-> cpp/access_specifiers("Access Specifiers") cpp/OOPGroup -.-> cpp/encapsulation("Encapsulation") cpp/OOPGroup -.-> cpp/inheritance("Inheritance") cpp/OOPGroup -.-> cpp/polymorphism("Polymorphism") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/classes_objects -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/class_methods -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/access_specifiers -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/encapsulation -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/inheritance -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/polymorphism -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/output -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/files -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} cpp/code_formatting -.-> lab-96145{{"Programa de Herencia Jerárquica en C++"}} end

Crea el main.cpp

Creamos un nuevo archivo llamado main.cpp en el directorio ~/project con el siguiente comando:

touch ~/project/main.cpp

Escribe la clase Shape

Lo primero que debemos hacer es definir la clase Shape, que servirá como clase padre para las clases Rectangle y Triangle. En esta clase, crearemos dos variables miembro protegidas width y height que almacenarán el ancho y el alto de la forma.

Luego, crearemos una función miembro pública setDimensions que establecerá estas dimensiones y mostrará un mensaje en la consola.

Este es el bloque de código para la clase Shape que debe agregarse a main.cpp:

#include <iostream>
using namespace std;

class Shape {
    //las variables miembro protegidas solo son accesibles dentro de la clase y sus clases descendientes
    protected:
        float width, height;
    //los miembros públicos son accesibles en cualquier lugar
    public:
        void setDimensions(float w, float h) {
            cout << "Setting the Dimensions using the parent Class: Shape\n";
            cout << "The dimensions are: " << w << " and " << h << "\n\n";

            width = w;
            height = h;
        }
};

Escribe la clase Rectangle

A continuación, crearemos la clase Rectangle que heredará de la clase Shape. Aquí, usaremos una técnica de anulación de métodos para calcular el área del rectángulo usando la función area().

Este es el bloque de código para la clase Rectangle que debe agregarse a main.cpp:

class Rectangle: public Shape {
    //Anulación de métodos
    public:
        float area() {
            return (width * height);
        }
};

Escribe la clase Triangle

Ahora, creemos la clase Triangle que también heredará de la clase Shape. Aquí, usaremos la anulación de métodos para calcular el área del triángulo usando la función area().

Este es el bloque de código para la clase Triangle que debe agregarse a main.cpp:

class Triangle: public Shape {
    //Anulación de métodos
    public:
        float area() {
            return (width * height / 2);
        }
};

Escribe la función main()

Ahora es el momento de escribir la función main(). Aquí, crearemos objetos para las clases Rectangle y Triangle y estableceremos sus dimensiones.

Luego usaremos la función area() para calcular el área tanto del Rectangle como del Triangle usando sus respectivos objetos.

Este es el bloque de código para la función main() que debe agregarse a main.cpp:

int main() {

    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << "===== Program to demonstrate the concept of Hierarchical Inheritance in CPP =====\n\n";

    //Declaring the Class objects to access the class members
    Rectangle rectangle;
    Triangle triangle;

    rectangle.setDimensions(5, 3);
    triangle.setDimensions(2, 5);

    cout << "\nArea of the Rectangle computed using Rectangle Class is : " << rectangle.area() << "\n\n\n";
    cout << "Area of the Triangle computed using Triangle Class is: " << triangle.area();

    cout << "\n\n\n";

    return 0;
}

Compila y ejecuta el programa

Para ejecutar el programa en la terminal, primero, navega hasta ~/project. Luego escribe el siguiente comando para compilar el archivo main.cpp:

g++ main.cpp -o main

Después, ejecuta el programa con el siguiente comando:

./main

Deberías ver la salida en la terminal.

Resumen

En este laboratorio, hemos aprendido cómo demostrar el concepto de Herencia Jerárquica en C++. Creamos la clase Shape, que era la clase padre de tanto Rectangle como Triangle. Luego creamos objetos para cada una de las clases hijas y usamos la anulación de métodos para encontrar el área de un rectángulo y un triángulo.

Esperamos que este laboratorio te haya ayudado a desarrollar una mejor comprensión de cómo funciona la Herencia Jerárquica en C++. Para cualquier consulta, no dudes en contactarnos a través de la sección de comentarios a continuación.