Versions Compared

Key

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

...


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 == null || 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) throws IllegalArgumentException {
	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) throws IllegalArgumentException
}


...


Code Block
languagejava
titleValideringsmetode som utløser unntak
String name;

void checkName(String name) throws IllegalArgumentException {
	// no name can be less than two characters
	if (name == null || name.length() < 2) {
		throw new IllegalArgumentException("The name is too short, it must be at least two characters");
	}
	// 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 == '-')) {
			throw new IllegalArgumentException("'" + c + "' is an illegal character, a name can only contain letters, space or hyphens");
		}
	}
}

void setName(String name) {
	checkName(name);
	this.name = name;
}



PlantUML Macro
class Person {
	String name
	void checkName(String) throws IllegalArgumentException
	void setName(String)
}


...


Code Block
languagejava
titleValideringsmetode som returnerer unntaksmelding
String validateName(String name) {
	// no name can be less than two characters
	if (name == null || name.length() < 2) {
		return "The name is too short, it must be at least two characters";
	}
	// 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 "'" + c + "' is an illegal character, a name can only contain letters, space or hyphens";
		}
	}
}

void setName(String name) {
	String message = validateName(name);
	if (message != null) {
		throw new IllegalArgumentException(message);
	}
	this.name = name;
}

Kode som kaller valideringsmetoden må huske meldingen, siden den skal brukes hvis den ikke er null.


Code Block
languagejava
titleValideringsmetode med argument som avgjør om evt. unntak skal utløses
boolean validateName(String name, boolean throwException) {
	// no name can be less than two characters
	if (name == null || name.length() < 2) {
		if (throwException) {
			throw new IllegalArgumentException("The name is too short, it must be at least two characters");
		}
		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 == '-')) {
			if (throwException) {
				throw new IllegalArgumentException("'" + c + "' is an illegal character, a name can only contain letters, space or hyphens");
			}
			return false;
		}
	return true;
}

void setName(String name) {
	validateName(name, true);
	this.name = name;
}

Setteren blir enkel, og koden utenfor klassen som ikke ønsker at unntak skal utløses, kaller valideringsmetoden med false som andre argument.

...