Klassdiagram ( eng. class diagram ) - ett strukturdiagram över UML - modelleringsspråket , som visar den allmänna strukturen för systemklasshierarkin , deras samarbeten, attribut (fält), metoder , gränssnitt och relationer (relationer) mellan dem. Det används i stor utsträckning inte bara för dokumentation och visualisering, utan också för att designa genom framåt- eller bakåtteknik [1] .
Syftet med att skapa ett klassdiagram är en grafisk representation av den statiska strukturen för de deklarativa elementen i systemet (klasser, typer etc.) Det innehåller också vissa beteendeelement (till exempel operationer), men deras dynamik bör återspeglas i diagram av andra typer ( kommunikationsdiagram , tillståndsdiagram). För att underlätta uppfattningen kan klassdiagrammet också kompletteras med en representation av paket , inklusive kapslade [2] .
När utvecklaren representerar enheter i den verkliga världen måste de återspegla deras nuvarande tillstånd, deras beteende och deras ömsesidiga relationer. I varje skede görs abstraktion från oviktiga detaljer och begrepp som inte gäller verkligheten (prestanda, inkapsling , synlighet , etc.). Klasser kan ses från olika nivåers perspektiv. Som regel särskiljs de av tre huvudsakliga: den analytiska nivån, designnivån och implementeringsnivån [3] :
Klassdiagrammet är ett nyckelelement i objektorienterad modellering. I diagrammet presenteras klasserna i rutor som innehåller tre komponenter:
UML tillhandahåller mekanismer för att representera klassmedlemmar, såsom attribut och metoder, och ytterligare information om dem.
För att ställa in synlighet för klassmedlemmar (det vill säga för alla attribut eller metoder), måste dessa symboler placeras före namnet på medlemmen: [4]
+ | offentlig |
- | Privat (privat) |
# | Skyddad |
/ | Härledd (kan kombineras med andra) |
~ | Paket |
UML definierar två typer av omfattningar för medlemmar: instans och klassificerare , den senare har understrukna namn . [5]
Namnet är understruket för att indikera klassificeraremedlemskap , annars antas omfattningen vara standardomfattningen.
En relation är en speciell typ av logisk relation mellan entiteter, som visas i klass- och objektdiagram . UML har följande typer av relationer:
Beroende betecknar ett förhållande mellan klasser så att en förändring i specifikationen för leverantörsklassen kan påverka den beroende klassens arbete, men inte vice versa.
AssociationEn association visar att objekt av en entitet (klass) är associerade med objekt av en annan entitet på ett sådant sätt att du kan flytta från objekt av en klass till en annan. Det är ett allmänt fall av sammansättning och aggregering.
Till exempel har klassen Person och klassen Skola en förening, eftersom en person kan studera på en skola. En förening kan få namnet "studerar i".
Dubbla associationer representeras av en linje utan pilar i ändarna, som förbinder två klassblock. Associationer av högre grad har mer än två ändar och representeras av linjer, vars ena ände går till klassblocket och den andra till den vanliga diamanten. I den enkelriktade associationsvyn läggs en pil till för att indikera associationens riktning.
En association kan namnges och roller, tillhörigheter, indikatorer, multiplikatorer, synlighet eller andra egenskaper kan märkas i ändarna av raden som representerar den.
AggregationAggregation är ett slags association i förhållandet mellan helheten och dess delar. Som en associationstyp kan en aggregering namnges. En aggregeringsrelation kan inte inkludera mer än två klasser (behållare och innehåll).
Aggregation uppstår när en klass är en samling eller behållare av andra. Och som standard kallas aggregering aggregering genom referens , det vill säga när livslängden för de inneslutna klasserna inte beror på livslängden för den innehållande klassen. Om behållaren förstörs, är dess innehåll inte det.
Grafiskt representeras en aggregering av en tom diamant på en klassruta och en linje från den romben till den innehållande klassen.
KompositionKomposition är en striktare version av aggregering. Även känd som aggregering efter värde.
Kompositionen är starkt beroende av livslängden för containerklassinstanser och inneslutna klassinstanser. Om behållaren förstörs kommer allt innehåll också att förstöras.
Grafiskt representerad som aggregering, men med en fylld diamant.
Skillnader mellan sammansättning och aggregeringLåt oss ta ett illustrativt exempel. Rummet är en del av lägenheten, därför är sammansättningen lämplig här, eftersom rummet inte kan existera utan en lägenhet. Och till exempel är möbler inte en integrerad del av lägenheten, men samtidigt innehåller lägenheten möbler, så aggregering bör användas.
Generalisering visar att en av de två relaterade klasserna ( subtyp ) är en speciell form av den andra ( supertyp ), som kallas en generalisering av den första. I praktiken betyder detta att varje instans av subtypen också är en instans av supertypen. Till exempel: djur är supertypen av däggdjur, som i sin tur är supertypen av primater, och så vidare. Detta förhållande beskrivs enklast med frasen "A är B" (primater är däggdjur, däggdjur är djur).//
Grafiskt representeras generaliseringen av en linje med en tom triangel vid supertypen.
Generalisering är också känt som ett arv eller " är ett " förhållande (eller "är ett" förhållande).
ImplementeringImplementering är en relation mellan två element i modellen, där ett element ( kund ) implementerar beteendet som specificerats av det andra ( leverantör ). Förverkligande är en hel-del relation. Grafiskt representeras implementering på samma sätt som arv, men med en prickad linje.
En leverantör är vanligtvis en abstrakt klass eller en gränssnittsklass.
Ett beroende är en svag form av användningsförhållande där en förändring i specifikationen för den ena innebär en förändring av den andras specifikation utan att nödvändigtvis vändas. Uppstår när ett objekt visas, till exempel i form av en parameter eller lokal variabel.
Grafiskt representerad av en streckad pil som går från det beroende elementet till det som det beror på.
Det finns flera namngivna varianter.
Ett beroende kan vara mellan instanser, klasser eller en instans och en klass.
Förfining av relationerFörfining har att göra med detaljnivån. Ett paket förfinar ett annat om det innehåller samma element men i en mer detaljerad representation. Till exempel, när du skriver en bok, kommer du förmodligen att börja med att formulera en mening som kort sammanfattar innehållet i varje kapitel. Låt oss anta att sammanfattningen för varje kapitel ingår som ett separat element i "Proposal"-paketet. Låt oss också anta att "Completed Book" är ett paket vars element är avslutade kapitel. I detta sammanhang är "Completed Book"-paketet en förfining av "Offer"-paketet.
Power of relations (Multiplicity)Relationens kardinalitet (multiplikator) betyder antalet länkar mellan varje klassinstans (objekt) i början av raden med klassinstansen i slutet. Det finns följande typiska fall:
notation | förklaring | exempel |
0...1 | Noll eller en instans | Katten har en ägare. |
ett | Ett exemplar krävs | katten har en mamma |
0..* eller * | Noll eller fler instanser | en katt kan ha kattungar eller inte |
ett..* | En eller flera instanser | en katt har minst en plats där den sover |
Unified Modeling Language | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
| |||||||||||
|