Kode for Person-grensesnitt med metoder for å lese og sette fornavn (givenName), etternavn (familyName) og fullt navn (fullName - leser/setter implisitt de to andre):
Code Block |
---|
|
package interfaces;
public interface Person {
public String getGivenName();
public void setGivenName(String givenName);
public String getFamilyName();
public void setFamilyName(String familyName);
public String getFullName();
public void setFullName(String fullName);
} |
Kode for Person1-implementasjon, som bruker to felt for henholdvis fornavn (givenName) og etternavn (familyName), som også brukes av getFullName og setFullName:
Code Block |
---|
|
package interfaces;
public class Person1 implements Person {
private String givenName;
private String familyName;
public Person1(String givenName, String familyName) {
this.givenName = givenName;
this.familyName = familyName;
}
@Override
public String toString() {
return getFullName();
}
public String getGivenName() {
return this.givenName;
}
public void setGivenName(String givenName) {
String errorMessage = checkValidName(givenName);
if (errorMessage != null) {
throw new IllegalArgumentException(errorMessage);
}
this.givenName = givenName;
}
public String checkValidName(String givenName) {
for (int i = 0; i < givenName.length(); i++) {
char c = givenName.charAt(i);
if (! Character.isLetter(c)) {
return "Tegnet " + c + " på posisjon " + i + " i " + givenName + " er ikke lov i et navn! Kun bokstaver er lov, nemlig!";
}
}
return null;
}
public String getFamilyName() {
return this.familyName;
}
public void setFamilyName(String familyName) {
checkValidName(familyName);
this.familyName = familyName;
}
public String getFullName() {
return this.givenName + " " + this.familyName;
}
public void setFullName(String fullName) {
int pos = fullName.indexOf(' ');
this.givenName = fullName.substring(0, pos);
this.familyName = fullName.substring(pos + 1);
}
} |
Kode for Person2-implementasjon, som bruker ett felt for fullt navn (fullName) , som brukes av alle get- og set-metodene:
Code Block |
---|
|
package interfaces;
public class Person2 implements Person {
private String fullName;
public Person2(String fullName) {
this.fullName = fullName;
}
public String getFullName() {
return this.fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getGivenName() {
return this.fullName.substring(0, this.fullName.indexOf(' '));
}
public void setGivenName(String givenName) {
this.fullName = givenName + " " + getFamilyName();
}
public String getFamilyName() {
return this.fullName.substring(this.fullName.indexOf(' ') + 1);
}
public void setFamilyName(String familyName) {
this.fullName = getGivenName() + " " + familyName;
}
} |