Versions Compared

Key

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

...

PlantUML Macro
class Rolle1Klasse {
}
class Rolle2Klasse {
}

Rolle1Klasse "rolle1 0:1" -- "rolle2 0:1" Rolle2Klasse: assosiasjon


 

 

 

Code Block
languagejava
public class Rolle1Klasse {

	private Rolle2Klasse rolle2;

	public Rolle2Klasse getRolle2() {
		return rolle2;
	}
	public void setRolle2(Rolle2Klasse rolle2) {
		this.rolle2 = rolle2;
	}
}

 

 
Code Block
languagejava
public class Rolle2Klasse {

	private Rolle1Klasse rolle1;

	public Rolle1Klasse getRolle1() {
		return rolle1;
	}
	public void setRolle1(Rolle1Klasse rolle1) {
		this.rolle1 = rolle1;
	}
}

 

 

 

 

 

For å sette opp en gjensidig kobling, så må en opprette ett objekt av hver type og kalle dere respektive set-metoder med det andre objektet som argument:

...

Code Block
// i Rolle1Klasse

public void setRolle2(Rolle2Klasse rolle2) {
	// sjekk om koblingen er riktig allerede
	if (this.rolle2 == rolle2) {
		return;
	}
	// husk den gamle og sett den nye
	Rolle2Klasse oldRolle2 = this.rolle2;
	this.rolle2 = oldRolle2;
	// hvis det var en kobling fra før, koble den andre fra
	if (oldRolle2 != null) {
		oldRolle2.setRolle1(null);
	}
	// hvis dette er en ny kobling, koble den andre til
	if (this.rolle2 != null) {
		this.rolle2.setRolle1(this);
	}
}
Code Block
// i Rolle2Klasse

public void setRolle1(Rolle1Klasse rolle1) {
	// sjekk om koblingen er riktig allerede
	if (this.rolle1 == rolle1) {
		return;
	}
	// husk den gamle og sett den nye
	Rolle1Klasse oldRolle1 = this.rolle1;
	this.rolle1 = oldRolle1;
	// hvis det var en kobling fra før, koble den andre fra
	if (oldRolle1 != null) {
		oldRolle1.setRolle2(null);
	}
	// hvis dette er en ny kobling, koble den andre til
	if (this.rolle1 != null) {
		this.rolle1.setRolle2(this);
	}
}

De to set-metodene samarbeider på en måte om å gjøre tilstanden konsistent. Vi ser at koden er de to metodene er like, bortsett fra at rollene er byttet om. Merk at innkapslingen er ivaretatt ved at begge bruker den andres set-metode.