Excerpt |
---|
Denne oppgaven handler om en Person-klasse med en 1-n-assosiasjon med rollene children og mother/father til samme klasse (altså barn-mor/far-forhold) og det å sikre konsistens, slik at foreldre og barn er korrekt knyttet sammen. |
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-n-assosiasjoner er foreldreskap, hvor foreldre og barn er koblet til samme i et slektstre. I denne oppgaven skal en Person-klasse implementeres og de det å legge til (og fjerne) barn håndteres korrekt, som illustrert nedenfor.
...
Fra children-perspektivet har vi følgende to metoder:
- addChlidaddChild(Person) - oppretter en kobling til et barn (et annet Person-objekt). Dersom Person-objektet som metoden kalles på, er en kvinne, så skal denne bli barnets mor, og motsatt, dersom Person-objektet som metoden kalles på, er en mann, så skal denne bli barnets far.
- removeChild(Person) - fjerner en kobling til et barn (et annet Person-objekt). Dersom Person-objektet som metoden kalles på, er moren til argumentet, så skal mother-koblingen fjernes, og motsatt, dersom Person-objektet som metoden kalles på, er argumentets far, så skal father-koblingen fjernes.
...
|
marit.addChild(jens) hallvard.addChild(jens) |
| Opprettelse av koblinger med addChild. (Samme effekt som under) | ||||
|
jens.setMother(marit) jens.setFather(hallvard) |
| Opprettelse av koblinger med setMother og setFather. (Samme effekt som over) | ||||
|
marit.removeChild(jens) hallvard.removeChild(jens) |
| Fjerning av koblinger med removeChild. (Samme effekt som under) | ||||
|
jens.setMother(null) jens.setFather(null) |
| Fjerning av koblinger med setMother og setFather. (Samme effekt som over) | ||||
| jens.setFather(torkel) jens.setMother(jorunn) |
| 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.
Include Page | ||||
---|---|---|---|---|
|