Versions Compared

Key

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

...

La oss starte med et ekteskaps-koblingen mellom Person-objekter. Denne er modellert under til venstre med et klassediagram og eksemplifisert ved et objektdiagram, hvor som viser at Hallvard er gift med Marit.

PlantUML Macro
class Person {
	String name
}

Person -- Person: ekteskap

Person-klassen og ekteskap-assosiasjonen

PlantUML Macro
object "#hallvard: Person" as hallvard {
	name = "Hallvard"
}
object "#marit: Person" as marit {
	name = "Marit"
}
hallvard --> marit : ekteskap

hallvard er koblet til marit med en ekteskap-kobling

Klassediagrammet sier at Person-klassen har en assosiasjon kalt ekteskap til(bake) til seg selv, dvs. at et Person-objekter kan være koblet til et Person-objekt med en ekteskap-kobling. Objektdiagrammet viser et tenkt tilfelle der hallvard er koblet til marit. Det er lett å tenke seg at dette kan kodes i Java som en Person-klasse med et felt av typen Person kalt ekteskap (ved siden av name-feltet, selvsagt) og innkapslingsmetodene getEkteskap() og setEkteskap(). Objekter tilsvarende diagrammet til høyre kan så lages med konstruktøren og setEkteskap-metoden.

Code Block
languagejava
public class Person {
	
	private String name;
	private Person ekteskap;
	
	public Person(String name) {
		this.name = name;
	}

	public void setEkteskap(Person ekteskap) {
		this.ekteskap = ekteskap;
	}
}
Code Block
languagejava
// lage eksempel-objekter
Person hallvard = new Person("Hallvard");
Person marit = new Person("Marit");

// opprette ekteskap-koblingen fra hallvard til marit
hallvard.setEkteskap(marit);

I denne koden er det en del antagelser som er gjort, f.eks. at et person bare kan inngå ekteskap med én annen person (altså monogami). Det er også en opplagt mangel, fordi koden ikke sikrer at ekteskapskoblingen er gjensidig, dvs. at marit automatisk får en kobling tilbake til hallvard. Generelt er både (feil)antagelser og mangler uheldig, fordi de kan føre til ugyldige og inkonsistente objektstrukturer. Før vi koder klassene er det derfor viktig å legge til en del "detaljer" i klassediagrammet, slik at "nyanser" som dette fremgår av diagrammet.