Objektová kompozice

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Objektová kompozice je v informatice způsob, jak v objektově orientovaném programování kombinovat jednoduché (základní) objekty nebo typy dat do složitějších. Objektová kompozice (tj. složení, skladba) je důležitý nástroj pro vytváření pokročilých datových struktur, jako je například spojový seznam nebo binární strom. Tyto složené datové struktury jsou dále používány stejným způsobem jako základní objekty.

Podrobnosti

Když jsou v programovacím jazyce vytvořeny objekty jako datové typy, mohou být často děleny na složené a nesložené datové typy. Složení může být považováno za vztah mezi typy: objektově složený typ (např. +more auto) „obsahuje“ objekt jednoduššího typu (např. kola).

Uvažujme o vztahu automobilu konkrétně: automobil je složen z objektů, jako je volant, sedadla, převodovka a motor. Tento „vztah“ může být stanoven v počítačovém programu jako složení vztahů. +more V reálném světě je samotná „podstata složení“ chápána jinak.  Motor v automobilu může být nahrazen motorem z jiného automobilu, což znamená, že vztah je lepší popsat jako agregaci (viz níže) než složení. Obecně řečeno, jak plyne čas tak to, co vypadá jako kompozice, má tendenci se proměnit ve shluky ty mají tendenci se proměnit ve volnější sdružení.

Složení musí být odlišné od subtypování, což je proces přidání detailu k obecnému typu dat k vytvoření více konkrétních datových typů. Například automobily mohou být konkrétním typem vozidla: auto je vozidlo. +more Dělení nepopisuje vztah mezi různými objekty, ale místo toho říká, že „objekty jednoho typu, jsou zároveň objekty jiného typu“.

V programovacích jazycích, jsou kompozitní objekty obvykle vyjádřeny pomocí odkazů z jednoho objektu na jiný. V závislosti na jazyku, mohou být tyto odkazy známé jako atributy, pole, členy nebo vlastnosti, a výsledná kompozice jako kompozitní typ, uložený záznam, struktura, n-tice, nebo uživatelem definovaný typ (UDT). +more Pole jsou uvedeny jedinečným názvem, takže každé z nich může být odlišeno od ostatních. Nicméně z těchto odkazů nemusí nutně znamenat, že objekt je kompozice. Kompozici nazýváme pouze, pokud objekty nemají žádnou nezávislou existenci. Pro podrobnosti viz dále kapitola Agregace.

UML notace

UML notace pro kompozici (horní) a agregaci (dolní). +more Všimněte si, že příklady ukazují abstrahované datové modely, bez ohledu na skutečnost, že v reálném světě asociace „karburátor ⇒ auto“ znamená, že karburátor může být z auta vytažen a bude dále existovat, i když je auto zničeno. .

V UML, existují dva způsoby modelování kompozice: kompozice a agregace. V UML má slovo kompozice užší význam než v běžném jazyce.

C++ kód níže ukazuje, jak by měl zdrojový kód vypadat.

// Kompozice class Auto { private:

// Auto má karburátor. // Karburátor je vytvořen, když je vytvořeno Auto, // Pokud zničíme (smažeme) auto, je zničen (smazán) i karburátor Karburátor karb;

};

// Agregace třída Rybník { private:

// Rybník není vlastníkem kachny, // má odkazy na jiné kachny které jsou někde jinde std::vector kachny; };

Kompozitní typy v C

Toto je příklad kompozice v C.

struct Person { int age; char *name; enum {job_seeking, professional, non_professional, retired, student} employment; };

Rekurzivní kompozice

Objekty mohou být složené rekurzivně pomocí rekurzivních typů, nebo odkazů.

Jedna implementace pro rekurzivní kompozici je taková, kde každý objekt má odkazy na ostatní stejného typu.

Reference

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top