Typen UML-relaties: associatie, afhankelijkheid, generalisatie

⚡ Slimme samenvatting

UML-relaties verbinden de structurele, gedragsmatige en groepsdynamiek.ping Elementen van een model, die laten zien hoe objecten tijdens de uitvoering van elkaar afhankelijk zijn. Deze bron legt associatie, afhankelijkheid, generalisatie, realisatie, compositie en aggregatie uit, met notatie en praktijkvoorbeelden voor elk type.

  • 🔗 Vereniging: Een structurele verbinding waar objecten met elkaar in contact komen, waarbij beperkingen en multipliciteit bepalen hoeveel er deelnemen.
  • ➡️ Afhankelijkheid: Een eenzijdige relatie waarbij een verandering bij de leverancier gevolgen kan hebben voor de afhankelijke klant.
  • ???? Generalisatie: Een ouder-kindrelatie die overerving implementeert tussen een algemene entiteit en een gespecialiseerde entiteit.
  • 🧩 Realisatie: Een interface contracwaarbij de ene entiteit de verantwoordelijkheid definieert en de andere deze uitvoert, weergegeven in canonieke of vereenvoudigde vorm.
  • 💠 Samenstelling en aggregatie: Relaties tussen geheel en deel; compositie vernietigt delen met het geheel, terwijl aggregatie ervoor zorgt dat delen het geheel overleven.

UML-relatietypen

Wat is een UML-relatie?

Relaties in UML worden gebruikt om een ​​verband weer te geven tussen structurele, gedragsmatige of groepsgebonden factoren.ping Een relatie is een verbinding die beschrijft hoe twee of meer dingen zich tot elkaar verhouden tijdens de uitvoering van een systeem. Er zijn verschillende typen UML-relaties: associatie, afhankelijkheid, generalisatie en realisatie.

Laten we ze in detail bestuderen

Soorten UML-klassediagramrelaties

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 geeft aan dat het bronobject uitzonderlijke abs heeft.tracdan 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 klantactiviteiten.
  • "versturen" – De klant is een bedrijf dat 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. Let op: Dit stereotype wordt veelvuldig gebruikt in een enkele context. 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
Realisatie in UML
Realisatie in UML

In het bovenstaande diagram realiseren accountbedrijfsregels de interface IRuleAgent.

Soorten realisatie

  1. Canonieke vorm: In een realisatierelatie van UML wordt de canonieke vorm gebruikt om interfaces binnen het systeem te realiseren. Hierbij wordt een interface-stereotype gebruikt om een ​​interface te creëren, en een realisatierelatie om die specifieke interface te realiseren. In een canonieke vorm wordt de realisatierelatie aangegeven met een gestippelde, gerichte lijn met een grote open pijlpunt. In het bovenstaande diagram wordt interface Iruleagent gerealiseerd met behulp van een object genaamd Account Business Rules.
  2. Weggelaten vorm: Realisatie in de UML-klassendiagram Een interface kan ook worden weergegeven met behulp van een vereenvoudigde vorm. In een vereenvoudigde vorm wordt de interface aangeduid met een cirkel, ook wel bekend als de lollynotatie. Deze interface, wanneer gerealiseerd met behulp van iets dat binnen het systeem aanwezig is, creëert een vereenvoudigde structuur. In het bovenstaande diagram wordt de interface Iruleagent weergegeven met een vereenvoudigde 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.

Compositie in UML

Compositie in UML

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 Een aggregatierelatie is een subtype van een associatierelatie in UML. Zowel aggregatie als compositie zijn typen associatierelaties in UML. Een aggregatierelatie kan in eenvoudige bewoordingen worden omschreven als: "een object van de ene klasse kan objecten van een andere klasse bezitten of benaderen."

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.

Veelgestelde vragen

Multipliciteit geeft aan hoeveel instanties van een klasse gekoppeld kunnen worden aan instanties van een andere klasse in een relatie. Dit wordt weergegeven als waarden zoals 1, 0..1 of 1..*. Een map kan bijvoorbeeld nul of veel bestanden bevatten.

UML gebruikt verschillende lijneinden om relatietypen weer te geven: een ononderbroken lijn voor associatie, een open pijlpunt voor afhankelijkheid, een holle driehoek voor generalisatie, een stippellijn met een holle driehoek voor realisatie en een ruit voor aggregatie of compositie.

Associatie is een structurele verbinding waarbij objecten gedurende een langere periode van elkaars bestaan ​​afweten. Afhankelijkheid is een zwakkere, tijdelijke relatie waarbij het ene element het andere gebruikt, waardoor een verandering van leverancier de klant slechts kortstondig kan beïnvloeden.

AI-tools voor codeanalyse kunnen klassen scannen en waarschijnlijke relaties suggereren – associatie, afhankelijkheid, generalisatie of aggregatie – op basis van hoe objecten naar elkaar verwijzen. Ontwikkelaars moeten de suggesties bevestigen, omdat AI indirecte of dynamische verbanden verkeerd kan interpreteren.

Ja. Sommige AI-diagramtools lezen een beschrijving van je klassen in eenvoudige taal en produceren een conceptklassendiagram met associatie-, generalisatie- en compositielinks. De output is een startpunt dat nog handmatig gevalideerd moet worden.

Vat dit bericht samen met: