What do Asterisks mean in a UML diagram?

Stjernens Betydning i et UML-diagram

19/04/2010

Rating: 4.91 (8708 votes)

Unified Modeling Language, bedre kendt som UML, er det visuelle sprog, der bruges inden for softwareudvikling til at specificere, visualisere, konstruere og dokumentere artefakterne i et softwaresystem. Det kan sammenlignes med en arkitekts blåtryk for en bygning; det giver en standardiseret måde at se på et systems design. Et af de mest almindelige, men potentielt forvirrende symboler for nybegyndere, er stjernen (*). Dette symbol er afgørende for at forstå forholdet mellem forskellige dele af et system. I denne dybdegående artikel vil vi ikke kun afdække betydningen af stjernen, men også udforske de bredere koncepter i UML, som den er en del af, for at give dig en solid forståelse af, hvordan man læser og forstår disse essentielle diagrammer.

What do Asterisks mean in a UML diagram?
As in a sequence diagram, an asterisk indicates iteration. There are three broad categories of diagrams. include activity, use-case, and state diagrams. include Sequence and Collaboration diagrams. Collaboration diagrams are called "Communication Diagrams" in UML 2. A few parts of UML aren't shown here.
Indholdsfortegnelse

Hvad er UML egentlig?

Før vi dykker ned i specifikke symboler, er det vigtigt at forstå UML's rolle. UML er ikke en designproces eller en metode; det er udelukkende en notation. Det er et sæt af grafiske notationsteknikker, der skaber en visuel model af et softwaresystem. Tænk på det som et fælles sprog, som udviklere, analytikere og interessenter kan bruge til at kommunikere klart og utvetydigt om komplekse systemer. Ved at bruge UML kan teams undgå misforståelser og sikre, at alle har den samme vision for systemets struktur og adfærd. UML er opdelt i forskellige diagramtyper, der hver især fokuserer på et specifikt aspekt af systemet, såsom dets statiske struktur eller dynamiske adfærd.

Stjernens Hemmelighed: Kardinalitet og Multiplicitet

Nu til kernen af sagen: stjernen (*). I UML-diagrammer, især i klasse-diagrammer, bruges stjernen til at angive kardinalitet eller multiplicitet. Kardinalitet definerer antallet af instanser af en klasse, der kan være relateret til en enkelt instans af en anden klasse. Det er en fundamental måde at beskrive forretningsregler og begrænsninger i et systems design. Stjernen betyder specifikt "nul eller flere".

Lad os tage et simpelt eksempel: en 'Virksomhed' og en 'Medarbejder'. En virksomhed kan have mange medarbejdere, og den kan også eksistere uden nogen medarbejdere i en periode (f.eks. en nystartet virksomhed). Forholdet fra Virksomhed til Medarbejder vil derfor have kardinaliteten '*'. Dette fortæller os, at én Virksomhed-instans kan være associeret med nul, en eller mange Medarbejder-instanser.

Tabel over Almindelige Kardinalitetsnotationer

For at give et fuldt billede er her en tabel, der sammenligner de mest almindelige notationer for kardinalitet, du vil støde på i UML.

NotationBetydningEksempel
1Præcis énEn person har præcis ét hoved.
0..1Nul eller én (valgfri)En person kan have nul eller én ægtefælle.
*Nul eller flereEn kunde kan have nul eller flere ordrer.
1..*Én eller flereEn ordre skal indeholde mindst én vare.
nPræcis n (et specifikt tal)Et dæk består af præcis 4 hjul.
m..nMellem m og nEt hold skal have mellem 5 og 11 spillere.

Udforskning af Forholdstyper i Klasse-diagrammer

Kardinalitet er en egenskab ved et forhold (en association) mellem klasser. For at forstå stjernens rolle fuldt ud, må vi se på de forskellige typer af forhold, den kan anvendes på.

Association

Den mest grundlæggende type forhold. Det repræsenterer et generelt forhold mellem to klasser. Linjen, der forbinder klasserne, kan have kardinalitetsmarkører i begge ender for at specificere forholdet i begge retninger. For eksempel kan en 'Lærer' undervise 'nul eller flere' ('*') 'Studerende', og en 'Studerende' kan blive undervist af 'én eller flere' ('1..*') 'Lærere'.

Aggregation (Består af)

Dette er en stærkere form for association, der repræsenterer et 'hele-del'-forhold. Det angives med en hul diamant på 'hele'-siden. Et nøgleaspekt ved aggregation er, at 'delene' kan eksistere uafhængigt af 'hele'. For eksempel er et 'Team' en aggregation af 'Spillere'. Hvis teamet opløses, eksisterer spillerne stadig og kan slutte sig til andre teams. Her kan et team have '1..*' spillere.

Composition (Ejes af)

