1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien
2 Aufgabe 1: Klassen und Objekte Für gegebene Beispiele geeignete Diagramme in UML-Notation (Klassen-, Objektdiagramm) auswählen und zeichnen können. 1. Modellieren Sie die Klassen Kunde und Konto gemäß folgendem Pflichtenheftauszug: Es sollen Kunden verwaltet werden. Zu einem Kunden werden sein Name, sein Geburtsdatum und sein Wohnort verwaltet. Zu einem Konto werden Kontonummer und Kontostand verwaltet. 2. Zeichnen Sie ein Objektdiagramm, bei dem ein Kunde Norbert Meier (geboren am 23.11.1978, wohnhaft in Bochum) über ein Konto mit der Nummer 0815 und einem Guthaben von 2000 DM verfügt.
3 Aufgabe 2a: Telefonanlage Eine Firma möchte sich durch ein zu entwickelndes Software-System in die Lage versetzen, ihre Telefonanlage zu verwalten. Dabei sollen in einem ersten Schritt eine Klasse Telefon und eine Klasse Telefonanlage spezifiziert werden. (Die Verbindung zum Postnetz soll nicht modelliert werden.) Folgendes soll dabei modelliert werden: Jedes Telefon ist an eine Telefonanlage angeschlossen. Die Telefonanlage stellt die Verbindung zum Telefonnetz der Post her. Für jedes Telefon müssen die Nebenstellennummer des Apparats, die Berechtigungsstufe (international, national, intern) sowie der Aufstellort und die Anzahl der verbrauchten Einheiten gespeichert werden. Es soll möglich sein, die Telefone einzeln zu sperren, wozu es die Operation "sperren" gibt. Weiter gibt es ein Attribut beim Telefon, das die maximal erlaubte Anzahl an von allen Telefonen verbrauchten Einheiten speichert. Dieses Attribut ist für alle Telefone gleich. Für die Telefonanlage wird die Anzahl der zur Verfügung stehenden Amtsleitungen, die Amtsnummer und eine Anlagenkennung gespeichert.
4 Aufgabe 2a: Telefonanlage Erstellen Sie ein Klassen-Diagramm für die beiden Klassen des beschriebenen Szenarios in UML-Notation. Geben Sie dabei entsprechende sinnvolle Datentypen an. Ergänzen Sie fehlende Angaben sinnvoll.
5 Aufgabe 2b: Telefonanlage Wie sieht die Klasse Telefon aus, wenn sie zusätzlich eine Operation "gesamtsperren" erhält, die unabhängig von den von der Klasse abgeleiteten Objekte ein soll?
6 Aufgabe 2c: Telefonanlage Erstellen Sie ein Objekt-Diagramm für eine Telefonanlage mit drei Nebenstellenapparaten in UML-Notation. Dazu gilt Folgendes: Das Telefon in der Zentrale hat die Nebenstellennummer 0, eine internationale Berechtigung und bisher verbrauchte Einheiten von 1553. Das Telefon in der Kantine besitzt die Nebenstellennummer 312, eine interne Berechtigungsstufe und 105 verbrauchte Einheiten. Für das Lager ist auch ein Telefon vorgesehen. Darüber liegen aber noch keine Einzelheiten vor. Die Anzahl an maximal zu verbrauchenden Einheiten ist gesamthaft 5000. Die Telefonanlage besitzt 30 Leitungen, hat die Amtsnummer 332 und die Kennung XP3.
7 Aufgabe 2d: Telefonanlage Es stellt sich heraus, dass es besser ist, das Klassenattribut für die maximal zu verbrauchenden Einheiten durch ein normales Attribut ersetzen, das individuell für jedes Telefon die maximal zu verbrauchenden Einheiten speichert. Wie sieht nun die Klasse Telefon aus? Wie sieht nun das Objektdiagramm aus, wenn das Telefon in der Zentrale 5000 maximal zu verbrauchende Einheiten hat und das Telefon in der Kantine 500?
8 Aufgabe 3: Objekt- und Klassendiagramme Passen die abgebildeten Objekt- Diagramme zu den Klassen- Diagrammen? 1 Flasche 0..1 1 1 0..1 1..2 Glaskörper Verschluss Etikett
9 Aufgabe 4: Assoziationen Sind die jeweiligen Assoziationsarten (einfache Assoziation, Komposition und Aggregation) in den Klassendiagrammen sinnvoll gewählt? Begründen Sie jeweils Ihre Entscheidung.
10 Aufgabe 5a: Telefonanlage (Erweiterung) Die letzten Male haben Sie bereits die Firma kennen gelernt, die sich durch ein zu entwickelndes Software-System in die Lage versetzen möchte, ihre Telefonanlage zu verwalten. Jedes Telefon hat nun individuell festgelegte maximal erlaubte Telefoneinheitenanzahl. (vgl. Aufgabe 2d) Alle Attribute sind private, alle Operationen sind public. Erweitern Sie das Klassen-Diagramm.
11 Aufgabe 5b: Telefonanlage (Erweiterung) Durch den technischen Fortschritt ist es erforderlich geworden, das Software-System um verschiedene Telefonarten zu erweitern (Fax und ISDN-Gerät). Bei Fax-Geräten muss zusätzlich zu den Telefondaten die Stationskennung (Text) und bei ISDN-Geräten die Art des Anschlusses (Modem, PC-Karte, Telefon) gespeichert werden. 1) Ändern Sie das Klassendiagramm so ab, dass der neuen Situation Rechnung getragen wird. Die bereits definierten Klassen sollen möglichst unverändert übernommen werden. 2) Erstellen Sie für diese erweiterte Telefonanlage ein Objekt- Diagramm mit den drei unterschiedlichen Arten von Nebenstellenapparaten Telefon, Fax und ISDN in UML-Notation. Geben Sie dazu den Attributen in diesen Objekten sinnvolle Werte.
12 Aufgabe 6: Fahrzeuge In einem Programm für einen Fahrzeug-Händler kommen folgende Klassen vor: Auto, Ferrari, Fahrzeug, LKW, Luxus-Limousine, Porsche, Sportwagen 1. Welches Prinzip (Eigenschaft) der objektorientierten Modellierung eignet sich besonders gut, den Aufwand für die Implementierung all dieser Klassen zu reduzieren? Warum? 2. Skizzieren sie eine sinnvolle Modellierung gemäss der objektorientierten Sicht. 3. Betrachten Sie nun die Klasse Porsche. Diese Klasse hat die Attribute Exemplare und Typ. Exemplare ist ein Klassenattribut und hat den Anfangswert 0. Typ ist von Typ Fahrzeugtyp. Die Klasse hat die Operationen berechneflottenverbrauch, berechneverbrauch und berechnepreis. Ausserdem ist berechneflottenverbrauch eine Klassenoperation. Stellen Sie diese Klasse in Klassen-Notation (UML) dar. 4. Was ist ein Klassenattribut? Können alle Operationen einer Klasse auf Klassenattribute direkt zugreifen? Warum können Klassenoperationen nicht auf gewöhnliche Attribute zugreifen?
13 Aufgabe 7: Familien Klassen und Objekte, Assoziationen und Kardinalitäten: 1. An einer Strasse wohnen direkt nebeneinander die Familien Meier, Maier, Meyer und Mayer in dieser Reihenfolge. Nach einer Baulücke wohnt noch Familie Mueller. Modellieren Sie die Familien (ohne die Strasse) sinnvoll mit UML, indem Sie ein Klassendiagramm und ein Objektdiagramm skizzieren. Tragen Sie Kardinalitäten und Assoziationen ein. 2. Dann gibt es auch noch ein Auto. Dieses Auto hat vier Räder. Stellen Sie dies mit UML dar, indem Sie jeweils ein sinnvolles Klassendiagramm und ein Objektdiagramm skizzieren. 3. Geben sie ein objektorientiertes Muster an, das hier für das Auto zutrifft.