Versions Compared

Key

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

...

Figurene under illustrerer tilfellene som må kunne håndteres, og som testes av testene det er lenket til.

p31p4Partnerp41p31 -> p41: partner
PlantUML Macro
object "p1hallvard: PartnerPerson" as p11 {
}
object "p2marit: PartnerPerson" as p21 {
}
object "jens: Person" as p31 {
}

 

 

hallvard.addChild(jens)

marit.addChild(jensp1.setPartner(p2)

PlantUML Macro
object "p1hallvard: PartnerPerson" as p12 {
}
object "p2marit: PartnerPerson" as p22 {
}
p12 -> p22: partner
object "jens: Person" as p32 {
}
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 "p1hallvard: PartnerPerson" as p11 {
}
object "p2marit: PartnerPerson" as p21 {
}
p11 -> p21: partner
object "jens: Person" as p31 {
}

 

 

p1.setPartner(null

jens.setFather(hallvard)

jens.setMother(marit)

PlantUML Macro
object "p1hallvard: PartnerPerson" as p12 {
}
object "p2marit: PartnerPerson" as p22 {
}
object "jens: Person" as p32 {
}
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 "p1hallvard: PartnerPerson" as p11 {
}
object "p2marit: PartnerPerson" as p21 {
}
p11 -> p21: partner
object "p3: Partnerobject "jens: Person" as p31 {
}

 

 

hallvard.removeChild(jens)

marit.removeChild(jens)


PlantUML Macro
object "hallvard: Person" as 
p12 {
}
object "
marit: 
Person" as 
p22 {
}
object "jens: Person" as p32 {
}

 

 

p1.setPartner(p3)

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.
PlantUML Macro
object "hallvard: Person" as p11 {
}
object "marit: Person
PlantUML Macro
object "p1: Partner" as p12p21 {
}
object "p2jens: PartnerPerson" as p22p31 {
}
 

jens.setFather(null)

jens.setMother(null)

PlantUML Macro
object "p3hallvard: PartnerPerson" as p32p12 {
}
object "p4marit: PartnerPerson" as p42p22 {
}
p12 ->object "jens: Person" as p32: 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.
 

Oppgaven er delt i to trinn, den første håndterer children- og mother/father-rollen isolert og uten krav om konsistens, mens det andre skal sikre konsistens.

Trinn 1

  • Implementer addChild- og removeChild-metodene slik at getChildCount- og getChild-metodene virker som forventet. Disse metodene håndterer altså kun children-rollen.
  • Implementer setMother- og setFather-metodene slik at getMother- og getFather-metodene virker som forventet. Disse metodene håndteres altså kun mother/father-rollen.

Test metodene ved å koble opp Person-objekter tilsvarende din egen familie. Du blir nødt til å bruke de tre metodene addChild, setMother og setFather. Prøv å få med minst tre generasjoner.

Trinn 2

Utvid metodene til å sikre konsistens. Test at det fortsatt virker å koble opp din egen familie, denne gangen ved å bare bruke addChild og ved å bare bruke setMother og setFather.

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

JExercise-testkode for denne oppgaven finner du her: objectstructures/PartnerTestPersonTest.java.

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