Versions Compared

Key

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

...

Vi bruker her konvensjonene til Java, som sier at metoden må hete set<attributtnavn med stor forbokstav>, at den må skal returnere ikke returnerer noen verdi (void) og må ta inn ett parameter av samme type som attributtet. Dersom koden er som over, er vi sikret at length aldri kan bli negativ. En annen variant er å utløse et unntak, som følger:

...

I mange tilfeller finnes det avhengigheter mellom attributter, slik at en ikke bare har krav til gydlighet gyldighet for hvert attributt med ytterlige regler for hvilke kombinasjoner av verdier som er gyldige. Slike avhengigheter mellom flere verdier, kalles gjerne konsistens. Eksempler på dette er datoer og personnumre. Øvre grense for antall dager varierer ikke bare med måneden, men også med om det er skuddår. For personnumre kreves det at de første seks sifrene er en gyldig dato og at det midterste av de fem siste sifrene er et partall for kvinner og oddetall for menn.

...

Code Block
languagejava
titleDato-objekt med kompleks setter-metode
int day, month, year;

boolean isValidDate(int day, int month, int year) {
	... check validity ...
}

void setDate(int day, int month, int year) {
	// check new day, month and year
	if (! isValidDate(day, month, year)) {
		throw new IllegalArgumentExceptionIllegalStateException(... appropriate message ...);
	}
	this.day = day;
	this.month = month;
	this.year = year;
}

...

Code Block
// provide valid default values, e.g. start time for Unix, must be valid
int day = 1, month = 1, year = 1971

// or a constructor
public Date(int day, int month, int year) {
	// check new day, month and year
	if (! isValidDate(day, month, year)) {
		throw new IllegalArgumentExceptionIllegalStateException(... appropriate message ...);
	}
	this.day = day;
	this.month = month;
	this.year = year;
}

...