...
- Navnet inneholder både fornavn og etternavn (og ingen mellomnavn), som begge må være på minst to bokstaver langt, navnene må være skilt med ett 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/ her).
- 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. Dersom 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(Date) - oppdaterer fødselsdatoen
- setGender(char) - oppdaterer kjønnet
I tillegg til disse såkalte setter-metodene, så må Person-klassen ha tilsvarende getter-metoder.
Leseliste
Gyldig tilstand |
| ||||||||
Innkapsling |
| ||||||||
Koding av valideringsmetoder |
| ||||||||
String-klassen |
|
Del 1 – Java-kode
Implementer Person-klassen med stram innkapsling. Eventuelle hjelpemetoder for validering bør også ha stram innkapsling.. Det kan være lurt å lese om String-klassen og dens metoder før du setter i gang.
Testkode JExercise-testkode for denne oppgaven finner du her: encapsulation/PersonTest.java
Merk at din implementasjon må ligge i en pakke med samme navn som testkodens pakke. Pass derfor på at Person-klassen ligger i pakken "encapsulation".
Del 2 - Spørsmål om innkapsling
...
Foreslå to alternative strategier for å kapsle inn tilstand som er koblet slik navn og e-post er. Hint: 1) samtidig og 2) dekoble.
...
Ekstraoppgave: Personnummer
Utvid klassen med en 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.
JExercise-testkode Testkode for denne oppgaven finner du her: encapsulation/PersonTest2.java.
Include Page | ||||
---|---|---|---|---|
|