From 9d3e3234ad6eac8ea51ac4c47d2bbd34a64490f7 Mon Sep 17 00:00:00 2001 From: Paul Rauser <paulr@Pauls-MacBook-Air.local> Date: Mon, 2 Sep 2024 16:32:27 +0200 Subject: [PATCH] chore: write clean solution code --- README.md | 75 +++++++++++++++++++++++++++++++++++ src/dormitory/App.java | 9 +++-- src/dormitory/Dormitory.java | 14 +++---- src/dormitory/SharedFlat.java | 12 +++--- src/dormitory/Student.java | 6 ++- 5 files changed, 98 insertions(+), 18 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c5ade9e --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# 1.02 Studierendenwohnheim + +**Voraussetzungen**: Keine + +**Ziel**: +Erstellung einer kleinen Java-Anwendung, um das Ein- und Ausziehen von Studierenden in einem Wohnheim zu simulieren. Dabei soll das System sicherstellen, dass Studierende nur einziehen können, wenn ausreichend Platz in einer WG vorhanden ist. + +**Dauer**:< 90 Minuten + +**Lösung**: +Die Lösung zur Implementierung dieses Szenarios befindet sich im Quellcode der Klassen `Student`, `SharedFlat` und `Dormitory`. + +## Aufgabenstellung +In einem Studierendenwohnheim können mehrere WGs (Wohngemeinschaften) existieren, in denen Studierende wohnen. Es muss die Möglichkeit bestehen, dass neue Studierende einziehen oder ausziehen. Es darf nur ein Studierender einziehen, wenn in der entsprechenden WG noch Platz ist. + +### Programmieren Sie die folgenden Klassen: + +#### 1. **Student**: + - **Attribute**: + - `String name`: Der Name des Studierenden. + - `String studyProgram`: Das Studienfach des Studierenden. + - **Konstruktor**: + - Parameter: `name` und `studyProgram`. + - **Methoden**: + - Getter & Setter für die Attribute `name` und `studyProgram`. + +#### 2. **SharedFlat** (WG): + - **Attribute**: + - `java.util.ArrayList<Student>`: Liste von Studierenden, die in der WG wohnen. + - `int maxNumberOfStudents`: Maximale Anzahl der Studierenden, die in der WG wohnen dürfen. + - **Konstruktoren**: + - Default-Konstruktor: Erstellt eine WG für maximal **einen** Studierenden. + - Alternativer Konstruktor: Erstellt eine WG mit einer anzugebenden maximalen Anzahl von Studierenden. + - **Methoden**: + - `getStudents()`: Liefert die Liste der in der WG wohnenden Studierenden. + - `getNumberOfStudents()`: Gibt die Anzahl der tatsächlich in der WG wohnenden Studierenden zurück. + - `addStudent(Student student)`: Fügt einen Studierrnden zur WG hinzu. Sollte die WG voll sein, gibt das System eine Meldung aus: "This student can not move in." (via `System.out.println`)r + +#### 3. **Dormitory** (Wohnheim): + - **Attribute**: + - `java.util.ArrayList<SharedFlat>`: Liste der vorhandenen WGs. + - **Konstruktoren**: + - Default-Konstruktor: Erstellt ein Wohnheim mit einer WG für **einen** Studierenden. + - Alternativer Konstruktor: Erstellt ein Wohnheim mit einer übergebenen Liste von WGs. + - **Methoden**: + - `getTotalStudents()`: Ermittelt und gibt die Anzahl aller im Wohnheim lebenden Studierenden zurück. + - `getStudentNames()`: Gibt eine Liste mit den Namen aller im Wohnheim lebenden Studierenden zurück (`java.util.ArrayList<String>`). + +## Szenario in der ausführbaren Klasse `App` + +Implementieren Sie eine `main`-Methode in der Klasse `App`, mit folgendem Szenario: + +1. Erstellen Sie zwei WGs: + - WG #1: Für maximal **2** Studierende. + - WG #2: Für maximal **3** Studierende. + +2. Speichern Sie die WGs in einer Liste und fügen Sie diese dem Wohnheim hinzu indem Sie ein neues Wohnheim erstellen und diesem die Liste der WGs übergeben. + +3. Legen Sie **6 Studierende** an: + - Lassen Sie **zwei Studierende** in WG #1 einziehen. + - Lassen Sie **drei Studierende** in WG #2 einziehen. + - Versuchen Sie, den **sechsten Studierenden** in WG #2 einziehen zu lassen. Vergewissern Sie sich, dass dies nicht funktioniert. + +4. Geben Sie die Anzahl aller im Wohnheim lebenden Studierenden sowie deren Namen auf der Konsole aus. + +### Beispielausgabe: +```plaintext +Abe moved in! +Bob moved in! +Joe moved in! +Kay moved in! +Jim moved in! +Tom can't move in. +Names of students in the dormitory: [Abe, Bob, Joe, Kay, Jim] +Number of students living in the dormitory: 5 \ No newline at end of file diff --git a/src/dormitory/App.java b/src/dormitory/App.java index 840d90d..2f85978 100644 --- a/src/dormitory/App.java +++ b/src/dormitory/App.java @@ -1,10 +1,10 @@ -package io.fp.dormitory; +package dormitory; + import java.util.ArrayList; public class App { public static void main(String[] args) { - SharedFlat flat1 = new SharedFlat(2); SharedFlat flat2 = new SharedFlat(3); @@ -12,7 +12,7 @@ public class App { flats.add(flat1); flats.add(flat2); - Dormitory dormi = new Dormitory(flats); + Dormitory dorm = new Dormitory(flats); Student student1 = new Student("Abe", "WIB"); Student student2 = new Student("Bob", "WIB"); @@ -28,7 +28,8 @@ public class App { flat2.addStudent(student5); flat2.addStudent(student6); - System.out.println(dormi.numberOfStudents()); + System.out.println("Names of students in the dormitory: " + dorm.getStudentNames()); + System.out.println("Number of students living in the dormitory: " + dorm.numberOfStudents()); } } diff --git a/src/dormitory/Dormitory.java b/src/dormitory/Dormitory.java index 4109fc6..9ac4b1c 100644 --- a/src/dormitory/Dormitory.java +++ b/src/dormitory/Dormitory.java @@ -1,17 +1,16 @@ -package io.fp.dormitory; +package dormitory; + import java.util.ArrayList; public class Dormitory { - + private ArrayList<SharedFlat> flats; - + public Dormitory() { flats = new ArrayList<>(); -// SharedFlat myWg = new SharedFlat(1); -// flats.add(myWg); flats.add(new SharedFlat()); } - + public Dormitory(ArrayList<SharedFlat> flats) { this.flats = flats; } @@ -19,10 +18,11 @@ public class Dormitory { public int numberOfStudents() { int number = 0; for (SharedFlat flat : flats) { - number+= flat.getNumberOfStudents(); + number += flat.getNumberOfStudents(); } return number; } + public ArrayList<String> getStudentNames() { ArrayList<String> names = new ArrayList<>(); for (SharedFlat flat : flats) { diff --git a/src/dormitory/SharedFlat.java b/src/dormitory/SharedFlat.java index bc813dd..b717b8f 100644 --- a/src/dormitory/SharedFlat.java +++ b/src/dormitory/SharedFlat.java @@ -1,19 +1,19 @@ -package io.fp.dormitory; +package dormitory; + import java.util.ArrayList; public class SharedFlat { - private ArrayList<Student> students; private int maxNumberOfStudents; public SharedFlat() { students = new ArrayList<>(); - maxNumberOfStudents=1; + maxNumberOfStudents = 1; } public SharedFlat(int maxNumberOfStudents) { students = new ArrayList<>(); - this.maxNumberOfStudents=maxNumberOfStudents; + this.maxNumberOfStudents = maxNumberOfStudents; } public ArrayList<Student> getStudents() { @@ -21,8 +21,8 @@ public class SharedFlat { } public void addStudent(Student student) { - if (students.size()>=maxNumberOfStudents) { - System.out.println("No more places in this flat!"); + if (students.size() >= maxNumberOfStudents) { + System.out.println(student.getName() + " can't move in."); } else { students.add(student); System.out.println(student.getName() + " moved in!"); diff --git a/src/dormitory/Student.java b/src/dormitory/Student.java index a37d518..cbd6494 100644 --- a/src/dormitory/Student.java +++ b/src/dormitory/Student.java @@ -1,4 +1,4 @@ -package io.fp.dormitory; +package dormitory; public class Student { @@ -9,15 +9,19 @@ public class Student { this.name = name; this.studyProgram = studyProgram; } + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getStudyProgram() { return studyProgram; } + public void setStudyProgram(String studyProgram) { this.studyProgram = studyProgram; } -- GitLab