Hledejte v chronologicky řazené databázi studijních materiálů (starší / novější příspěvky).

28. Odvozené třídy: předkové, potomci, dědictví.

Vztahy mezi třídami:
Mezi třídami existují 3 druhy vztahů (vazeb):
Agregace - "obsažení" (Anglicky aggregation) Jestliže třída A obsahuje třídu B, potom instance třídy A v sobě obsahují instance třídy B. Například v každé instanci třídy počítač existuje instance třídy procesor. Znázorněno v diagramu:

Asociace - "Link" (Anglicky association) Jestliže Třída A spojuje(asociuje) třídu B, potom instance třídy A nějakým způsobem musejí "vědět" o instancích třídy B. Zná-li objekt nějaký jiný objekt, znamená to, že jej může používat, zasílat mu zprávy a podobně. Například instance třídy učitel zná instance třídy žák. Není zde vhodná vazba agregace, protože učitel neobsahuje žáky uvnitř sebe. Asociace je obecnějsí vazba než agregace. Znázorněno v třídním diagramu:

Dědičnost - "Specializace" (Anglicky inheritance) Třída A dědí ze třídy B, jestliže třída A je podmnožinou třídy B. Třída A se nazývá podtřídou třídy B, a třída B se nazývá nadtřídou třídy A. V tomto případě instance třídy A jsou zároveň instancemi třídy B, naopak to však nemusí platit. Například třída okna v grafickém OS je nadtřídou třídy dialogových oken, nadtřídou třídy modálních oken a podobně. Znázorněno v třídním diagramu:

Rozdíl mezi asociaci a agregaci je zřejmý. Při agregaci objekty vždy obsahují jiné objekty v sobě. Při vztahu agregace (A agreguje B) by měly cizí objekty požadovat služby instancí agregované třídy (Třídy B) jen pomocí služeb instancí třídy A. Často se chybně zaměňuje mezi agregací, a dědičností. Je-li vztah mezi objekty "má", nebo "vlastní", potom se jedná agregaci. Například řetězec má (vlastní) znaky. Naopak je-li mezi objekty vztah "je", potom se jedná o dědičnost. Například dialogové okno je okno.

Žádné komentáře:

Okomentovat