Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Klassediagrammer er en illustrasjon av innholdet i og sammenhengen mellom klasser, som et supplement til tekslig kode. Et klassediagram viser klasser som bokser, attributter og operasjoner som tekstlinjer inni boksene (i hver sine deler) og assosiasjoner og arv som streker med. I tillegg annoteres assosiasjonsstreker med informasjon om navn og såkalt multiplisitet (også kalt kardinalitet). Figuren under viser et enkelt klassediagram med tilsvarende Java-kode til høyre.

Attributter og assosiasjoner

PlantUML Macro
class Person {
	String firstName
	String familyName
	String getFullName()
}

class Car {
	String brand
}

Person "owner: 1" -- "cars: *" Car: ownership
Code Block
languagejava
class Person {
	String firstName;
	String familyName;
	String getFullName();
	Collection<Car> cars;
 }

class Car {
	String brand;
	Person owner;
}

Figuren lengst til venstre viser et klassediagram med to klasser. Person-klassen har to attributter og én operasjon/metode, mens Car-klassen har ett attributt. Person- og Car-klassene er knyttet sammen med en ownership-assosiasjon. ownership-assosiasjon er annotert med "owner: 1" i Person-enden og "cars: *" i Car-enden, for å indikere hvordan assosiasjonen forstås fra hver ende:

  • Fra Person-enden kan en komme til Car-enden via cars-rollen, og *-tegnet indikerer at én Person-instans kan være knyttet til flere Car-instanser.
  • Fra Car-enden kan en komme til Person-enden via owner-rollen, og 1-tegnet indikerer at én Car-instans bare kan være knyttet til én Person-instans.

Diagrammet tilsvarer omtrent Java-koden som er vist til høyre. Vi ser at attributter og operasjoner i klassediagrammet tilsvarer felt og metoder i Java-koden. Assosiasjonene har ikke noe direkte Java-motstykke, men en finner igjen assosiasjonsrollene som felt som brukes som implementasjonsteknikk. Når en instans kan være koblet til flere andre instanser, så må en bruke Collection (evt. array, List eller Set) og ikke en enkel type.

Arv (extends og implements)