Typen UML-relaties: associatie, afhankelijkheid, generalisatie
Wat is een UML-relatie?
Relaties in UML worden gebruikt om een verband weer te geven tussen structurele, gedragsmatige of groeperende dingen. Het wordt ook wel een koppeling genoemd die beschrijft hoe twee of meer zaken zich tot elkaar kunnen verhouden tijdens de uitvoering van een systeem. Type UML-relatie zijn Associatie, Afhankelijkheid, Generalisatie en Realisatie.
Laten we ze in detail bestuderen
Soorten UML-klassediagramrelaties
Vereniging
Het is een reeks koppelingen die elementen van het UML-model met elkaar verbinden. Het definieert ook hoeveel objecten deelnemen aan die relatie.
Afhankelijkheid
In een afhankelijkheidsrelatie zijn, zoals de naam al doet vermoeden, twee of meer elementen van elkaar afhankelijk. Als we in dit soort relaties een verandering aanbrengen in een bepaald element, is het waarschijnlijk mogelijk dat alle andere elementen ook door de verandering worden beïnvloed.
Generalisatie
Het wordt ook wel een ouder-kindrelatie genoemd. Bij generalisatie is één element een specialisatie van een andere algemene component. Het kan daarvoor in de plaats komen. Het wordt meestal gebruikt om erfenis weer te geven.
Realisatie
In een realisatierelatie van UML duidt de ene entiteit een verantwoordelijkheid aan die niet door zichzelf wordt geïmplementeerd en de andere entiteit die deze wel implementeert. Deze relatie wordt vooral gevonden in het geval van interfaces.
Vereniging
Het is een structurele relatie die weergeeft dat objecten kunnen worden verbonden of geassocieerd met een ander object binnen het systeem. De volgende beperkingen kunnen worden toegepast op de associatierelatie.
- {impliciet} – Impliciete beperkingen specificeren dat de relatie niet manifest is; het is gebaseerd op een concept.
- {besteld} – Geordende beperkingen specificeren dat de reeks objecten aan het ene uiteinde van een associatie zich op een specifieke manier bevindt.
- {veranderlijk} – Veranderlijke beperking geeft aan dat de verbinding tussen verschillende objecten in het systeem kan worden toegevoegd, verwijderd en gewijzigd volgens de vereisten.
- {addOnly} – Het specificeert dat de nieuwe verbindingen kunnen worden toegevoegd vanuit een object dat zich aan de andere kant van een associatie bevindt.
- {bevroren} – Het specificeert dat wanneer een link wordt toegevoegd tussen twee objecten, deze niet kan worden gewijzigd terwijl de bevroren beperking actief is op de gegeven link of een verbinding.
We kunnen ook een klasse maken die associatie-eigenschappen heeft; het wordt een associatieklasse genoemd.
Reflexieve associatie
De reflexieve associatie is een subtype van associatierelatie in UML. Bij een reflexieve associatie kunnen de instanties van dezelfde klasse aan elkaar gerelateerd zijn. Een instantie van een klasse wordt ook wel een object genoemd.
Reflexieve associatie stelt dat er een link of een verbinding aanwezig kan zijn binnen de objecten van dezelfde klasse.
Laten we een voorbeeld bekijken van een klassefruit. De fruitklasse kent twee exemplaren, zoals mango en appel. Reflexieve associatie stelt dat er een verband tussen mango en appel aanwezig kan zijn, aangezien het exemplaren van dezelfde klasse zijn, zoals fruit.
Gerichte vereniging
Zoals de naam al doet vermoeden, houdt de gerichte associatie verband met de richting van de stroom binnen associatieklassen.
Bij een gerichte associatie is de stroom gericht. De associatie van de ene klasse naar de andere klasse verloopt slechts in één richting.
Het wordt aangegeven met een ononderbroken lijn met een pijlpunt.
Voorbeeld:
Je kunt zeggen dat er een gerichte associatierelatie bestaat tussen een server en een client. Een server kan de verzoeken van een client verwerken. Deze stroom is unidirectioneel en stroomt alleen van server naar client. Er kan dus sprake zijn van een gerichte associatierelatie binnen servers en clients van een systeem.
Afhankelijkheid
Met behulp van een afhankelijkheidsrelatie in UML kan men in verband brengen hoe verschillende zaken binnen een bepaald systeem van elkaar afhankelijk zijn. Afhankelijkheid wordt gebruikt om de relatie te beschrijven tussen verschillende elementen in UML die van elkaar afhankelijk zijn.
Stereotypen
- "binden" – Bind is een beperking die specificeert dat de bron de sjabloon op een doellocatie kan initialiseren, met behulp van de opgegeven parameters of waarden.
- «afleiden» – Het geeft aan dat de locatie van een bronobject kan worden berekend op basis van het doelobject.
- «vriend» – Het specificeert dat de bron unieke zichtbaarheid heeft in het doelobject.
- «instantieVan» – Het specificeert dat de instantie van een doelclassificator het bronobject is.
- «instantiëren» – Het geeft aan dat het bronobject exemplaren van een doelobject kan maken.
- "verfijnen" – Het specificeert dat het bronobject een uitzonderlijke abstractie heeft dan die van het doelobject.
- "gebruik" – Het wordt gebruikt wanneer pakketten in UML worden gemaakt. Het gebruiksstereotype beschrijft dat de elementen van een bronpakket ook in het doelpakket aanwezig kunnen zijn. Het beschrijft dat het bronpakket gebruik maakt van enkele elementen van een doelpakket.
- "vervanging" – specificeert dat de klant tijdens runtime de leverancier mag vervangen.
- "toegang" – Het specificeert dat het bronpakket toegang heeft tot de elementen van het doelpakket wat ook wel een private fusie wordt genoemd.
- "Importeren" – Het specificeert dat het doel het element van een broncodepakket kan importeren zoals deze zijn gedefinieerd in het doel dat ook wel een publieke samenvoeging wordt genoemd.
- "vergunning" – specificeert dat het bronelement toegang heeft tot het leverancierselement, ongeacht de aangegeven zichtbaarheid van de leverancier.
- "verlengen" – Helpt u te specificeren dat het doel het gedrag van het bronelement kan uitbreiden.
- "erbij betrekken" – Hiermee kunt u het bronelement specificeren, waarin het gedrag van een ander element op een opgegeven locatie kan worden opgenomen. (hetzelfde als een functieaanroep in c/c++)
- "worden" – Het specificeert dat het doel vergelijkbaar is met de bron met verschillende waarden en rollen.
- "telefoongesprek" – Het specificeert dat de bron een doelobjectmethode kan aanroepen.
- "Kopiëren" – Het specificeert dat het doelobject onafhankelijk is, een kopie van een bronobject.
- «parameter» – de Leverancier is een parameter van de activiteiten van de klant.
- "versturen" - de client is een bewerking die de leverancier een ongespecificeerd doel stuurt.
Stereotypen onder de staatsmachine
- "versturen" – Geeft aan dat de bronbewerking de doelgebeurtenis verzendt.
Generalisatie
Het is een relatie tussen een algemene entiteit en een unieke entiteit die binnen het systeem aanwezig is.
In een generalisatierelatie wordt het objectgeoriënteerde concept genoemd erfenis kan worden geïmplementeerd. Er bestaat een generalisatierelatie tussen twee objecten, ook wel entiteiten of dingen genoemd. In een generalisatierelatie is de ene entiteit een ouder en de andere een kind. Deze entiteiten kunnen worden weergegeven met behulp van overerving.
Bij overerving kan een onderliggend onderdeel van een ouder de functionaliteit openen, bijwerken of overnemen zoals gespecificeerd in het bovenliggende object. Een onderliggend object kan zijn functionaliteit aan zichzelf toevoegen en de structuur en het gedrag van een ouderobject overnemen.
Dit type relatie staat gezamenlijk bekend als een generalisatierelatie.
Stereotypen en hun beperkingen
- "implementatie" – Dit stereotype wordt gebruikt om aan te geven dat de onderliggende entiteit wordt geïmplementeerd door de bovenliggende entiteit door de structuur en het gedrag van een bovenliggend object over te nemen zonder de regels te overtreden.Note Dit stereotype wordt op grote schaal gebruikt in een single erfenis.
De generalisatierelatie bevat beperkingen zoals compleet en onvolledig om te controleren of alle onderliggende entiteiten al dan niet in de relatie zijn opgenomen.
Realisatie
In een realisatierelatie van UML duidt de ene entiteit een verantwoordelijkheid aan die niet door zichzelf wordt geïmplementeerd en de andere entiteit die deze wel implementeert. Deze relatie wordt vooral gevonden in het geval van interfaces.
Realisatie kan op twee manieren worden weergegeven:
- Met een canonieke vorm
- Met behulp jaar weggelaten vorm
In het bovenstaande diagram realiseren accountbedrijfsregels de interface IRuleAgent.
Soorten realisatie
- Canonieke vormIn een realisatierelatie van UML wordt de canonieke vorm gebruikt om interfaces over het systeem heen te realiseren. Er wordt gebruik gemaakt van een interface-stereotype om een interface te creëren en de realisatierelatie wordt gebruikt om de specifieke interface te realiseren. In een canonieke vorm wordt de realisatierelatie aangegeven met behulp van de stippellijn met een grote open pijlpunt. In het bovenstaande diagram wordt de interface Iruleagent gerealiseerd met behulp van een object dat Account Business Rules wordt genoemd.
- Weggelaten vorm Realisatie in de UML-klassendiagram kan ook worden weergegeven met behulp van een weggelaten formulier. In een weggelaten vorm wordt de interface aangegeven met een cirkel die ook wel een lolly-notatie wordt genoemd. Wanneer deze interface wordt gerealiseerd met behulp van alles wat aanwezig is in het systeem, creëert deze een weggelaten structuur. In het bovenstaande diagram wordt de interface Iruleagent aangegeven met behulp van een weggelaten vorm die wordt gerealiseerd door acctrule.dll.
Samenstelling:
Het is geen standaard UML-relatie, maar wordt nog steeds in verschillende toepassingen gebruikt.
Samengestelde aggregatie is een subtype van aggregatierelatie met kenmerken als:
- het is een tweerichtingsassociatie tussen de objecten.
- Het is een geheel/deel-relatie.
- Als een composiet wordt verwijderd, worden alle andere daaraan gekoppelde onderdelen verwijderd.
Samengestelde aggregatie wordt beschreven als een binaire associatie versierd met een gevulde zwarte diamant aan het geaggregeerde (gehele) uiteinde.
Een map is een structuur die n-aantal bestanden bevat. Een map wordt gebruikt om de bestanden erin op te slaan. Elke map kan aan een willekeurig aantal bestanden worden gekoppeld. In een computersysteem is elk afzonderlijk bestand onderdeel van ten minste één map binnen het bestandsorganisatiesysteem. Hetzelfde bestand kan ook onderdeel zijn van een andere map, maar dat is niet verplicht. Wanneer een bestand uit de map wordt verwijderd, blijft de map onaangetast, terwijl de gegevens met betrekking tot dat specifieke bestand worden vernietigd. Als er een verwijderbewerking op de map wordt uitgevoerd, heeft dit ook invloed op alle bestanden die zich in de map bevinden. Alle bestanden die aan de map zijn gekoppeld, worden automatisch vernietigd zodra de map uit het systeem wordt verwijderd.
Dit type relatie in UML staat bekend als samengestelde aggregatierelatie.
Aggregatie
An aggregatie is een subtype van een associatierelatie in UML. Aggregatie en compositie zijn beide soorten associatierelaties in UML. Een aggregatierelatie kan in eenvoudige woorden worden beschreven als ‘een object van de ene klasse kan de objecten van een andere klasse bezitten of er toegang toe hebben’.
In een aggregatierelatie blijft het afhankelijke object binnen het bereik van een relatie, zelfs wanneer het bronobject wordt vernietigd.
Laten we een voorbeeld bekijken van een auto en een wiel. Een auto heeft een wiel nodig om goed te kunnen functioneren, maar een wiel heeft niet altijd een auto nodig. Het kan ook worden gebruikt met de fiets, fiets of andere voertuigen, maar niet met een bepaalde auto. Hier is het wielobject zelfs zonder het autoobject betekenisvol. Een dergelijk type relatie wordt een aggregatierelatie genoemd.
Samenvatting
- Relatie in UML maakt het mogelijk dat één ding verband houdt met andere dingen binnen het systeem.
- Een associatie-, afhankelijkheids-, generalisatie- en realisatierelatie worden gedefinieerd door UML.
- De compositierelatie kan ook worden gebruikt om aan te geven dat een object slechts deel kan uitmaken van één composiet tegelijk.
- Associatie wordt gebruikt om te beschrijven dat een object kan worden geassocieerd met een ander object.
- Afhankelijkheid geeft aan dat objecten van elkaar afhankelijk kunnen zijn.
- Een realisatie is een betekenisvolle relatie tussen classificatoren.
- Generalisatie wordt ook wel een ouder-kindrelatie genoemd.