Diagram tříd

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 9. září 2018; kontroly vyžadují 28 úprav .

Diagram tříd ( angl.  class diagram ) - strukturální diagram modelovacího jazyka UML , demonstrující obecnou strukturu hierarchie tříd systému , jejich kooperace, atributy (pole), metody , rozhraní a vztahy (vztahy) mezi nimi. Je široce používán nejen pro dokumentaci a vizualizaci, ale také pro projektování prostřednictvím dopředného nebo zpětného inženýrství [1] .

Úvod

Účelem vytvoření diagramu tříd je grafické znázornění statické struktury deklarativních prvků systému (třídy, typy atd.) Obsahuje také některé prvky chování (například operace), ale jejich dynamika by se měla odrážet. ve schématech jiných typů ( komunikační schémata , stavová schémata). Pro usnadnění vnímání lze diagram tříd také doplnit o reprezentaci balíčků , včetně vnořených [2] .

Při reprezentaci entit v reálném světě musí vývojář reflektovat jejich aktuální stav, jejich chování a jejich vzájemné vztahy. V každé fázi se abstrakce provádí z nedůležitých detailů a konceptů, které se nevztahují na realitu (výkon, zapouzdření , viditelnost atd.). Na třídy lze nahlížet z pohledu různých úrovní. Zpravidla je rozlišují tři hlavní: analytická úroveň, úroveň návrhu a úroveň implementace [3] :

Prvky diagramu

Diagram tříd je klíčovým prvkem v objektově orientovaném modelování. V diagramu jsou třídy uvedeny v rámečcích obsahujících tři komponenty:

UML poskytuje mechanismy pro reprezentaci členů třídy, jako jsou atributy a metody, a další informace o nich.

Viditelnost

Chcete-li nastavit viditelnost členů třídy (tedy jakýchkoli atributů nebo metod), musí být před jméno člena umístěny tyto symboly: [4]

+ Veřejnost
- Soukromé (soukromé)
# Chráněný
/ Odvozené (lze kombinovat s jinými)
~ Balík

Rozsah

UML definuje dva typy oborů pro členy: instance a klasifikátor , přičemž klasifikátor má podtržené názvy . [5]

Název je podtržen , aby označoval členství v klasifikátoru , jinak se předpokládá, že rozsah je výchozí.

Vztahy

Vztah je speciální typ logického vztahu mezi entitami, který je zobrazen v diagramech tříd a objektů . UML má následující druhy vztahů:

Vztahy mezi objekty třídy

Závislost

Závislost označuje vztah mezi třídami, takže změna specifikace třídy poskytovatele může ovlivnit práci závislé třídy, ale ne naopak.

Sdružení

Přidružení ukazuje, že objekty jedné entity (třídy) jsou spojeny s objekty jiné entity takovým způsobem, že můžete přecházet z objektů jedné třídy do druhé. Je to obecný případ skládání a agregace.

Například třída Osoba a třída Škola mají asociaci, protože člověk může studovat na škole. Sdružení lze pojmenovat „studuje v“.

Dvojité asociace jsou znázorněny čárou bez šipek na koncích spojující dva bloky třídy. Asociace vyššího stupně mají více než dva konce a jsou reprezentovány čarami, z nichž jeden konec směřuje k bloku třídy a druhý ke společnému kosočtverci. V pohledu jednosměrného přidružení je přidána šipka označující směr přidružení.

Přidružení lze pojmenovat a role, přidružení, indikátory, multiplikátory, viditelnost nebo jiné vlastnosti mohou být označeny na koncích řádku, který je představuje.

Agregace

Agregace  je druh asociace ve vztahu mezi celkem a jeho částmi. Jako typ asociace lze pojmenovat agregaci. Jeden agregační vztah nemůže zahrnovat více než dvě třídy (kontejner a obsah).

K agregaci dochází, když je jedna třída kolekcí nebo kontejnerem jiných. A ve výchozím nastavení se agregace nazývá agregace podle odkazu , to znamená, když životnost obsažených tříd nezávisí na životnosti obsažené třídy. Pokud je kontejner zničen, pak jeho obsah není.

Graficky je agregace reprezentována prázdným kosočtvercem na poli třídy a čárou z tohoto kosočtverce do obsahující třídy.

Složení

Kompozice  je přísnější verze agregace. Také známý jako agregace podle hodnoty.

Kompozice silně závisí na době životnosti instancí třídy kontejneru a instancí obsažených tříd. Pokud je kontejner zničen, pak bude zničen i veškerý jeho obsah.

