Versions Compared

Key

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

...

En viktig del av det å implementere assosiasjoner er å sikre konsistens, dvs. at objekter i hver ende av en kobling refererer korrekt til hverandre. Et eksempel på dette for 1-1-assosiasjoner er (kjønnsnøytralt) partnerskap, hvor to partnere er koblet til hverandre når partnerskap inngås og kobles fra hverandre ved en evt. skillsmisse. I denne oppgaven skal en Partner-klasse implementeres og ulike situasjoner håndteres korrekt, som illustrert nedenfor.

...

Partner-klassen har kun én endringsmetode, setPartner(Partner), som brukes både for å inngå partnerskap, når argumentet er et Partner-objekt, og oppløse det, når argumentet er null. Figurene under illustrerer tilfellene som må kunne håndteres, og som testes av testene det er lenket til.


PlantUML Macro
object "p1~#p1: Partner" as p11 {
}
object "p2~#p2: Partner" as p21 {
}


 

 

p1.setPartner(p2)


PlantUML Macro
object "p1~#p1: Partner" as p12 {
}
object "p2~#p2: Partner" as p22 {
}
p12 --> p22: partner
p22 --> p12: partner


Inngåelse av partnerskap: Partner-objektene p1 og p2 kobles sammen med ett kall til setPartner. Før kallet er p1 og p2 ikke koblet sammen, og etter kallet er det koblet sammen.


PlantUML Macro
object "p1~#p1: Partner" as p11 {
}
object "p2~#p2: Partner" as p21 {
}
p11 --> p21: partner

p21 --> p11: partner 


 

 

p1.setPartner(null)


PlantUML Macro
object "p1~#p1: Partner" as p12 {
}
object "p2~#p2: Partner" as p22 {
}


Oppløsning av partnerskap: Partner-objektene p1 og p2 kobles fra hverandre med ett kall til setPartner med null som argument. Før kallet er p1 og p2 koblet sammen, og etter kallet er det ikke lenger koblet sammen.


PlantUML Macro
object "p1~#p1: Partner" as p11 {
}
object "p2~#p2: Partner" as p21 {
}
p11 --> p21: partner
p21 --> p11: partner
object "p3~#p3: Partner" as p31 {
}
object "p4~#p4: Partner" as p41 {
}
p31 --> p41: partner
p41 --> p31: partner


 

 

p1.setPartner(p3)


PlantUML Macro
object "p1~#p1: Partner" as p12 {
}
object "p2~#p2: Partner" as p22 {
}
object "p3~#p3: Partner" as p32 {
}
object "p4~#p4: Partner" as p42 {
}
p12 --> p32: partner
p32 --> p12: partner


Oppløsning og inngåelse av partnerskap i ett: Partner-objektene p1, p2, p3 og p4 er parvis koblet sammen, før ett kall til setPartner kobler sammen p1 og p3, mens p2 og p4 kobles fra deres tidligere partnere.

Exercise-panelet

Bruk av Exercise-panelet er obligatorisk for denne oppgaven. Du må ha panelet åpent med Partner.ex-filen (tests > objectstructures Partner.ex) i før du begynner med oppgaven. For mer informasjon/hjelp, se nederst på hovedsiden for Øving 5.

Gjøremål

Oppgaven er (enkelt og greit) å implementere Partner-klassen og sjekke (f.eks. med en separat hovedprogramklasse) at main-metode) at Partner-objektene oppfører seg som de skal. 

JExercise-testkode Testkode for denne oppgaven finner du her: objectstructures/PartnerTest.java. Original-koden (jextest) finner du her: objectstructures/Partner.jextest

Include Page
Bunntekst for JExercise- oppgaver
Bunntekst for JExercise- oppgaver