Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Segmentação e Agregação | Visão Geral do Encapsulamento
C++ Poo
course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
Segmentação e Agregação

Ao criar um software que seja sustentável e flexível, diversos fatores devem ser considerados durante o processo, especialmente na programação orientada a objetos. Composição e agregação são conceitos fundamentais que possibilitam a criação de sistemas complexos a partir de componentes mais simples e fazem parte do paradigma de encapsulamento.

Composição

Composição é uma técnica de design em que uma class contém objects de outras classes como variáveis membro. Esses membros são componentes essenciais da class que os contém e possuem uma relação de forte propriedade. Quando o object que contém é destruído, suas partes compostas também são destruídas. Por exemplo:

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 };

A classe Car compõe um objeto Engine. Quando um objeto Car é criado, ele automaticamente cria uma instância de Engine como parte de sua composição.

Agregação

Agregação é outra forma de composição de object onde uma class contém object de outras classes, mas as instâncias contidas possuem uma relação mais fraca em comparação à composição. Na agregação, as classes membros contidas podem existir independentemente e podem ser compartilhadas entre várias 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 };

A classe Car agrega um objeto Engine usando um ponteiro. A classe Car não possui o objeto Engine; ela apenas mantém uma referência a ele. Isso permite que a instância de Engine exista independentemente do objeto Car e seja compartilhada entre várias instâncias, se necessário.

Escolhendo Entre Composição e Agregação

Ao projetar sistemas de software, é fundamental considerar cuidadosamente se deve ser utilizada composição ou agregação com base nos relacionamentos entre classes e objetos.

No contexto das classes Car e Engine, o uso de composição seria mais apropriado. Cada carro normalmente possui seu próprio motor, e o motor é uma parte integrante do próprio carro. Além disso, isso impede que o Engine seja compartilhado ou reutilizado entre vários objetos objects, o que também faz sentido.

question mark

Qual das alternativas a seguir é um exemplo de agregação?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
Segmentação e Agregação

Ao criar um software que seja sustentável e flexível, diversos fatores devem ser considerados durante o processo, especialmente na programação orientada a objetos. Composição e agregação são conceitos fundamentais que possibilitam a criação de sistemas complexos a partir de componentes mais simples e fazem parte do paradigma de encapsulamento.

Composição

Composição é uma técnica de design em que uma class contém objects de outras classes como variáveis membro. Esses membros são componentes essenciais da class que os contém e possuem uma relação de forte propriedade. Quando o object que contém é destruído, suas partes compostas também são destruídas. Por exemplo:

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 };

A classe Car compõe um objeto Engine. Quando um objeto Car é criado, ele automaticamente cria uma instância de Engine como parte de sua composição.

Agregação

Agregação é outra forma de composição de object onde uma class contém object de outras classes, mas as instâncias contidas possuem uma relação mais fraca em comparação à composição. Na agregação, as classes membros contidas podem existir independentemente e podem ser compartilhadas entre várias 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 };

A classe Car agrega um objeto Engine usando um ponteiro. A classe Car não possui o objeto Engine; ela apenas mantém uma referência a ele. Isso permite que a instância de Engine exista independentemente do objeto Car e seja compartilhada entre várias instâncias, se necessário.

Escolhendo Entre Composição e Agregação

Ao projetar sistemas de software, é fundamental considerar cuidadosamente se deve ser utilizada composição ou agregação com base nos relacionamentos entre classes e objetos.

No contexto das classes Car e Engine, o uso de composição seria mais apropriado. Cada carro normalmente possui seu próprio motor, e o motor é uma parte integrante do próprio carro. Além disso, isso impede que o Engine seja compartilhado ou reutilizado entre vários objetos objects, o que também faz sentido.

question mark

Qual das alternativas a seguir é um exemplo de agregação?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5
some-alt