Skip to content
Snippets Groups Projects
Commit 9d3e3234 authored by Paul Rauser's avatar Paul Rauser
Browse files

chore: write clean solution code

parent f1b78702
No related branches found
No related tags found
No related merge requests found
# 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
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());
}
}
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) {
......
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!");
......
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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment