Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Segmentointi ja Aggregointi | Kapseloinnin Yleiskatsaus
C++ OOP
course content

Kurssisisältö

C++ OOP

C++ OOP

1. C++:n OOP:n Perusteet
2. Konstruktorit ja Destruktorit
3. Kapseloinnin Yleiskatsaus
4. Perinnän Yleiskatsaus
5. Polymorfismin Yleiskatsaus

book
Segmentointi ja Aggregointi

Kun luot ylläpidettävää ja joustavaa ohjelmistoa, on prosessissa otettava huomioon monia asioita, erityisesti olio-ohjelmoinnissa. Koostaminen ja aggregointi ovat keskeisiä käsitteitä, jotka mahdollistavat monimutkaisten järjestelmien rakentamisen yksinkertaisemmista osista ja kuuluvat kapseloinnin periaatteisiin.

Koostaminen

Koostaminen on suunnittelutekniikka, jossa class sisältää muiden objects classes jäsenmuuttujina. Nämä jäsenet ovat olennaisia osia sisältävässä class ja niillä on vahva omistussuhde. Kun sisältävä object tuhoutuu, myös sen koostetut osat tuhoutuvat. Esimerkiksi:

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-luokka koostaa Engine-olion. Kun Car-olio luodaan, se luo automaattisesti Engine-instanssin osana koostumustaan.

Aggregaatio

Aggregaatio on toinen object koostamisen muoto, jossa class sisältää muiden object classes, mutta sisältyvillä instansseilla on heikompi suhde verrattuna koostumukseen. Aggregaatiossa sisältyvät jäsenclasses voivat olla olemassa itsenäisesti ja niitä voidaan jakaa useiden classes kesken.

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-luokka yhdistää Engine-olion osoittimen avulla. Car-luokka ei omista Engine-oliota; se ainoastaan säilyttää viitteen siihen. Tämä mahdollistaa sen, että Engine-instanssi voi olla olemassa itsenäisesti Car-oliosta ja sitä voidaan jakaa useiden instanssien kesken tarvittaessa.

Koostamisen ja aggregaation valinta

Ohjelmistojärjestelmiä suunniteltaessa on tärkeää harkita tarkkaan, käytetäänkö koostamista vai aggregaatiota luokkien ja olioiden välisten suhteiden perusteella.

Car- ja Engine-luokkien yhteydessä koostaminen olisi sopivampi vaihtoehto. Jokaisella autolla on tyypillisesti oma moottorinsa, ja moottori on olennainen osa itse autoa. Lisäksi tämä estää Engine-olion jakamisen tai uudelleenkäytön useiden objects-olioiden kesken, mikä on myös järkevää.

question mark

Mikä seuraavista on esimerkki aggregaatiosta?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

course content

Kurssisisältö

C++ OOP

C++ OOP

1. C++:n OOP:n Perusteet
2. Konstruktorit ja Destruktorit
3. Kapseloinnin Yleiskatsaus
4. Perinnän Yleiskatsaus
5. Polymorfismin Yleiskatsaus

book
Segmentointi ja Aggregointi

Kun luot ylläpidettävää ja joustavaa ohjelmistoa, on prosessissa otettava huomioon monia asioita, erityisesti olio-ohjelmoinnissa. Koostaminen ja aggregointi ovat keskeisiä käsitteitä, jotka mahdollistavat monimutkaisten järjestelmien rakentamisen yksinkertaisemmista osista ja kuuluvat kapseloinnin periaatteisiin.

Koostaminen

Koostaminen on suunnittelutekniikka, jossa class sisältää muiden objects classes jäsenmuuttujina. Nämä jäsenet ovat olennaisia osia sisältävässä class ja niillä on vahva omistussuhde. Kun sisältävä object tuhoutuu, myös sen koostetut osat tuhoutuvat. Esimerkiksi:

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-luokka koostaa Engine-olion. Kun Car-olio luodaan, se luo automaattisesti Engine-instanssin osana koostumustaan.

Aggregaatio

Aggregaatio on toinen object koostamisen muoto, jossa class sisältää muiden object classes, mutta sisältyvillä instansseilla on heikompi suhde verrattuna koostumukseen. Aggregaatiossa sisältyvät jäsenclasses voivat olla olemassa itsenäisesti ja niitä voidaan jakaa useiden classes kesken.

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-luokka yhdistää Engine-olion osoittimen avulla. Car-luokka ei omista Engine-oliota; se ainoastaan säilyttää viitteen siihen. Tämä mahdollistaa sen, että Engine-instanssi voi olla olemassa itsenäisesti Car-oliosta ja sitä voidaan jakaa useiden instanssien kesken tarvittaessa.

Koostamisen ja aggregaation valinta

Ohjelmistojärjestelmiä suunniteltaessa on tärkeää harkita tarkkaan, käytetäänkö koostamista vai aggregaatiota luokkien ja olioiden välisten suhteiden perusteella.

Car- ja Engine-luokkien yhteydessä koostaminen olisi sopivampi vaihtoehto. Jokaisella autolla on tyypillisesti oma moottorinsa, ja moottori on olennainen osa itse autoa. Lisäksi tämä estää Engine-olion jakamisen tai uudelleenkäytön useiden objects-olioiden kesken, mikä on myös järkevää.

question mark

Mikä seuraavista on esimerkki aggregaatiosta?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5
some-alt