Fi-24So-FIA-2E
Aufgabe 1
1.1 10 Punkte
public class Bestellposition{
private String filialName;
private String bezeichnung;
private int anzahl;
public Bestellposition(String filialeName,String bezeichnung,int anzahl){
filialName=filialeName; // this nicht notwendig da unterschiedliche Bezeichner
this.bezeichnung=bezeichnung;
this.anzahl=anzahl;
}
public String getFilialName(){
return filialName;
}
public String getBezeichnung(){
return bezeichnung;
}
public int getAnzahl(){
return anzahl;
}
public String toString(){
return "Die Filiale " + filialName + " hat " + anzahl + " " + bezeichnung +" bestellt";
}
public static void test(){
Bestellposition b = new Bestellposition("Stuttgart","Hüte",4);
System.out.println(b.toString());
}
}
1.2 Lösung (4 Punkte)
Aggregation ist ein Konzept in der Unified Modeling Language (UML), das eine spezielle Art der Beziehung zwischen Klassen beschreibt. Es handelt sich um eine „hat-ein“-Beziehung, die zeigt, dass eine Klasse (das Aggregat) aus einer oder mehreren anderen Klassen (den Komponenten) besteht. Diese Beziehung ist weniger stark als die Komposition, da die Lebensdauer der Komponenten unabhängig von der Lebensdauer des Aggregats ist.
Merkmale der Aggregation:
- Schwache Beziehung: Die Komponenten können unabhängig vom Aggregat existieren. Wenn das Aggregat gelöscht wird, bleiben die Komponenten bestehen.
- Darstellung in UML: In UML-Diagrammen wird eine Aggregation durch eine leere Raute (♦) am Ende der Verbindungslinie dargestellt, die zum Aggregat zeigt.
- Beispiel: Ein Beispiel für Aggregation könnte eine Klasse „Bibliothek“ sein, die aus mehreren „Büchern“ besteht. Die Bücher existieren unabhängig von der Bibliothek; selbst wenn die Bibliothek geschlossen wird, bleiben die Bücher weiterhin vorhanden.
UML-Diagramm Beispiel
Hier ist ein einfaches Beispiel für ein UML-Diagramm, das Aggregation zeigt:
+------------------+ +----------------+
| Bibliothek |<>------>| Buch |
+------------------+ +----------------+
| -name: String | | -titel: String |
| -adresse: String | | -autor: String |
+------------------+ +----------------+
In diesem Diagramm zeigt die leere Raute, dass die „Bibliothek“ eine Aggregation von „Buch“ hat. Die Bücher sind Teil der Bibliothek, können aber unabhängig existieren.
Fazit
Aggregation ist ein wichtiges Konzept in der UML, das hilft, die Beziehungen zwischen Klassen zu modellieren. Es ermöglicht eine klare Darstellung von Komponenten, die Teil eines größeren Ganzen sind, während sie dennoch ihre eigene Existenz und Identität behalten.
1.3 Lösung (6 Punkte)
Um zu begründen, warum Listen in einem bestimmten Anwendungsfall die bessere Wahl im Vergleich zu Mengen sind, können wir die folgenden Unterschiede und Eigenschaften von Listen und Mengen betrachten:
- Reihenfolge:
- Listen: Behalten die Reihenfolge der Elemente bei. Das bedeutet, dass die Position eines Elements in der Liste wichtig ist und auf diese Weise auf spezifische Elemente zugegriffen werden kann.
- Mengen: Haben keine feste Reihenfolge. Die Elemente können in beliebiger Reihenfolge gespeichert werden, was die Identifikation und den Zugriff auf spezifische Elemente erschwert.
- Duplikate:
- Listen: Erlauben Duplikate. Wenn es wichtig ist, dass ein Element mehrmals in der Sammlung vorkommen kann (z.B. in einer Aufgabenliste), sind Listen die geeignete Wahl.
- Mengen: Erlauben keine Duplikate. Jedes Element kann nur einmal vorhanden sein, was in einigen Anwendungsfällen unpraktisch sein kann.
- Zugriff auf Elemente:
- Listen: Bieten einen einfachen Zugriff auf Elemente über ihren Index. Wenn der Zugriff auf Elemente an einer bestimmten Position erforderlich ist, ist eine Liste vorteilhaft.
- Mengen: Bieten keinen Indexzugriff. Der Zugriff auf Elemente erfolgt in der Regel über Iteration oder spezielle Suchmethoden, was weniger effizient sein kann.
- Anwendungsfälle:
- Listen: Eignen sich gut für Szenarien wie Warteschlangen, Aufgabenlisten oder jede Art von Sammlung, bei der die Reihenfolge und mögliche Duplikate wichtig sind.
- Mengen: Sind besser geeignet für Szenarien, in denen die Einzigartigkeit der Elemente und die schnelle Überprüfung von Mitgliedschaften entscheidend sind (z.B. bei der Durchführung von Mengenoperationen).
- Leistung:
- Listen: Der Zugriff auf Elemente kann langsamer sein, wenn die Liste groß ist und eine lineare Suche erforderlich ist, jedoch ist der Zugriff auf Elemente über den Index sehr schnell.
- Mengen: Bieten in der Regel schnellere Überprüfungen, ob ein Element vorhanden ist, da sie auf Hash-Tabellen basieren.
Zusammenfassend lässt sich sagen, dass Listen in einem Anwendungsfall die bessere Wahl sind, wenn die Reihenfolge der Elemente, die Möglichkeit von Duplikaten und der einfache Zugriff auf Elemente in einer bestimmten Position von Bedeutung sind.