Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Segmentazione e Aggregazione | Panoramica sull'Incapsulamento
OOP in C++

Segmentazione e Aggregazione

Scorri per mostrare il menu

Quando si sviluppa un software che sia manutenibile e flessibile, ci sono molti aspetti da considerare nel processo, soprattutto nella programmazione orientata agli oggetti. Composizione e aggregazione sono concetti fondamentali che permettono la creazione di sistemi complessi a partire da componenti più semplici e fanno parte del paradigma dell'incapsulamento.

Composizione

La composizione è una tecnica di progettazione in cui una class contiene objects di altre classes come variabili membro. Questi membri sono componenti essenziali della class contenitore e presentano una forte relazione di possesso. Quando l'object contenitore viene distrutto, anche le sue parti composte vengono distrutte. Ad esempio:

Car.h

Car.h

Engine.h

Engine.h

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 classe Car compone un oggetto Engine. Quando viene creato un oggetto Car, viene automaticamente creata un'istanza di Engine come parte della sua composizione.

Aggregazione

Aggregazione è un'altra forma di composizione di object in cui una class contiene object di altre classes, ma le istanze contenute hanno una relazione più debole rispetto alla composizione. Nell'aggregazione, i membri classes contenuti possono esistere indipendentemente e possono essere condivisi tra più classes.

Car.h

Car.h

Engine.h

Engine.h

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 classe Car aggrega un oggetto Engine utilizzando un puntatore. La classe Car non possiede l'oggetto Engine; si limita a mantenere un riferimento ad esso. Questo consente all'istanza di Engine di esistere indipendentemente dall'oggetto Car e di essere condivisa tra più istanze se necessario.

Scelta tra Composizione e Aggregazione

Durante la progettazione di sistemi software, è fondamentale valutare attentamente se utilizzare la composizione o l'aggregazione in base alle relazioni tra classi e oggetti.

Nel contesto delle classi Car e Engine, l'utilizzo della composizione sarebbe più appropriato. Ogni auto di solito ha il proprio motore, e il motore è una parte integrante dell'auto stessa. Inoltre, ciò impedisce che l'oggetto Engine venga condiviso o riutilizzato tra più oggetti objects, il che risulta coerente.

question mark

Quale delle seguenti è un esempio di aggregazione?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 5
some-alt