Klassediagram ( eng. klassediagram ) - et strukturdiagram af UML - modelleringssproget , der demonstrerer den generelle struktur af systemklassehierarkiet , deres samarbejder, attributter (felter), metoder , grænseflader og relationer (relationer) mellem dem. Det er meget udbredt, ikke kun til dokumentation og visualisering, men også til at designe gennem forlæns eller omvendt konstruktion [1] .
Formålet med at skabe et klassediagram er en grafisk repræsentation af den statiske struktur af de deklarative elementer i systemet (klasser, typer osv.) Det indeholder også nogle adfærdselementer (f.eks. operationer), men deres dynamik bør afspejles i diagrammer af andre typer ( kommunikationsdiagrammer , tilstandsdiagrammer). For nemheds skyld kan klassediagrammet også suppleres med en repræsentation af pakker , herunder indlejrede [2] .
Når udvikleren repræsenterer enheder i den virkelige verden, skal udvikleren afspejle deres nuværende tilstand, deres adfærd og deres gensidige relationer. På hvert trin foretages abstraktion fra uvæsentlige detaljer og begreber, der ikke gælder for virkeligheden (performance, indkapsling , synlighed osv.). Klasser kan ses fra forskellige niveauers perspektiv. Som regel er de kendetegnet ved tre hovedniveauer: det analytiske niveau, designniveauet og implementeringsniveauet [3] :
Klassediagrammet er et nøgleelement i objektorienteret modellering. I diagrammet er klasserne præsenteret i kasser, der indeholder tre komponenter:
UML giver mekanismer til at repræsentere klassemedlemmer, såsom attributter og metoder, og yderligere information om dem.
For at indstille synligheden af klassemedlemmer (det vil sige til attributter eller metoder), skal disse symboler placeres før navnet på medlemmet: [4]
+ | Offentlig |
- | Privat (privat) |
# | Beskyttet |
/ | Afledt (kan kombineres med andre) |
~ | Pakke |
UML definerer to typer scopes for medlemmer: instans og klassificerer , hvor sidstnævnte har understregede navne . [5]
Navnet er understreget for at angive klassificeringsmedlemskab , ellers antages omfanget at være standardomfanget.
En relation er en speciel type logisk relation mellem entiteter, vist i klasse- og objektdiagrammer . UML har følgende typer relationer:
Afhængighed betegner et forhold mellem klasser, således at en ændring i specifikationen af udbyderklassen kan påvirke den afhængige klasses arbejde, men ikke omvendt.
ForeningEn association viser, at objekter af en enhed (klasse) er forbundet med objekter fra en anden enhed på en sådan måde, at du kan flytte fra objekter af en klasse til en anden. Det er et generelt tilfælde af sammensætning og aggregering.
For eksempel har klassen Person og klassen Skole en forening, da en person kan læse på en skole. En forening kan få navnet "studerer i".
Dobbeltforeninger er repræsenteret af en linje uden pile i enderne, der forbinder to klasseblokke. Sammenslutninger af højere grad har mere end to ender og er repræsenteret ved linjer, hvoraf den ene ende går til klasseblokken og den anden til den fælles diamant. I den ensrettede tilknytningsvisning tilføjes en pil for at angive retningen af tilknytningen.
En tilknytning kan navngives, og roller, tilknytninger, indikatorer, multiplikatorer, synlighed eller andre egenskaber kan mærkes i enderne af linjen, der repræsenterer den.
AggregationAggregation er en slags association i forholdet mellem helheden og dens dele. Som tilknytningstype kan en aggregering navngives. En aggregeringsrelation kan ikke omfatte mere end to klasser (container og indhold).
Aggregation opstår, når en klasse er en samling eller beholder af andre. Og som standard kaldes aggregering aggregering ved reference , det vil sige, når levetiden for de indeholdte klasser ikke afhænger af levetiden for den indeholdende klasse. Hvis beholderen er ødelagt, er dens indhold ikke det.
Grafisk er en aggregering repræsenteret af en tom diamant på en klasseboks og en linje fra den diamant til den indeholdende klasse.
SammensætningKomposition er en strengere version af aggregering. Også kendt som aggregering efter værdi.
Sammensætning er meget afhængig af levetiden for containerklasseforekomster og indeholdte klasseforekomster. Hvis beholderen destrueres, så vil alt dens indhold også blive ødelagt.
Grafisk repræsenteret som aggregering, men med en udfyldt diamant.
Forskelle mellem sammensætning og aggregeringLad os tage et illustrativt eksempel. Rummet er en del af lejligheden, derfor er sammensætningen velegnet her, fordi rummet ikke kan eksistere uden en lejlighed. Og fx er møbler ikke en integreret del af lejligheden, men samtidig indeholder lejligheden møbler, så sammenlægning bør bruges.
Generalisering viser, at den ene af de to beslægtede klasser ( subtype ) er en speciel form af den anden ( supertype ), som kaldes en generalisering af den første. I praksis betyder det, at enhver instans af undertypen også er en instans af supertypen. For eksempel: dyr er supertypen af pattedyr, som igen er supertypen af primater, og så videre. Dette forhold beskrives nemmest med sætningen "A er B" (primater er pattedyr, pattedyr er dyr).//
Grafisk er generaliseringen repræsenteret af en linje med en tom trekant ved supertypen.
Generalisering er også kendt som en arv eller " er et " forhold (eller "er et" forhold).
ImplementeringImplementering er et forhold mellem to elementer i modellen, hvor det ene element ( kunde ) implementerer adfærden specificeret af det andet ( udbyder ). Erkendelse er et hel-delt forhold. Grafisk er implementering repræsenteret på samme måde som arv, men med en stiplet linje.
En udbyder er normalt en abstrakt klasse eller en grænsefladeklasse.
En afhængighed er en svag form for brugsforhold, hvor en ændring i specifikationen af den ene medfører en ændring i specifikationen af den anden uden nødvendigvis at blive omvendt. Opstår, når et objekt optræder, for eksempel i form af en parameter eller lokal variabel.
Grafisk repræsenteret af en stiplet pil, der går fra det afhængige element til det, det afhænger af.
Der er flere navngivne varianter.
En afhængighed kan være mellem instanser, klasser eller en instans og en klasse.
Forbedring af forholdForfining har at gøre med detaljeringsgraden. En pakke forfiner en anden, hvis den indeholder de samme elementer, men i en mere detaljeret repræsentation. For eksempel, når du skriver en bog, vil du sandsynligvis begynde med at formulere en sætning, der kort opsummerer indholdet af hvert kapitel. Lad os antage, at resuméet for hvert kapitel er inkluderet som et separat element i "Proposal"-pakken. Lad os også antage, at "Completed Book" er en pakke, hvis elementer er afsluttede kapitler. I denne sammenhæng er "Completed Book"-pakken en forfining af "Offer"-pakken.
Power of relations (Multiplicitet)Kardinaliteten af relationen (multiplikatoren) betyder antallet af links mellem hver klasseinstans (objekt) i begyndelsen af linjen med klasseinstansen i slutningen. Der er følgende typiske tilfælde:
notation | forklaring | eksempel |
0...1 | Nul eller én instans | Katten har en ejer. |
en | Ét eksemplar påkrævet | kat har en mor |
0..* eller * | Nul eller flere forekomster | en kat kan have killinger eller ej |
en..* | Et eller flere tilfælde | en kat har mindst ét sted, hvor den sover |
Unified Modeling Language | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
| |||||||||||
|