Versions Compared

Key

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

...

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

 

marit.addChild(jens)

hallvard.addChild(jens)

PlantUML Macro
object "hallvard: Person" as hallvard {
}
object "marit: Person" as marit {
}
object "jens: Person" as jens {
}
marit -> jens: children
jens -> marit: mother
hallvard -> jens: children
jens -> hallvard: father 

Opprettelse av koblinger med addChild.

(Samme effekt som under)

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

 

jens.setMother(marit)

jens.setFather(hallvard)

PlantUML Macro
object "hallvard: Person" as hallvard {
}
object "marit: Person" as marit {
}
object "jens: Person" as jens {
}
marit -> jens: children
jens -> marit: mother
hallvard -> jens: children
jens -> hallvard: father 

Opprettelse av koblinger med setMother og setFather.

(Samme effekt som over)

PlantUML Macro
object "hallvard: Person" as hallvard {
}
object "marit: Person" as marit {
}
object "jens: Person" as jens {
}
marit -> jens: children
jens -> marit: mother
hallvard -> jens: children
jens -> hallvard: father

 

marit.removeChild(jens)

hallvard.removeChild(jens)


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

 

 

Fjerning av koblinger med removeChild.

(Samme effekt som under)

PlantUML Macro
object "hallvard: Person" as hallvard {
}
object "marit: Person" as marit {
}
object "jens: Person" as jens {
}
marit -> jens: children
jens -> marit: mother
hallvard -> jens: children
jens -> hallvard: father 

 

jens.setMother(null)

jens.setFather(null)

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

Fjerning av koblinger med setMother og setFather.

(Samme effekt som over)

PlantUML Macro
object "hallvard: Person" as hallvard {
}
object "marit: Person" as marit {
}
object "jens: Person" as jens {
}
object "torkel: Person" as torkel {
}
object "jorunn: Person" as jorunn {
}
marit -> jens: children
jens -> marit: mother
hallvard -> jens: children
jens -> hallvard: father 

jens.setFather(torkel)

jens.setMother(jorunn)

PlantUML Macro
object "hallvard: Person" as hallvard {
}
object "marit: Person" as marit {
}
object "jens: Person" as jens {
}
object "torkel: Person" as torkel {
}
object "jorunn: Person" as jorunn {
}
jorunn -> jens: children
jens -> jorunn: mother
torkel -> jens: children
jens -> torkel: father 
Fjerning og oppretting av kobling med setMother og setFather, en slags "adoption".

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.

...

.

Exercise-panelet

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

Del 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.

...

Del 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. Kjør JUnit-testene som hører til oppgaven.

 

JExercise-testkode Testkode for denne oppgaven finner du her: objectstructures/PersonTest.java. Originalkoden (jextest) for testen finner du her: objectstructures/Person.jextest..ex for bruk med Exercise-panelet finner du her: Person.ex.

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