diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c5ade9e9d4ee61925eb6ad009fa98665e2d5eff4 --- /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 840d90dd1518a5efeb8271942e3caf8e6d37befd..2f859785ff8440651232c42943271c3070e205b0 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 4109fc6755c031805b09669da490173cafcf0e23..9ac4b1c85bc811dd7fea1993c62f71c39c39f686 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 bc813dd61ba740affb027a954d8e11f82ed510d8..b717b8fc6204412976cd6e18508a91cca1e94ee9 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 a37d518439c63a90b3c09dcacd6c40ab0bb39190..cbd64947f848e52e613cf94f73edf068e435bb4b 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; }