Versions Compared

Key

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

Oppgaven handler om en Person-klasse, som håndterer informasjon om en person

...

(navn, e-post, fødselsdato og kjønn) og implementerer innkapslingsmetoder med validering.

Et Person-objekt har et inneholder navn (både fornavn og etternavn), epost e-post, fødselsdag og kjønn. :

  • Navnet inneholder både fornavn og etternavn, som begge må være minst to bokstaver langt

...

  • , navnene må være skilt med mellomrom

...

  • og kun inneholde bokstaver.

...

  • E-post-adressen (hvis den ikke er null) må være på formen fornavn.etternavn@domene.landskode, f.eks. hallvard.trætteberg@ntnu.no (en liste over landskoder finner du på http://countrycode.org/).
  •  Fødselsdagen skal være et dato-objekt (java.util.Date) og kan ikke være frem i tid. 
  • En persons kjønn skal kunne returneres som 'M', 'F' eller '

...

  • \0' (null-tegnet).

Person-klassen har tilgangsmetoder for å hente og sette tilstandene. Metodene for å sette tilstandene må validere at navn og epost som settes er gyldigeDersom et argument er ugyldig i seg selv, så skal unntaket IllegalArgumentException utløses. Dersom et argument ikke stemmer med andre verdier i objektet så skal unntaket IllegalStateException utløses.

  • setName(String)  - oppdaterer navnet (fornavn og etternavn med mellomrom mellom), dersom det er gyldig i henhold til kravene over. Det er greit om navnet som settes, ikke stemmer med e-post-adressen.
  • setEmail(String)  - oppdaterer e-post-adressen, etter å ha sjekket at den stemmer med navnet.
  • setBirthday(StringDate) - oppdaterer fødselsdatoen
  • setGender(char) - oppdaterer kjønnet

I tillegg til disse såkalte setter-metodene, så må Person-klassen ha tilsvarende getter-metoderAlle metodene skal ta inn et argument sette tilstanden lik argument-verdien dersom argumentet er gyldig. I tillegg må Person-objektet ha hentemetoder for å hente navn, epost, fødselsdag og kjønn.

Del 1 – Java-kode

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

JExercise-testkode for denne oppgaven finner du her: encapsulation/PersonTest.java

Del 2 - Spørsmål om innkapsling

Foreslå en alternativ innkapsling av navnet. Hint: del opp.

Foreslå to alternative strategier for å kapsle inn tilstand som er koblet slik navn og e-post er. Hint: 1) samtidig og 2) dekoble.

Del 3 – Ekstraoppgave:

...

Personnummer

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

...

Implementer kode for å sette (med metoden setSSN(String) og validere et gyldig personnummer.

...

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