Versions Compared

Key

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

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: 

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