Dette er den stærkeste form for 'hele-del'-forhold, angivet med en fyldt diamant. I en komposition er 'delenes' livscyklus tæt knyttet til 'helets'. Hvis 'hele' ødelægges, ødelægges 'delene' også. Et klassisk eksempel er en 'Bygning' og dens 'Rum'. Hvis bygningen rives ned, ophører rummene med at eksistere. En bygning ville typisk være sammensat af '1..*' rum.

Andre Vigtige UML-diagrammer

Mens stjernen er mest fremtrædende i klasse-diagrammer (et strukturdiagram), findes konceptet om multiplicitet også i andre diagrammer. Lad os kort se på et par andre centrale diagramtyper for at udvide vores forståelse.

Use Case-diagrammer

Disse diagrammer beskriver et systems funktionalitet fra en brugers perspektiv. De viser 'aktører' (brugere eller eksterne systemer) og de 'use cases' (handlinger), de kan udføre. Forholdet mellem en aktør og en use case kan også have kardinalitet. For eksempel kan en 'Sælger' placere 'mange' ('*') 'Ordrer'. Dette hjælper med at forstå, hvordan forskellige roller interagerer med systemet og hyppigheden af disse interaktioner.

Sekvensdiagrammer

Disse diagrammer tilhører kategorien af interaktionsdiagrammer og viser, hvordan objekter interagerer med hinanden over tid. De er fremragende til at visualisere flowet i en bestemt use case. Selvom de ikke bruger stjernen på samme måde som klasse-diagrammer, kan de indeholde løkker eller iterationer, som ofte er markeret med en 'loop'-ramme. Denne løkke kan udføres for en samling af objekter, hvilket er et dynamisk udtryk for et 'en-til-mange'-forhold. For eksempel kan en besked sendes til 'hver' ('*') vare i en indkøbskurv.

Ofte Stillede Spørgsmål (FAQ)

Hvad er den primære forskel mellem aggregation og composition?

Den afgørende forskel ligger i livscyklusafhængighed. Ved aggregation kan delene eksistere uafhængigt af helheden. Hvis helheden slettes, overlever delene. Ved composition er delene afhængige af helheden. Hvis helheden slettes, slettes delene også. Tænk på et bibliotek (helhed) og bøger (dele). Hvis biblioteket lukker, kan bøgerne stadig eksistere (aggregation). Tænk nu på en e-mail (helhed) og dens vedhæftede filer (dele). Hvis du sletter e-mailen, slettes de vedhæftede filer typisk sammen med den (composition).

Betyder en stiplet linje altid det samme i UML?

Nej, betydningen af en stiplet linje afhænger af konteksten og pilens hoved. En stiplet linje med en åben pil angiver typisk en afhængighed (dependency). Det betyder, at en klasse ('klienten') bruger en anden klasse ('leverandøren'), men ikke som et permanent felt. Det kan være en metode-parameter eller en lokal variabel. En stiplet linje med en lukket, hul trekantet pil angiver interface-implementering, hvilket betyder, at en klasse implementerer de metoder, der er specificeret i et interface.

Er UML et programmeringssprog?

Nej, det er en almindelig misforståelse. UML er et visuelt modelleringssprog, ikke et programmeringssprog som Java, C# eller Python. Det genererer ikke eksekverbar kode direkte. Dog kan mange avancerede værktøjer (CASE-værktøjer) generere kodeskabeloner ud fra UML-diagrammer, hvilket kan fremskynde udviklingsprocessen.

Hvorfor er det nødvendigt at bruge kardinalitet?

Kardinalitet er afgørende, fordi det håndhæver forretningsregler direkte i systemets design. Det definerer begrænsninger og sikrer dataintegritet. Ved at specificere, at en 'Ordre' skal have '1..*' 'Ordrelinjer', sikrer designet, at det er umuligt at have en tom ordre i systemet. Dette forhindrer fejl og gør systemet mere robust og forudsigeligt.

Konklusion

Stjernen (*) i et UML-diagram er et lille symbol med en stor betydning. Den repræsenterer konceptet "nul eller flere" og er en central del af kardinalitetsnotationen, som definerer de numeriske forhold mellem klasser i et system. At forstå dette symbol og de omkringliggende koncepter som association, aggregation og composition er essentielt for at kunne læse og skabe meningsfulde klasse-diagrammer. UML er et kraftfuldt værktøj, og en grundig forståelse af dets notation, startende med simple symboler som stjernen, åbner døren til en dybere indsigt i softwarearkitektur og -design, hvilket i sidste ende fører til bedre, mere robuste og veldokumenterede systemer.

Hvis du vil læse andre artikler, der ligner Stjernens Betydning i et UML-diagram, kan du besøge kategorien Teknologi.

Go up