public class Student {
private static final int MAX_SIZE = 20;
private static final String NONE = "<Κενό>";
private static final String NO_CLASSROOM = "--";
private static final int CLASSROOM_NAME_LENGTH = 2;
private static int amCounter = 0;
private final int am;
private String firstName = NONE;
private String lastName = NONE;
private int age = -1; // 15-18
private String classRoom = NO_CLASSROOM;
public Student(String firstName, String lastName, int age) {
am = ++amCounter;
if (isNameValid(firstName)) {
this.firstName = firstName.trim();
}
if (isNameValid(lastName)) {
this.lastName = lastName.trim();
}
if (isAgeValid(age)) {
this.age = age;
}
}
public int getAm() {
return am;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = isNameValid(firstName) ? firstName.trim() : NONE;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = isNameValid(lastName) ? lastName.trim() : NONE;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = isAgeValid(age) ? age : -1;
}
public String getClassRoom() {
return classRoom;
}
public void setClassRoom(String classRoom) {
this.classRoom = isClassRoomValid(classRoom) ? classRoom : NO_CLASSROOM;
}
@Override
public String toString() {
return "Student{" + "am=" + am + ", firstName=" + firstName + ", lastName=" + lastName + ", age=" + age + ", classRoom=" + classRoom + '}';
}
private boolean isAgeValid(int inAge) {
return inAge >= 15 && inAge <= 18;
}
private boolean isNameValid(String name) {
return !name.isBlank() && name.length() <= MAX_SIZE;
}
private boolean isClassRoomValid(String classRoom) {
return !classRoom.isBlank() && classRoom.length() == CLASSROOM_NAME_LENGTH
&& (classRoom.startsWith("Α")
|| classRoom.startsWith("Β")
|| classRoom.startsWith("Γ"))
&& classRoom.charAt(1) >= '1'
&& classRoom.charAt(1) <= '9';
}
public static void main(String[] args) {
Student ioannis = new Student("Γιάννης", "Αντεκοτούμπο", 16);
System.out.println("AM: " + ioannis.getAm()); // 1
ioannis.setClassRoom("Β1");
System.out.println(ioannis.getClassRoom()); // Β1
}
}