Video: UML Use Case Diagram Tutorial 2024
Het is normaal om objecten in categorieën te classificeren en om categorieën onder te verdelen in subcategorieën. Als je op zoek bent naar een plek om te wonen, merk je dat je een wooneenheid als een huis, appartement, herenhuis, flatgebouw, herenhuis, enzovoort classificeert. Huizen kunnen op hun beurt verder worden georganiseerd door stijlen zoals ranch, split-level, koloniaal en saltbox. UML geeft je notatie om dit soort classificaties vast te leggen - ook bekend als generalisatie en specialisatie - en gebruik ze als een modeler en een programmeur.
Sommige object-georiënteerde ontwikkelaars zullen zich tot het uiterste inspannen om een beetje werk te besparen. Wanneer ze iets eenmaal kunnen modelleren en hergebruiken, zijn ze geïnteresseerd. Als ze slechts één keer een methode (de programmacode voor een bewerking) voor een klasse kunnen schrijven en deze vele malen kunnen gebruiken, meld ze dan aan voor een hogere productiviteit. Als u tijd wilt besparen door attributen en bewerkingen eenmaal op te geven en ze vervolgens vele malen opnieuw te gebruiken, lees dan verder.
Terwijl u klassen definieert, merkt u misschien dat sommige klassen dezelfde kenmerken of dezelfde bewerkingen hebben. Wanneer dit het geval is, plaatst u deze gemeenschappelijke functies (kenmerken, bewerkingen enzovoort) in een meer generieke klasse die de superklasse wordt genoemd. De klassen die de algemene kenmerken delen, staan bekend als subklassen van de superklasse. De lengte van opgenomen materiaal op een videoband, audiotape, compact disc of filmfilm is bijvoorbeeld een attribuut van alle vier soorten opgenomen media. Deze klassen kunnen ook andere kenmerken delen, zoals hun fysieke afmetingen en de datum waarop ze allemaal zijn gebruikt om een opname te maken. In dit geval zou de superklasse RecordedMedia zijn, de subklassen zouden Videotape, Audiotape, CompactDisc en MovieFilm zijn, en enkele gedeelde attributen zouden opgenomenLength en totalLength kunnen zijn.
Dit proces voor het vinden van vergelijkbare attributen of bewerkingen tussen klassen staat bekend als generalisatie. U generaliseert bijvoorbeeld de kenmerkrecordlengte in een meer generieke klasse met de naam RecordedMedia. Het proces voor het weergeven van een generalisatie in UML is eenvoudig:
1. Identificeer de subklassen.
Lokaliseer klassen die dezelfde attributen en / of bewerkingen hebben. Deze klassen zijn je subklassen.
2. Creëer een superklasse.
Geef een superklasse voor de gemeenschappelijke kenmerken en / of bewerkingen van de subklassen. Geef de superklasse een naam die alle subklassen categoriseert. Het plaatsen van de superklasse boven de subklassen in het diagram maakt het gemakkelijker om te lezen maar is niet vereist.)
3. Voeg veelgebruikte functies toe aan de superklasse.
Verwijder de algemene kenmerken en bewerkingen van de subklassen en plaats ze (eenmalig) in de superklasse.
4. Teken een generalisatierelatie.
U tekent een generalisatielijn van elke subklasse naar de superklasse. In UML wordt de generalisatielijn weergegeven als een ononderbroken lijn met een holle pijlpunt aan het uiteinde van de superklasse. In UML staat een lijn met de holle pijlpunt die een subklasse met een superklasse verbindt, bekend als een generalisatierelatie.
Nadat u een superklasse hebt gemaakt met de algemene kenmerken, zoals kenmerken en bewerkingen, nemen de subklassen die kenmerken over van de superklasse. Op deze manier hoeft u slechts de algemene functies eenmaal in de superklasse te schrijven in plaats van vele malen in elk van de subklassen. U kunt zien of u een generalisatie hebt door te kijken naar de taal die u (of anderen) gebruikt om de relatie tussen klassen te beschrijven. Merk op dat bij het beschrijven van opgenomen media en de verschillende typen ervan, zoals videotape eerder in deze sectie, de frase "four kindsof recorded media" verscheen. Als je merkt dat je uitdrukkingen als "soort" of "type" gebruikt, dan is de kans groot dat je een generalisatie op handen hebt.
Zeg dat een van uw klanten zich bezighoudt met het bijhouden van materiaal in een archief. Deze client heeft verschillende
soorten opgenomen media verzameld, zoals videotapes en audiotapes. Als modelbouwers moet je de verschillen tussen deze media en hun overeenkomsten vastleggen. Het diagram in figuur 1 toont het begin van verschillende generalisaties, gerangschikt in een overervingshiërarchie. Afbeelding 1:
Eenvoudige overervingshiërarchie. Ontwikkelaars gebruiken de term generalisatie of overerving om te verwijzen naar hetzelfde concept van het opnieuw gebruiken van gedeelde kenmerken en bewerkingen die u in een superklasse gebruikt en opnieuw gebruiken in subklassen. Generalisatie verwijst naar het concept van generaliseren van specifieke (de subklassen) naar de generieke (de superklasse). Overerving verwijst naar het effect van generalisatie op de subklassen.
Wanneer u een
generalisatie -relatie tussen klassen ziet, wijkt de betekenis ervan sterk af van die van een koppeling tussen klassen. Een associatie is uiteindelijk een relatie tussen veel -objecten - sommige instanties van een klasse hebben een relatie (koppeling) met instanties van de andere klasse. In een generalisatierelatie tussen klassen gaat de relatie eigenlijk over de klassen. Het beste dat u kunt zeggen, is dat een object gemaakt op basis van een subklasse alle kenmerken van de subklasse en van de superklasse bevat. Je hebt maar één object uit een klasse in een generalisatierelatie. Ook al laat je twee klassen zien, de subklasse en de superklasse, je hebt maar één object dat wordt aangemaakt. U kunt denken aan een object van de klasse Videotape dat ook een object van de klasse RecordedMedia is vanwege overerving. Figuur 2 toont een object gemaakt van de Videotape-klasse met al zijn attributen.(De instantie van een klasse wordt weergegeven als een objectsymbool.) U hebt niet twee verschillende objecten (één voor RecordedMedia en één voor Videotape), maar één object. Wanneer het object vtu83-1023 is gemaakt, zijn alle waarden van alle kenmerken ingesteld. De opname op de band duurt 57 minuten. De totale lengte van de fysieke tape is 60 minuten. De tape is een Umatic-videocassette met een hoogte van 10 inch, een breedte van 7 inch en een diepte van 1,5 inch. De opname is analoog en een log van de inhoud van de tape is aan de band bevestigd zodat de archivaris deze kan raadplegen.
Afbeelding 2:
Een exemplaar met alle overgenomen kenmerken. U heeft slechts één instantie gedefinieerd door een subklasse en de superklasse. De subklasse en de superklasse kunnen een constructorbewerking hebben (om de instantie te maken) en een destructorbewerking (om de instantie te vernietigen). Wanneer uw software wordt uitgevoerd en u maakt een instantie van een subklasse, wordt de constructor van de superklasse eerst uitgevoerd, gevolgd door de constructor van de subklasse. Wanneer het tijd is om de door u gemaakte instantie te elimineren, wordt de destructor van de subklasse eerst genoemd, gevolgd door de destructor van de superklasse. Als dingen ingewikkelder zijn omdat u subklassen van subklassen hebt, onthoud dan: constructors worden van de top van de overervingshiërarchie naar beneden gehaald; destructors worden in de juiste volgorde geroepen vanaf de laagste subklasse tot de hoogste superklasse.