Versions Compared

Key

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

...

Ta som eksempel et attributt for et person-navn, som skal være på minst 2 tegn og bare skal kunne inneholde bokstaver, mellomrom og bindestreker (eng: hyphen). Dette kan sjekkes med en valideringsmetode som returnerer en logisk verdi, true for gyldige verdier og false for ugyldige:

Code Block
languagejava
titleValideringsmetode som returnerer en logisk verdi
String name;

boolean isValidName(String name) {
	// no name can be less than two characters
	if (name.length < 2) {
		return false;
	}
	// a name can only contain letters, spaces and hyphens
	for (int i = 0; i < name.length(); i++) {
		char c = name.charAt(i);
		if (! (Character.isLetter(c) || c == ' ' || c == '-')) {
			return false;
		}
	}
	return true;
}

void setName(String name) {
	if (! isValidName(name)) {
		throw new IllegalArgumentException("A name must be at least two characters and can only contain letters, space or hyphens, but was " + name);
	}
	this.name = name;
}
PlantUML Macro
class Person {
	String name
	boolean isValidName(String)
	void setName(String)
}

 

Problemet med validering er altså delt i to: Valideringsmetoden sjekker gydlighet og setteren kaller valideringsmetoden og utløser et evt. unntaket. Ulempen med denne arbeidsfordelingen er at setteren må angi en melding til unntaksobjektet uten spesifikk kunnskap om hvorfor valideringsmetoden returnerte false. Dermed må feilmelding være generell istedenfor spesfikk for feilen. Et alternativ er derfor å utløse unntaket i valideringsmetoden, istedenfor å returnere true eller false:

...