...
Code Block |
---|
// i Rolle1Klasse
public void addRolle2(Rolle2Klasse rolle2) {
// sjekk om koblingen er riktig allerede
if (this.roller2.contains(rolle2)) {
return;
}
this.roller2.add(rolle2);
// opprett koblingen tilbake, om nødvendig
if (rolle2.getRolle1() != this) {
rolle2.setRolle1(this);
}
}
public void removeRolle2(Rolle2Klasse rolle2) {
// sjekk om koblingen er riktig allerede
if (! this.roller2.contains(rolle2)) {
return;
}
this.roller2.remove(rolle2);
// fjern koblingen tilbake, om nødvendig
if (rolle2.getRolle1() == this) {
rolle2.setRolle1(null);
}
} |
| Code Block |
---|
// i Rolle2Klasse
public void setRolle1(Rolle1Klasse rolle1) {
// sjekk om koblingen er riktig allerede
if (this.rolle1 == rolle1) {
return;
}
// fjern den gamle koblingen, om nødvendig
if (this.rolle1 != null) {
this.rolle1.removeRolle2(this);
}
this.rolle1 = rolle1;
// opprett den nye koblingen, om nødvendig
if (this.rolle1 != null) {
this.rolle1.addRolle2(this);
}
} |
|
De to add- og set-metodene metoden 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-metodeinnkapslingsmetoder hos den andre.