Min gästblogg
den 7 mars handlade om tre grader av koppling mellan två klasser (på
gränsen till avancerad UML), som i sin tur leder till koppling (länk) mellan
objekt (pekare, referens, främmande nyckel, nästlat/dedicerat objekt, osv).
Generalisering är en annan vanlig relation mellan klasser, men strukturerar
enbart klassträdet – på objektnivå rör den sig inom ett och samma objekt (som
instansieras från klassen och därmed klassens hela gren i klassträdet).
Till skillnad från de övriga tre relationerna medför alltså
generalisering inte en länk mellan två objekt. I vanliga fall.
Mindre vanliga fall, i gränslandet mot avancerad modellering,
särskilt multipelt arv (jfr. kurs T2715)
resp multipel generalisering (T2716)
är ofta praktiska att ersätta med association mellan klasser, vilket leder även
till länk mellan olika objekt. Om vi tar multipelt arv som exempel, så ligger
olika varianter av rollklasser nära till hands om man vill ersätta
generaliseringarna med associationer. Hur ser skillnaden ut i UML?
Anta att en aktie i vårt system fungerar dels som ett
värdepapper, dels som en röstsedel på bolagsstämman, och dels som säkerhet i
kredithantering. Därmed kan Aktie ärva attribut och operationer från alla de
tre övriga:
Bild 1:
Multipelt arv till Aktie.
Multipelt arv har både fördelar (främst för analytikern) och
nackdelar (för arkitekten – plattformsberoende/portabilitetsproblem, och för
designern – hantering av arvskonflikter mm). Rollklasser är ett smidigt
alternativ (särskilt om det fanns även attribut i superklasserna, inte bara
operationer). Klassen Aktie kopplas till de tre övriga – fast numera som
rollklasser, inte längre superklasser (roller plockar dessutom ytterligare
pluspoäng om objektlivscyklerna är viktiga - tillstånd och tillståndsövergångar
hänger nämligen oftast ihop med roller). Märk väl att ingen av rollklasserna i
diagrammet nedan (Bild 2) förblev abstrakt (ingen kursivering), dvs alla instansierar
objekt:
Bild 2:
Aktie med rollklasser ( «nyckelorden» och färgerna följer Peter
Coad’s analysmönster DNC).
Rollklasser brukar påverka en vanlig arkitektur-tradeoff: de
förbättrar portabilitet, modifierbarhet, återanvändbarhet, och ofta
tillförlitlighet (4 små separata objekt i stället för 1 stort objekt av
Aktieklassen), men, allt annat oförändrat, till priset av sämre prestanda under
belastningstoppar (mätt i svarstider, antal transaktioner per sekund, och ”miss
rate” dvs andel requests som inte fått plats i inkön). Inget jätteproblem på en
bank som enkelt köper extrakapacitet löpande i molnet, men mer problematiskt
för en rymd/flyg- eller fordonstillverkare där det är hård realtid som gäller
samtidigt som minnes- och processorkapacitet ombord är begränsad.
Ytterligare nyansexempel kommer i höst.
konsult, Kiseldalen.com
UML 2 Professional, OCUP Advanced Level
(certifikatnivå 3 av 3)
Huvudförfattare
UML
Xtra Light: How to Specify Your SW Requirements
Milan samarbetar med Informator sedan våren 1996 inom
modellering, UML, arkitektur, krav, analys och design. Håller f.n. kurser i Arkitektur,
i modellering (T2715,
T2716),
och i februari 2013 höll han också Informators fullsatta Frukostseminarium om användningsfall.
Skicka en kommentar
Trevligt att du vill dela med dig av dina åsikter! Tänk på att hålla på "Netiketten" och använda vårdat språk.