Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Segmentering og Aggregering | Oversigt Over Indkapsling
C++ OOP
course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Segmentering og Aggregering

Når du udvikler software, der skal være vedligeholdelsesvenligt og fleksibelt, er der mange forhold at tage i betragtning under processen, især inden for objektorienteret programmering. Komposition og aggregation er grundlæggende begreber, der muliggør opbygning af komplekse systemer ud fra enklere komponenter og udgør en del af indkapslingsparadigmet.

Komposition

Komposition er en designteknik, hvor en class indeholder objects af andre classes som medlemsvariabler. Disse medlemmer er væsentlige komponenter i den indeholdende class og har et stærkt ejerskabsforhold. Når det indeholdende object destrueres, destrueres dets komponerede dele også. For eksempel:

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

Car-klassen sammensætter et Engine-objekt. Når et Car-objekt oprettes, oprettes der automatisk en instans af Engine som en del af dets sammensætning.

Aggregation

Aggregation er en anden form for object-sammensætning, hvor en class indeholder object fra andre classes, men de indeholdte instanser har en svagere relation sammenlignet med composition. Ved aggregation kan de indeholdte medlems-classes eksistere uafhængigt og kan deles mellem flere 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 };

Car-klassen aggregerer et Engine-objekt ved hjælp af en pointer. Car-klassen ejer ikke Engine-objektet; den holder blot en reference til det. Dette gør det muligt for Engine-instansen at eksistere uafhængigt af Car-objektet og blive delt mellem flere instanser, hvis det er nødvendigt.

Valg mellem komposition og aggregering

Ved design af softwaresystemer er det vigtigt nøje at overveje, om der skal anvendes komposition eller aggregering, baseret på relationerne mellem klasser og objekter.

I konteksten af Car- og Engine-klasserne vil brugen af komposition være mere passende. Hver bil har typisk sin egen motor, og motoren er en integreret del af bilen selv. Derudover forhindrer det, at Engine deles eller genbruges på tværs af flere bil-objects, hvilket også giver mening.

question mark

Hvilket af følgende er et eksempel på aggregering?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Segmentering og Aggregering

Når du udvikler software, der skal være vedligeholdelsesvenligt og fleksibelt, er der mange forhold at tage i betragtning under processen, især inden for objektorienteret programmering. Komposition og aggregation er grundlæggende begreber, der muliggør opbygning af komplekse systemer ud fra enklere komponenter og udgør en del af indkapslingsparadigmet.

Komposition

Komposition er en designteknik, hvor en class indeholder objects af andre classes som medlemsvariabler. Disse medlemmer er væsentlige komponenter i den indeholdende class og har et stærkt ejerskabsforhold. Når det indeholdende object destrueres, destrueres dets komponerede dele også. For eksempel:

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

Car-klassen sammensætter et Engine-objekt. Når et Car-objekt oprettes, oprettes der automatisk en instans af Engine som en del af dets sammensætning.

Aggregation

Aggregation er en anden form for object-sammensætning, hvor en class indeholder object fra andre classes, men de indeholdte instanser har en svagere relation sammenlignet med composition. Ved aggregation kan de indeholdte medlems-classes eksistere uafhængigt og kan deles mellem flere 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 };

Car-klassen aggregerer et Engine-objekt ved hjælp af en pointer. Car-klassen ejer ikke Engine-objektet; den holder blot en reference til det. Dette gør det muligt for Engine-instansen at eksistere uafhængigt af Car-objektet og blive delt mellem flere instanser, hvis det er nødvendigt.

Valg mellem komposition og aggregering

Ved design af softwaresystemer er det vigtigt nøje at overveje, om der skal anvendes komposition eller aggregering, baseret på relationerne mellem klasser og objekter.

I konteksten af Car- og Engine-klasserne vil brugen af komposition være mere passende. Hver bil har typisk sin egen motor, og motoren er en integreret del af bilen selv. Derudover forhindrer det, at Engine deles eller genbruges på tværs af flere bil-objects, hvilket også giver mening.

question mark

Hvilket af følgende er et eksempel på aggregering?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5
some-alt