Hi, also hier eimal die Anforderung (ich werde sie als Bild anhängen, sry, aber somit geht am wenigsten Information verloren ):

Mein Ansatz:
Meine Probleme:
1. wie erstelle ich die checken Methode für returnDate , auf was muss dies überprüft werden?
2. wie operieren ich mit dem Ausleihsystem? Also muss ich eine Methode schrieben, die wenn sie aufgerufen wird überprüft ob Status "not rent" ist und dieses dann auf "rent" setzt und returnDate auf "14 Tage später" ?
3. Das gleiche für zurückgeben ?
4. Ich müsste wahrscheinlich eine extra Klasse schreiben für die Verwaltung. In dieser müsste dann die checken Methoden sein und die Methoden fürs ausleihen/zurückgeben , oder?

Mein Ansatz:
Java:
public class Book {
private String author;
private String title;
private LocalDate returnDate = null;
private String status;
public Book(String author, String title, String Status) throws IllegalArgumentException{
setAuthor(author);
setTitle(title);
setReturnDate(returnDate);
setStatus(status);
}
private static boolean checkAuthor(String author){
return (author.matches("[a-zA-ZäÄöÖüÜß ]") && author.length() >= 2);
}
private static boolean checkTitle(String title){
return (title.length() >= 1 && title.length() < 10);
}
public static boolean checkReturnDate(LocalDate returnDate){
return ( );
}
public static boolean checkStatus(String status){
return (status.equals("rent") || status.equals("not rent"));
}
public final void setAuthor(String author) throws IllegalArgumentException{
if(!checkAuthor(author)){
throw new IllegalArgumentException("author not valid: "+ author);
}
this.author = author;
}
public final void setTitle(String title) throws IllegalArgumentException{
if(!checkTitle(title)){
throw new IllegalArgumentException("title not valid: "+ title);
}
this.title = title;
}
private void setReturnDate(LocalDate returnDate) throws IllegalArgumentException{
if(!checkReturnDate(returnDate)){
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd.MM.yyyy");
throw new IllegalArgumentException("Return Date not valid: " + returnDate.format(dtf));
}
this.returnDate = returnDate;
}
private void setStatus(String status){
if(!checkStatus(status)){
throw new IllegalArgumentException("Status not valid:" + status);
}
this.status = status;
}
public String getAuthor(){
return this.author;
}
public String getTitle(){
return this.title;
}
public LocalDate getReturnDate(){
return this.returnDate;
}
public String getStatus(){
return this.status;
}
@Override
public boolean equals(Object o) {
if (o == null) return false;
if (!(o.getClass().equals(this.getClass())))
return false;
Book a = (Book) o;
return (a.getTitle() == this.getTitle());
}
@Override
public String toString () {
return getAuthor() + " : " + getTitle() + ".";
}
}
1. wie erstelle ich die checken Methode für returnDate , auf was muss dies überprüft werden?
2. wie operieren ich mit dem Ausleihsystem? Also muss ich eine Methode schrieben, die wenn sie aufgerufen wird überprüft ob Status "not rent" ist und dieses dann auf "rent" setzt und returnDate auf "14 Tage später" ?
3. Das gleiche für zurückgeben ?
4. Ich müsste wahrscheinlich eine extra Klasse schreiben für die Verwaltung. In dieser müsste dann die checken Methoden sein und die Methoden fürs ausleihen/zurückgeben , oder?