Fakultät Informatik/Mathematik LV „Software Engineering I“ Prof. Dr.-Ing. habil. H. Fritzsche Dresden, den xx.xx.2011 ____________________________________ Name, Vorname, Matr.-Nr. Erreichbare Punkte: 60 Erlaubte Hilfsmittel: schriftl. Unterlagen Anzahl abgegebener Blätter: Prüfungsklausur 1. Erläutern Sie die Begriffe Syntax und Semantik einer formalen Sprache am Beispiel der UML! Erläutern Sie am Beispiel des Konzepts der Klasse, dass die UML auch zur Metamodellierung eingesetzt werden kann! Geben Sie ein Klassendiagramm für eine Klasse an! 10 Punkte Die Syntax legt fest,welche vorgelegten Objekte Instanzen der formalen Sprache sind. Das können Zeichenfolgen bei einer textuellen Sprache oder Grafiken bei einer grafischen Sprache sein. Die Abstrakte Syntax definiert die Struktur der Objekte, die konkrete Syntax legt das Erscheinungsbild fest. Die Semantik definiert die Bedeutung (Interpretation). Eine Klasse besitzt einen Namen, eine Menge von Attributen (charakterisiert durch Sichtbarkeit, Name und Wertebereich) und eine Menge von Operationen (charakterisiert durch Sichtbarkeit und eine Signatur). In der UML wird eine Klasse durch ein Rechteck mit drei abgegrenzten Bereichen für Namen, Attribute und Operationen dargestellt. Das folgende Diagramm beschreibt diese Sachverhalte aus der Ebene M2 (UML) mit Mitteln der UML. Die UML kann damit auch in der Ebene M3 zur Metamodellierung eingesetzt werden. 2. Geben Sie jeweils an, ob es sich bei den folgenden Relationen um eine Generalisierung, eine Aggregation oder eine andersartige Relation (Assoziation) handelt: a) Ein Land besitzt eine Hauptstadt → Aggregation b) Ein Buch ist ein Fachbuch oder ein Erzählbuch → Generalisierung c) Ein Polygon ist durch eine geordnete Menge von Punkten definiert → Aggregation d) Ein Würfel ist eine spezielle Ausprägung eines Quaders → Generalisierung, Würfel ist Spezialisierung von Quader e) Eine Frau kann mit einem Mann verheiratet sein → Assoziation, keine Aggregation 5 Punkte 3. Geben Sie zur Modellierung folgender Sachverhalte ein Klassenstrukturdiagramm an: Ein (ungerichteter) Graph umfasst eine beliebige Anzahl von Knoten (Bezeichnung Vertex). Ein Knoten besitzt eine beliebige Anzahl mit ihm verbundener Kanten (Bezeichnung Edge). Jede Kante besitzt zwei Knoten an ihren Enden. Jeder Knoten gehört zu genau einem Graphen. Sowohl Knoten als auch Kanten können eine als String darstellbare Information (info) verwalten. Einem Graphen kann mit einer Operation addVertex ein als Parameter übergebner Knoten hinzugefügt werden. Einem Graphen kann mittels einer Operation addEdge eine als Parameter angegebene Kante hinzugefügt werden, wobei zwei ebenfalls als Parameter angegebene Knoten der Kante zugewiesen werden und die Kante jedem der Knoten zugeordnet wird. Zusätzlich seinen für alle Klassen Konstruktoren definiert, mit Hilfe derer erzeugten Objekten als String angegebene Informationen zugeordnet werden können. b.w. 15 Punkte 4. Ein elektrischer Fön hat 2 Stufenschalter A und B. A steuert die Lüftung und kann aus sein (Stellung A0), auf Stufe I (AI) geschoben werden und von dort weiter auf Stufe II (AII) geschoben werden. Entsprechend kann der Schalter rückwärts von AII über AI auf A0 geschoben werden. B steuert die Heizstufen und ist genau so wie A zu bedienen. Es gibt die Stellungen aus (B0), Heizstufe 1 (B1) und Heizstufe 2 (B2). Die Schalter A und B lassen sich unabhängig voneinander einzeln bedienen. Bezüglich seiner Arbeit kann der Fön aber nur „sichere“ Zustände annehmen, die in der folgenden Tabelle mit x gekennzeichnet sind: B0 B1 B2 A0 x AI x x AII x x x a) Geben Sie ein vollständiges Zustandsdiagramm an (Zustände, Zustandsübergänge, Zustandsübergänge auslösende Aktionen)! b) Beschreiben Sie ein mögliches Szenario, bei dem der Fön in Betrieb genommen wird, seine maximale Heizleistung bei maximaler Lüftung entwickelt und anschließend wieder außer Betrieb genommen wird. 8 Punkte Szenario: AI 5. AII B1 B2 B1 B0 AI A0 Gegeben sei folgende Verzeichnisstruktur im Laufwerk c: (Windows): Im Verzeichnis Projekt befinde sich ausschließlich die Java-Datei A.java : import … ; public class A { public static void main(String [] args){ B b1 = new B(); b1.mb(); for (int i=0;i<args.length;i++) // Ausgabe aller System.out.println(args[i]); // Kommandozeilenparam. } } Im Verzeichnis D befinde sich ausschließlich die Java-Datei B.java : package … ; public class B { public void mb(){ System.out.println("Methode mb ausgefuehrt!"); } } D repräsentiere ein Package, das von A genutzt werden soll. Vervollständigen Sie die import-Anweisung in der Klasse A und die package-Anweisung in der Klasse B! Wozu dienen diese Anweisungen jeweils? Das aktuelle Verzeichnis sei c:. Geben Sie zur Realisierung der folgenden Aufgaben Kommandos an: a) Navigieren in ein Verzeichnis, von dem aus die Dateien gemeinsam – als mit nur einem Aufruf des Compilers - übersetzt werden können. Begründen Sie Ihre Antwort! b) die Dateien A.java und B.java sind zu übersetzen, c) die Anwendung A ist auszuführen, wobei ihr als Kommandozeilenparameter die Zeichenkette A.* zu übergeben ist. Geben Sie die von A erzeugten Ausgaben an! 10 Punkte