Musterklausur

Werbung
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
Herunterladen