Search
Úkolem diagramu tříd je dekompozice problému do dílčích částí reprezentovanými třídami.
Nejprve je potřeba vytvořit třídy odpovídající aktorům a užitím z diagramu užití. Každá třída má nějaké vlastnosti (např. osoba má jméno) a metody (u osoby může být volána metoda getJmeno()). Vlastnosti a metody mají definovánu viditelnost:
Obecně platí, že viditelnost by měla být ta nejpřísnější možná.
V dalším kroku je vhodné do class diagramu vložit hierarchické vazby - musí odpovídat diagramu užití
Dále identifikujeme vazby mezi objekty. Tyto vazby označujeme jako asociační. Vazba může být směrová/orientovaná (je “důležitější spíše” v jednom směru); označena čarou s nevyplněnou šipkou; nebo nesměrová/neorientovaná (pouze čára). U asociace by měla být definována multiplicita (na každé straně).
Speciálním případem asiciační vazby je vazba, která má definovány nějaké další vlastnosti, popřípadě metody. Takovou vazbu realizujeme asociační třídou (např. diplomka).
Asociace volně svazuje třídy. Mnohdy je ale potřeba naznačit, že vazba označuje vztah “podřazenosti” tříd, např. instance jedné třídy jsou (jednou z) částí třídy druhé. Auto má 4 kola, Profesor vede přednášky. Mnohdy instance konkrétní třídy má zasadní podíl na (kvalitativních) parametrech celku (Osoba má Srdce). Takouvou asociaci označujeme jako agregaci, označujeme ji přidáním prázdného kosočtverce.
Z programátorského hlediska, třídy spojené aggregační vazbou musí být instancovány nejpozději v průběhu volání konstruktoru “nadřazené” třídy.
Speciálním případem agregace je kompozice. Ta navíc udává, že instance obou tříd tvoří nedělitelný celek, jedna bez druhé nemá smyslu. V našem případě, Osoba bez Srdce má natolik omezenou funkcionalitu, že uvažování takové kombinace je bezpředmětné. Kompozice znemožňuje u instancované třídy provést změnu třídu nadřazené, deskrukce instance jedné třídy vede k destrukci instance(í) třídy druhé. Kompozici značíme na čáře plným kosočtvercem .
Rozdíl mezi agregací a kompozicí je patrný z následujícího příkladu: Auto má 4 Kola. Ta ale můžu vyměnit a pořád auto zůstane autem. Kola jsou součástí Auta, auto bez kol má omezenou funkcionalitu (tedy auto kola mít musí). To je agregace… Auto musí mít i motor. Krom toho, pokud je motor zničen např. provozem, celý celek Auto má zásadně omezenou funkcionalitu, toto omezení znemožňuje funkcionalitu celého celku. Parametry motoru zásadně ovlivňují parametry auta. Zlikvidujeme-li auto, zlikvidujeme i motor (a obráceně) - proto kompozice.
Součástí diagramu tříd jsou i rozhraní, vazby typu používá, atd. Tyto vazby se označují přerušovanou čarou.
Záleží na úhlu pohledu… Diagram není úplně správně, nalezení nedokonalostí však ponechám na Vás. Klíč pro hledání: nemohu o tom říci více?