|
Častá chyba při návrhu názvů tříd a jaký je správný postup jejich vyhledávání
autor: RNDr. Ilja Kraval, listopad 2011
Object Consulting s.r.o.
Server objektových technologií
Vzor DichoTomie třída instance
Jedním z nejdůležitějších vzorů návrhu informačního systému je vzor Dichotomie třída instance. O tomto vzoru je pojednáno velmi podrobně v knize Analytické modelování pomocí UML v praxi, která je volně ke stažení zde.
Protože je tento vzor také jedním ze základních vzorů návrhu IS, je mu mimo jiné věnována náležitá pozornost v příkladech internetového školení Kurz profesního růstu analytika AM ADVANCED, blíže viz zde.
Uvedený vzor zdůrazňuje všeobecně platnou myšlenku platnou pro každý návrh IS. Vzor Dichotomie třída-instance vyplývá přímo z axiomu opětovné použitelnosti neboli re-use:
Nechť potřebujeme definovat vlastnosti u nějakého prvku v systému. Vzor Dichotomie třída-instance předepisuje postup, při němž se tyto vlastnosti prvku nedefinují přímo v tomto prvku, ale jakoby oklikou, mimo něj jinde, v tzv. třídě, tj. v ní se tyto vlastnosti prvku definují. Následně se daný prvek prohlásí za prvek pocházející z této třídy a proto má tyto vlastnosti definované v této třídě (přebírá tyto vlastnosti díky příslušnosti ke třídě). Vlastnosti prvku jsou tedy dány příslušností tohoto prvku ke třídě, kde jsou tyto vlastnosti definovány.
Je zřejmé, že tento postup definice vlastností prvků jakousi „delší oklikou“ přes třídu má svůj specifický účel spočívající v opětovné použitelnosti: Pro další prvky stejných vlastností nemusíme již zavádět znovu a znovu definici vlastností těchto prvků, stačí se odkázat na „původ“ z těchto tříd.
Ve svém důsledku to znamená, že prostor uvnitř IS je vlastně rozdělen na dva prostory: Na prostor tříd a na prostor z nich vzniklých instancí. Prostoru tříd se také říká statická část aplikace a prostoru instancí dynamická část aplikace. Je vcelku zřejmé, že samotný program, tedy kód, je realizací právě prostoru tříd, tedy kód realizuje onu statickou část aplikace.
Jedním z hlavních úkolů analytika je nacházet třídy v prostoru statickém, tj. v prostoru tříd.
Je to úkol poměrně dost obtížný, protože paradoxně tyto třídy při pohledu na již běžící systém nevidíme. Pokud pracujeme se systémem, tak se nám systém projevuje až instancemi, které z těchto tříd pocházejí. Například pokud se zamyslíme nad větou „obsluze se zobrazí seznam fyzických osob“, potom v této větě je evidentně zřetelné, že řeč je o instancích a nikoliv o třídě.
Analytik tak dostává nesnadný úkol: Musí navrhnout „meta-pravidla“, tj. třídy pro instance, tato pravidla jako projev žijícího systému sice nevidíme, ale budou se programovat.
Chyba názvu tříd POMOCÍ podstatnÉHO jménA v množném čísle
Poměrně dost často jsem se ve své praxi (ať už jako šéf analytik anebo externí konzultant resp. školitel v oblasti UML) setkal velmi častou chybou návrhu názvů tříd pomocí podstatného jména v množném čísle.
Autor takového modelu nazývá třídy například takto: „Fyzické osoby“, „Právnické osoby“, „Faktury“, „Stavy dokladu“ apod. Samozřejmě jedná se o chybu. Její podstata spočívá v záměně prostoru instancí a tříd, tedy ve špatném pochopení rozdílu mezi těmito prostory.
Pokud zavádíme nikoliv abstraktní třídu, tedy konkrétní třídu, tak v té chvíli se už ze samé povahy věci nacházíme v prostoru tříd, tedy pravidel, předpisů. Pokud zavádíme konkrétní třídu, tak si samozřejmě v duchu představíme (a doporučuji co nejdříve!) instance z těchto tříd. Tady je právě háček zmíněné chyby: Pokud hovoříme o seznamu instancí, tedy o prvcích, potom již nejsme v prostoru tříd, tedy v prostoru předpisů, ale v prostoru realizací těchto předpisů, v dynamickém prostoru instancí. Vyplývá z toho důležitý závěr:
Závěr
Podstatná jména v množném čísle nepoužívejte pro třídy, ale vyhraďte si je pro označení seznamu instancí.
Pokud tedy například hovoříme o třídě „Faktura“, tak v té chvíli máme na mysli předpis, který určuje vlastnosti budoucích instancí v systému. Pokud však řekneme „Faktury“, tak již opouštíme prostor tříd a máme na mysli již instance z předpisu vzniklých.
Konec první části článku (Příště pokračování: Jak se správně vyhledávají třídy)
|