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

Compare with Current View Page History

Version 1 Next »

Oppgaven handler om en Person-klasse, som håndterer informasjon om en person. Denne klassen handler om innkapsling og validering.

Et Person-objekt har følgende tilstander:

  • name- en persons hele navn (både fornavn og etternavn). Både fornavn og etternavn må være minst to bokstaver langt og skilles med mellomrom. Et navn kan kun inneholde bokstaver.
  • email – en persons epost-adresse. En epost må inneholde en alfakrøll. I tillegg må en av karakterene etter alfakrøllen være et punktum. Minimumslengden for en epost er 6 karakterer.
  • birthday – en persons fødselsdag. Tilstanden bør lagres som en streng i formatet ”DDMMÅÅ”. Dag, måned og år må alle ha gyldige verdier. Dvs. at ”420293” ikke skal godtas som en gyldig fødselsdag.
  • gender – en persons kjønn. Tilstanden bør representeres som 'M' eller 'F'.

Person-klassen har tilgangsmetoder for å hente og sette tilstandene. Metodene for å sette tilstandene må validere at navn og epost som settes er gyldige.

Del 1 – Java-kode

Implementer Person-klassen med stram innkapsling. Eventuelle hjelpemetoder for validering bør også ha stram innkapsling.

Del 2 – Ekstraoppgave: Fødselsnummer

Utvid klassen med en tilstand socialSec, som representerer en persons fødselsnummer. Et fødselsnummer kan ikke settes før kjønn og fødselsdag er satt.

Et personnummer består grovt sett av fødselsdatoen, et (vilkårlig) løpenummer og to kontrollsifre. Kontrollsifrene gjør det enklere å sjekke om et personnummer er ekte. Mer spesifikt er reglene for personnummer som følger:

  • Et personnummer består av 11 siffer, med følgende struktur: D1D2M1M2Y1Y2N1N2N3K1K2  (fargen illustrerer siffergruppene).
  • De seks første sifrene, D1D2M1M2Y1Y2, tilsvarer fødselsdatoens dag (1-31), måned (1-12) og år (0-99).
  • De tre neste sifrene, N1N2N3, kan antas å være vilkårlige, men N3 må være partall for kvinner og oddetall for menn.
  • De to siste sifrene, K1K2, er kontrollsifre, som hver for seg beregnes ut fra de foregående sifrene. Formelen for dem begge er 11 – (VS % 11), hvor VS (veid sum) for K1 er D1*F1 + D2*F2 + … + N2*F8 + N3*F9 og VS for K2 er D1*G1 + D2*G2 + … + N3*G9 + K1*G10.  F’ene og G’ene er oppgitt i tabellen under. Dersom formelen gir et ett-sifret resultat for både K1 og K2 så er personnummeret gyldig, mens gir formelen et to-sifret resultat for K1 og/eller K2, så er personnummeret ugyldig.

Implementer kode for å sette og validere et gyldig personnummer.

JExercise-testkode for denne oppgaven finner du her: 


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