Klassendiagrammen zijn een van de meest nuttige diagramtypen in UML omdat ze de structuur van een specifiek systeem duidelijk in kaart brengen door de klassen, attributen, bewerkingen en relaties tussen objecten te modelleren. Met onze software voor UML-diagrammen is het maken van deze diagrammen minder overweldigend dan het lijkt. Deze gids laat zien hoe je je eigen klassendiagrammen begrijpt, plant en maakt.
Wat is een klassendiagram in UML?
De Unified Modeling Language (UML) helpt je om systemen op verschillende manieren te modelleren. Een van de populairdere typen in UML is het klassendiagram. Binnen de bredere taxonomie van UML vallen klassendiagrammen binnen de structurele (statische) diagramfamilie, die zich richt op waar een systeem uit bestaat in plaats van hoe het zich in de loop van de tijd gedraagt.
UML is opgezet als een gestandaardiseerd model om een objectgeoriënteerde programmeerbenadering te beschrijven. Omdat klassen de bouwstenen van objecten zijn, zijn klassendiagrammen de bouwstenen van UML. De verschillende componenten in een klassendiagram kunnen de klassen vertegenwoordigen die daadwerkelijk worden geprogrammeerd, de hoofdobjecten of de interacties tussen klassen stealth objecten. Omdat ze nauw aansluiten bij objectgeoriënteerd programmeren, kunnen klassendiagrammen vaak rechtstreeks worden vertaald naar codeconstructies in veelvoorkomende OOP-talen, zoals Python, Java en C++.
De klassenvorm zelf bestaat uit een rechthoek met drie rijen. De bovenste rij bevat de naam van de klasse, de middelste rij bevat de attributen van de klasse en het onderste gedeelte bevat de methoden of bewerkingen die de klasse kan gebruiken. Klassen en subklassen worden samengevoegd om de statische relatie tussen elk object te tonen.
Ongeacht je ervaring met UML of klassendiagrammen is onze UML-software ontworpen om eenvoudig en gebruiksvriendelijk te zijn. Met de UML-vormbibliotheek in Lucidchart kun je bijna elk aangepast klassendiagram maken met onze UML-diagramtool. En met onze functie voor diagrammen als code is het sneller en eenvoudiger dan ooit. Je kunt een volledig aangepast klassendiagram maken en dit aan je Lucidchart-document toevoegen met behulp van Mermaid-code.
Voordelen van klassendiagrammen
Klassendiagrammen bieden tal van voordelen voor elke organisatie. Gebruik UML-klassendiagrammen om:
- Ontwikkelaars te helpen nadenken over de klassenstructuur en interacties voordat ze code schrijven. Dit leidt tot schonere en beter functionerende software.
- Gedetailleerde schema's te tekenen en vereisten te documenteren die in de code moeten worden opgenomen.
- Informatie gemakkelijker te delen met belanghebbenden via visuele presentaties, zonder in de code te hoeven duiken.
- Datamodellen te illustreren voor elk systeem, hoe complex ook.
- Informatie eenvoudig te delen binnen je hele bedrijf.
- Een beter begrip te krijgen van de algemene schema's van een applicatie.
- Vereisten en andere aspecten van een systeem te documenteren zonder ingewikkelde, tekstrijke uitleg.
- Modellen te maken vanuit een zakelijk perspectief als business analyst.
Ze zijn ook vroeg in de levenscyclus nuttig als hulpmiddel om na te denken — om teams te helpen redeneren over structuur en relaties vóór de implementatie — en als communicatiemiddel voor zowel technische als niet-technische belanghebbenden.
Basisonderdelen van een klassendiagram
Afhankelijk van de context kunnen klassen in een klassendiagram de hoofdobjecten, interacties in de applicatie of de te programmeren klassen vertegenwoordigen. Om de vraag "Wat is een klassendiagram in UML?" te beantwoorden, moet je eerst de basisopbouw begrijpen.
- Klassen: een sjabloon voor het maken van objecten en het implementeren van gedrag in een systeem. In UML vertegenwoordigt een klasse een object of een reeks objecten die een gemeenschappelijke structuur en gedrag delen. Ze worden weergegeven door een rechthoek met rijen voor de klassenaam, de attributen en de bewerkingen. Wanneer je een klasse in een klassendiagram tekent, hoef je alleen de bovenste rij in te vullen — de andere zijn optioneel als je meer details wilt toevoegen.
- Signalen: symbolen die eenrichtings-, asynchrone communicatie tussen actieve objecten vertegenwoordigen.
- Datatypen: classifiers die gegevenswaarden definiëren. Datatypen kunnen zowel primitieve typen als enumerations modelleren.
- Packages: vormen die zijn ontworpen om gerelateerde classifiers in een diagram te ordenen. Ze worden gesymboliseerd door een grote rechthoekvorm met een tabblad.
- Interfaces: een verzameling bewerkingssignaturen en/of attribuutdefinities die een samenhangende set gedragingen definiëren. Interfaces lijken op klassen, met het verschil dat een klasse een instantie van zijn type kan hebben en een interface ten minste één klasse moet hebben die deze implementeert.
- Enumerations: representaties van door de gebruiker gedefinieerde datatypen. Een opsomming bevat groepen id's die waarden van de opsomming vertegenwoordigen.
- Objecten: instanties van een of meer klassen. Objecten kunnen aan een klassendiagram worden toegevoegd om concrete of prototypische instanties te vertegenwoordigen.
- Artifacts: modelelementen die de concrete entiteiten in een softwaresysteem vertegenwoordigen, zoals documenten, databases, uitvoerbare bestanden, softwarecomponenten, enz.
Secties binnen een klasse
De standaardklasse bestaat uit drie secties:
Bovenste sectie
Bevat de naam van de klasse. Deze sectie is altijd vereist, of het nu gaat om de classifier of een object. De klassenaam moet:
- Met een hoofdletter beginnen.
- Vetgedrukt zijn.
- In de bovenste sectie gecentreerd zijn.
- Beschrijvend zijn.
Middelste sectie
Bevat de attributen van de klasse. Gebruik deze sectie om de eigenschappen van de klasse te beschrijven. Dit is alleen vereist bij het beschrijven van een specifieke instantie van een klasse.
Onderste sectie
Bevat de klassebewerkingen (methoden). Deze worden in lijstvorm weergegeven, waarbij elke bewerking een eigen regel inneemt. De bewerkingen beschrijven hoe een klasse met gegevens omgaat. De tekst in de onderste twee secties is meestal links uitgelijnd en begint met een kleine letter.
Toegangsspecificaties (access modifiers)
Alle klassen hebben verschillende toegangsniveaus, afhankelijk van de toegangsspecificatie (zichtbaarheid). Dit zijn de toegangsniveaus met de bijbehorende symbolen:
- Public (+)
- Private (-)
- Protected (#)
- Package (~)
- Afgeleid (/)
- Statisch (onderstreept)
Bereik van elementen (member scopes)
Er zijn twee bereiken voor elementen: classifiers en instanties.
Classifiers worden vaak herkend als statisch, wat betekent dat attribuutwaarden in alle instanties hetzelfde blijven en dat het aanroepen van methoden de status van de instantie niet beïnvloedt. Instanties bevatten daarentegen methoden die de status van de instantie kunnen veranderen en attribuutwaarden die per instantie kunnen verschillen. Om een classifier aan te geven, onderstreep je de naam; laat de tekst normaal om een instantie aan te geven.
Interacties
De term "interacties" verwijst naar de verschillende relaties en koppelingen die kunnen bestaan in klassen- en objectdiagrammen. Enkele van de meest voorkomende interacties zijn:
Overerving: het proces waarbij een subklasse de functionaliteit van een superklasse overneemt, ook wel generalisatie genoemd. Dit wordt gesymboliseerd door een rechte verbindingslijn met een gesloten pijlpunt die naar de superklasse wijst.
In dit voorbeeld erft het object "Auto" alle attributen (snelheid, aantal passagiers, brandstof) and methoden (gaan(), stoppen(), richtingVeranderen()) van de bovenliggende klasse ("Voertuig"), naast de specifieke attributen (modeltype, aantal deuren, autofabrikant) en methoden van de eigen klasse (Radio(), ruitenwisser(), airco/verwarming()). Overerving wordt in een klassendiagram weergegeven met een ononderbroken lijn met een gesloten, oningevulde pijl.
Bidirectionele associatie: de standaardrelatie tussen twee klassen. Beide klassen zijn zich bewust van elkaar en hun relatie met de andere klasse. Deze associatie wordt weergegeven door een rechte lijn tussen twee klassen.
In het bovenstaande voorbeeld zijn de klasse Auto en de klasse RoadTrip aan elkaar gerelateerd. Aan het ene uiteinde van de lijn neemt de Auto de associatie "assignedCar" aan met de multipliciteitswaarde 0..1. Dus wanneer de instantie van RoadTrip bestaat, kan er één instantie van Auto aan gekoppeld zijn, of geen. In dit geval is een aparte klasse Caravan met een multipliciteitswaarde van 0..* nodig om aan te tonen dat een RoadTrip meerdere instanties van Auto's aan zich gekoppeld kan hebben. Aangezien één Auto-instantie meerdere "getRoadTrip"-associaties kan hebben — met andere woorden, één auto kan meerdere roadtrips maken — is de multipliciteitswaarde ingesteld op 0..*
Unidirectionele associatie: een iets minder vaak voorkomende relatie tussen twee klassen. De ene klasse is zich bewust van de andere en heeft er interactie mee. Een unidirectionele associatie wordt gemodelleerd met een rechte verbindingslijn die een open pijlpunt van de wetende klasse naar de bekende klasse richt.
Als voorbeeld: tijdens je roadtrip door Arizona kom je een snelheidscontrole tegen waarbij een flitspaal je rijgedrag registreert, maar dat weet je pas als je een melding in de brievenbus krijgt. Het is niet in de afbeelding getekend, maar in dit geval zou de multipliciteitswaarde 0..* zijn, afhankelijk van hoe vaak je langs de flitspaal rijdt.
Voorbeelden van klassendiagrammen
Het maken van een klassendiagram om processtromen in kaart te brengen is eenvoudig. Bekijk de twee onderstaande voorbeelden wanneer je je eigen klassendiagrammen in UML bouwt.
Klassendiagram voor een systeem voor hotelbeheer
Een klassendiagram kan de relaties tonen tussen elk object in een systeem voor hotelbeheer, inclusief gasteninformatie, verantwoordelijkheden van het personeel en kamerbezetting. Het onderstaande voorbeeld biedt een handig overzicht van het hotelbeheersysteem. Begin direct met een klassendiagram door op het onderstaande sjabloon te klikken.
Klassendiagram voor een systeem voor geldautomaten
Geldautomaten zijn bedrieglijk eenvoudig: hoewel klanten slechts op een paar knoppen hoeven te drukken om contant geld te ontvangen, zijn er veel beveiligingslagen waar een veilige en effectieve geldautomaat doorheen moet om fraude te voorkomen en waarde te bieden aan bankklanten. De verschillende menselijke en levenloze onderdelen van een geldautomaatsysteem worden geïllustreerd door dit eenvoudig te lezen diagram — elke klasse heeft een titel en de attributen staan eronder vermeld. Je kunt dit schema bewerken, opslaan en delen door het document te openen en je aan te melden voor een gratis Lucidchart-account.
Tips for planning clear class diagrams
Voordat je begint met diagrammen (of tijdens het aanpassen van een vroege opzet), kunnen een paar eenvoudige planningsgewoonten je klassendiagrammen duidelijker en nuttiger maken voor anderen.
- De klassenaam moet beschrijvend en betekenisvol zijn. Als je een klasse bijvoorbeeld UserAccount noemt, is het duidelijk dat de klasse een soort gebruikersaccount aanmaakt.
- Stel duidelijk vast waarvoor elke klasse verantwoordelijk is.
- Identificeer elk element vooraf en begrijp hoe ze zich tot elkaar verhouden.
- Voeg alleen relevante eigenschappen toe aan elke klasse. Het toevoegen van onnodige eigenschappen kan je diagram onoverzichtelijk en onnodig ingewikkeld maken.
- Gebruik korte notities wanneer je een specifiek deel van het diagram moet beschrijven.
- Werk samen met teamleden en pas het diagram aan waar nodig om het perfect te krijgen.
Deze gewoonten zijn vooral nuttig omdat klassendiagrammen zelden op zichzelf staan; ze vertegenwoordigen meestal een reeks klassen die moeten samenwerken als onderdeel van een groter systeem. Hoewel je misschien slechts één enkele klasse in een diagram opneemt, is de kans groot dat deze in een groter systeem wordt gebruikt. Een systeem wordt in een klassendiagram weergegeven als een verzameling klassen die moeten samenwerken. Daarom is het belangrijk om elementen vooraf te identificeren en te begrijpen hoe ze zich tot elkaar verhouden. Wanneer meerdere klassen in één klassendiagram worden gegroepeerd, helpt dit je de statische structuur en de relaties ertussen te begrijpen. Dit helpt je ook om potentiële probleemgebieden te identificeren en op te lossen voordat er problemen ontstaan.
Hoe maak je een klassendiagram
In Lucidchart is het maken van een klassendiagram vanaf nul verrassend eenvoudig. Volg gewoon deze stappen:
1. Aan de slag met Lucidchart
Als Lucidchart helemaal nieuw voor je is, moet je eerst een account aanmaken en een document openen voordat je vormen naar het canvas kunt slepen. Als je je nog niet hebt geregistreerd bij Lucidchart, kun je je gratis aanmelden. Log in en selecteer een sjabloon of open een nieuw document.
2. Vormen toevoegen of importeren
Elk klassendiagram moet de UML-klassenvormen bevatten. In Lucidchart kun je de volledige UML-vormbibliotheek aan je werkbalk toevoegen. Klik op Vormen aan de linkerkant van de editor en kies "UML." Van daaruit kun je uitbreiden buiten de standaard UML-bibliotheek als je diagram extra visuele elementen of aangepaste assets vereist. Als je nog meer vormen nodig hebt, kun je naar pictogrammen zoeken met de functie voor het zoeken van afbeeldingen, of kun je je eigen sjablonen en pictogrammen importeren. Wat vormen betreft, zijn er geen beperkingen in Lucidchart. Wanneer je een klassenvorm plaatst, kun je kiezen hoeveel detail je wilt weergeven — sommige diagrammen laten attributen en bewerkingen weg om op een hoog niveau te blijven. Het standaard klassesymbool heeft drie rijen, maar je kunt desgewenst een vergelijkbare vorm gebruiken die de onderste twee rijen weglaat.
3. Teksten en concepten toevoegen aan je klassendiagram
Volg bij het invullen van elke klasse de standaard conventie per rij, zodat lezers snel kunnen interpreteren wat ze zien. Om tekst aan elke rij van de klassenvorm toe te voegen, klik en typ je gewoon. De eerste rij mag alleen de klassenaam bevatten, terwijl de tweede de attributen van de klasse bevat. Het laatste gedeelte bevat mogelijke methoden of bewerkingen die de klasse kan uitvoeren. Blijf klassenvormen toevoegen totdat je statische applicatie volledig is weergegeven.
Geef het bereik aan door bepaalde elementen te onderstrepen (de term voor attributen of methoden in een klasse). Elementen kunnen worden geclassificeerd als instanties of classifiers. Classifiers worden vaak herkend als statisch, wat betekent dat attribuutwaarden in alle instanties hetzelfde blijven en dat het aanroepen van methoden de status van de instantie niet beïnvloedt. Instanties bevatten daarentegen methoden die de status van de instantie kunnen veranderen en attribuutwaarden die per instantie kunnen verschillen. Om een classifier aan te geven, onderstreep je de naam; laat de tekst normaal om een instantie aan te geven.
Toon de zichtbaarheid door het juiste symbool binnen de klassenvorm en vóór het specifieke attribuut of de methode te plaatsen. Dit wordt ook wel het beoordelen van de zichtbaarheid genoemd. Gebruik het symbool dat bij elk toegangsniveau hoort: public (+), private (-), protected (#), package (~) en afgeleid (/).
Toon je publiek de interacties met klassen- en objectdiagrammen, oftewel de relaties en koppelingen die tussen objecten bestaan. In Lucidchart kunt u relaties tussen objecten aangeven door een lijn te trekken en vervolgens de notatiestijl naar wens aan te passen.
4. Je klassendiagram opmaken
Zodra de inhoud op zijn plek staat, kun je het uiterlijk van het diagram verfijnen en het gemakkelijker leesbaar maken met een consistente styling. Maak je klassendiagrammen in Lucidchart eenvoudig op door lettertypen, kleuren en lijninstellingen bij te werken.
5. Publiceren, implementeren en delen
Ten slotte zijn klassendiagrammen het meest waardevol als ze worden gedeeld — of ze nu worden ingebed in documentatie, worden gedistribueerd naar belanghebbenden of worden geïntegreerd in de tools die je team al gebruikt. Zodra je een klassendiagram in Lucidchart hebt gemaakt, kun je dit eenvoudig delen om het begrip binnen je hele organisatie te vergroten. Publiceer en sluit je diagram in op de wiki van je bedrijf, of stuur het naar andere huidige Lucidchart-gebruikers of niet-gebruikers met eenvoudige deelfuncties. Je kunt je definitieve klassendiagram ook in elk bestandsformaat downloaden.
Dankzij de vele Lucidchart-integraties kun je je klassendiagrammen opnemen in de applicaties die je dagelijks gebruikt. Met onze gratis Google Workspace-integraties kun je je klassendiagram met extra context toevoegen aan Google Documenten, Spreadsheets of Presentaties. Met onze Microsoft-integraties kun je je diagrammen naadloos importeren nadat je in realtime in de cloud hebt samengewerkt.
Klassendiagrammen zijn een van de meest voorkomende diagramtypen in UML, en Lucidchart heeft het eenvoudig gemaakt om ze te begrijpen en te maken. Begin direct met een van onze sjablonen, importeer een bestaand klassendiagram en werk er verder aan binnen Lucidchart, of start vanaf nul. We hebben alle functies en tools die je nodig hebt om aan de slag te gaan.

Alles wat je nodig hebt om een diagram te maken
Maak gratis een verzorgd, professioneel diagram met Lucidchart. Wat je ook in gedachten hebt, wij hebben de tools die je nodig hebt om het te bouwen. Maak vandaag nog een account aan en begin met ontwerpen.
Gratis aanmelden

