Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Segmentación y Agregación | Visión General de la Encapsulación
POO en C++
course content

Contenido del Curso

POO en C++

POO en C++

1. Fundamentos de la POO en C++
2. Constructores y Destructores
3. Visión General de la Encapsulación
4. Visión General de la Herencia
5. Visión General del Polimorfismo

book
Segmentación y Agregación

Al crear software que sea mantenible y flexible, hay muchos aspectos a considerar en el proceso, especialmente en la programación orientada a objetos. Composición y agregación son conceptos fundamentales que permiten la creación de sistemas complejos a partir de componentes más simples y forman parte del paradigma de encapsulamiento.

Composición

La composición es una técnica de diseño donde una class contiene objects de otras classes como variables miembro. Estos miembros son componentes esenciales de la class contenedora y existe una relación de fuerte propiedad. Cuando el object contenedor es destruido, sus partes compuestas también se destruyen. Por ejemplo:

Car.h

Car.h

Engine.h

Engine.h

copy
123456789101112
#include "Engine.h" class Car { public: void Start() { engine.Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine engine; // Engine object composition };

La clase Car compone un objeto Engine. Cuando se crea un objeto Car, automáticamente se crea una instancia de Engine como parte de su composición.

Agregación

Agregación es otra forma de composición de object donde una class contiene object de otras classes, pero las instancias contenidas tienen una relación más débil en comparación con la composición. En la agregación, los miembros classes contenidos pueden existir de forma independiente y pueden ser compartidos entre varias classes.

Car.h

Car.h

Engine.h

Engine.h

copy
123456789101112131415
#include "Engine.h" class Car { public: Car(Engine* engine) : engine(engine) {} void Start() { engine->Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine* engine; // Engine object aggregation };

La clase Car agrega un objeto Engine utilizando un puntero. La clase Car no es propietaria del objeto Engine; simplemente mantiene una referencia a él. Esto permite que la instancia de Engine exista de manera independiente al objeto Car y pueda ser compartida entre múltiples instancias si es necesario.

Elección entre composición y agregación

Al diseñar sistemas de software, es fundamental considerar cuidadosamente si se debe utilizar composición o agregación según las relaciones entre clases y objetos.

En el contexto de las clases Car y Engine, el uso de composición sería más apropiado. Normalmente, cada coche tiene su propio motor, y el motor es una parte integral del propio coche. Además, esto impide que el Engine sea compartido o reutilizado entre varios objetos objects, lo cual también resulta lógico.

question mark

¿Cuál de los siguientes es un ejemplo de agregación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

POO en C++

POO en C++

1. Fundamentos de la POO en C++
2. Constructores y Destructores
3. Visión General de la Encapsulación
4. Visión General de la Herencia
5. Visión General del Polimorfismo

book
Segmentación y Agregación

Al crear software que sea mantenible y flexible, hay muchos aspectos a considerar en el proceso, especialmente en la programación orientada a objetos. Composición y agregación son conceptos fundamentales que permiten la creación de sistemas complejos a partir de componentes más simples y forman parte del paradigma de encapsulamiento.

Composición

La composición es una técnica de diseño donde una class contiene objects de otras classes como variables miembro. Estos miembros son componentes esenciales de la class contenedora y existe una relación de fuerte propiedad. Cuando el object contenedor es destruido, sus partes compuestas también se destruyen. Por ejemplo:

Car.h

Car.h

Engine.h

Engine.h

copy
123456789101112
#include "Engine.h" class Car { public: void Start() { engine.Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine engine; // Engine object composition };

La clase Car compone un objeto Engine. Cuando se crea un objeto Car, automáticamente se crea una instancia de Engine como parte de su composición.

Agregación

Agregación es otra forma de composición de object donde una class contiene object de otras classes, pero las instancias contenidas tienen una relación más débil en comparación con la composición. En la agregación, los miembros classes contenidos pueden existir de forma independiente y pueden ser compartidos entre varias classes.

Car.h

Car.h

Engine.h

Engine.h

copy
123456789101112131415
#include "Engine.h" class Car { public: Car(Engine* engine) : engine(engine) {} void Start() { engine->Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine* engine; // Engine object aggregation };

La clase Car agrega un objeto Engine utilizando un puntero. La clase Car no es propietaria del objeto Engine; simplemente mantiene una referencia a él. Esto permite que la instancia de Engine exista de manera independiente al objeto Car y pueda ser compartida entre múltiples instancias si es necesario.

Elección entre composición y agregación

Al diseñar sistemas de software, es fundamental considerar cuidadosamente si se debe utilizar composición o agregación según las relaciones entre clases y objetos.

En el contexto de las clases Car y Engine, el uso de composición sería más apropiado. Normalmente, cada coche tiene su propio motor, y el motor es una parte integral del propio coche. Además, esto impide que el Engine sea compartido o reutilizado entre varios objetos objects, lo cual también resulta lógico.

question mark

¿Cuál de los siguientes es un ejemplo de agregación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 5
some-alt