You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Denne oppgaven handler om en Partner-klasse med en 1-1-assosiasjon kalt partner tilbake til samme klasse (altså kjønnsnøytralt partnerskap) og det å sikre konsistens, slik at Partner-objekter er parvis 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-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 skal inneholde informasjon om navn (en String), som bare skal kunne settes i konstruktøren, og partneren, som er et annet Partner-objekt. Navnet er ikke viktig for oppførselen, men er grei å ha med i en toString()-metode, for å skille Partner-objektene fra hverandre. Partner-klassen skal ha følgende metoder for å lese tilstanden:

  • getName() - returnerer navnet knyttet til dette Partner-objektet
  • getPartner() - returnerer Partner-objektet som er knyttet til dette Partner-objektet, evt. null, hvis partnerskap ikke er inngått

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.

p1: Partnerp2: Partner

 

 

p1.setPartner(p2)

p1: Partnerp2: PartnerpartnerInngå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.
p1: Partnerp2: Partnerpartner

 

 

 

p1.setPartner(null)
p1: Partnerp2: PartnerOpplø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.
p1: Partnerp2: Partnerp3: Partnerp4: Partnerpartnerpartner

 

 

p1.setPartner(p3)

p1: Partnerp2: Partnerp3: Partnerp4: PartnerpartnerOpplø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 (enkelt og greit) å implementere Partner-klassen og sjekke (f.eks. med en separat hovedprogramklasse) at Partner-objektene oppfører seg som de skal.

 


JExercise lar deg sjekke din egen kode vha. forhåndslagde JUnit-tester og JExercise-panelet

Bruk av JExercise:

  1. Sørg for at jexercise-standalone.jar er lagt til i ditt prosjekts Build Path. Dette må gjøres hver gang du oppretter et nytt prosjekt, og det er derfor lurt å gjenbruke samme prosjekt til alle oppgaver.
  2. JExercise-tillegget må være installert. Installer tillegget fra følgende oppdateringsadresse: http://folk.ntnu.no/hal/dev/updatesite.
  3. Åpne JExercise-panelet via Window -> Show View -> Other, og navigere deg fram til JExercise i vinduet som kommer opp, velge det og klikke OK.
  4. Klikke og dra oppgavens testklasse, <oppgavenavn>Test.java fra pakkeoversikten og slippe den i JExercise panelet. 
  5. Testene kan så kjøres ved å dobbeltklikke på testen som ønskes kjørt.

Ved trøbbel, se først om du finner løsningen i Løsninger på trøbbel med JExercise.

Unknown macro: {html}

Twitre gjerne om oppgaven når du er ferdig: <a href="https://twitter.com/share" class="twitter-share-button" data-hashtags="jexercise">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

 

  • No labels