Versions Compared

Key

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

...

Det skal altså være nok å kalle én set-metode for å sette opp begge koblingene (evt. koble begge av med null som argument). Hver set-metode må derfor sjekke koblingen den andre veien, også. Dette kan være litt fiklete å gjøre rett, så her er koden for det to set-metodene:

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 = oldRolle2rolle2;
	// 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 = oldRolle1rolle1;
	// 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);
	}
}

...