Graficky znázorněno jako agregace, ale s vyplněným diamantem.

Rozdíly mezi složením a agregací

Vezměme si názorný příklad. Místnost je součástí bytu, proto je zde kompozice vhodná, protože místnost bez bytu nemůže existovat. A například nábytek není nedílnou součástí bytu, ale zároveň je v bytě nábytek, takže by se mělo používat agregace.

Třídní vztahy

Generalizace (dědičnost)

Zobecnění ukazuje, že jedna ze dvou příbuzných tříd ( podtyp ) je speciální formou druhé ( nadtyp ), která se nazývá zobecnění první. V praxi to znamená, že jakákoli instance podtypu je zároveň instancí nadtypu. Například: zvířata jsou supertypem savců, kteří jsou zase supertypem primátů a tak dále. Tento vztah lze nejsnáze popsat frází „A je B“ (primáti jsou savci, savci jsou zvířata).//

Graficky je zobecnění znázorněno čárou s prázdným trojúhelníkem u nadtypu.

Zobecnění je také známé jako dědičnost nebo „ je “ vztah (nebo „je“ vztah).

Implementace

Implementace je vztah mezi dvěma prvky modelu, ve kterém jeden prvek ( zákazník ) implementuje chování specifikované druhým ( poskytovatelem ). Realizace je vztah celé části. Graficky je implementace znázorněna stejným způsobem jako dědičnost, ale tečkovanou čarou.

Poskytovatel je obvykle abstraktní třída nebo třída rozhraní.

Obecný vztah

Závislost

Závislost je slabá forma uživatelského vztahu, ve kterém změna ve specifikaci jednoho znamená změnu ve specifikaci druhého, aniž by byla nutně obrácena. Vyskytuje se, když se objekt objeví například ve formě parametru nebo lokální proměnné.

Graficky znázorněno přerušovanou šipkou přecházející od závislého prvku k prvku, na kterém závisí.

Existuje několik pojmenovaných variant.

Závislost může být mezi instancemi, třídami nebo instancí a třídou.

Upřesnění vztahů

Upřesnění souvisí s úrovní detailů. Jeden balíček zpřesňuje jiný, pokud obsahuje stejné prvky, ale v podrobnější reprezentaci. Například při psaní knihy pravděpodobně začnete formulací věty, která stručně shrnuje obsah každé kapitoly. Předpokládejme, že shrnutí pro každou kapitolu je zahrnuto jako samostatný prvek v balíčku "Návrh". Předpokládejme také, že „Completed Book“ je balíček, jehož prvky jsou dokončené kapitoly. V této souvislosti je balíček „Dokončená kniha“ zdokonalením balíčku „Nabídka“.

Síla vztahů (Multiplicity)

Mohutnost vztahu (násobitel) znamená počet vazeb mezi každou instancí třídy (objektem) na začátku řádku s instancí třídy na jejím konci. Existují následující typické případy:

notový zápis vysvětlení příklad
0..1 Nula nebo jedna instance Kočka má majitele.
jeden Vyžaduje se jedna kopie kočka má jednu matku
0..* nebo * Žádný nebo více případů kočka může nebo nemusí mít koťata
jeden..* Jeden nebo více případů kočka má alespoň jedno místo, kde spí

Viz také

Poznámky

  1. Booch, Rambeau, Jacobson, 2006 , Class Diagram, str. 120.
  2. Butch, Jacobson, Rambo, 2006 , diagram tříd (diagram tříd), s. 226.
  3. Booch, Jacobson, Rambeau, 2006 , Classes, s. 68.
  4. Referenční karta UML, verze 2.1.2 , Holub Associates, srpen 2007 , < http://www.holub.com/goodies/uml/ > . Získáno 12. března 2011. Archivováno 2. března 2010 na Wayback Machine 
  5. Nadstavba OMG Unified Modeling Language (OMG UML) Archivována 13. března 2016 na Wayback Machine , verze 2.3: květen 2010. Staženo 23. září 2010.

Zdroje

  • G. Booch, D. Rambo, I. Jacobson. jazyk UML. Uživatelská příručka = Uživatelská příručka sjednoceného modelovacího jazyka. - 2. - M.  : DMK Press, 2006. - 496 s. — ISBN 5-94074-334-X .
  • G. Booch, A. Jacobson, D. Rambo,. UML. Classic CS = Referenční příručka jednotného modelovacího jazyka. - 2. - Petrohrad.  : "Petr", 2006. - 736 s. — ISBN 5-469-00599-2 .

Odkazy