View
217
Download
2
Category
Preview:
Citation preview
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 1 von 14
Probeklausur 3 (mit Lösung)
Dozent: Prof. Dr. Edmund Ihler Leistungsnachweis: Informatik 4 EDV-Nr.: 13037 Prüfungsdauer: 90 Minuten erlaubte Hilfsmittel: keine Beilagen: keine
Name:
Vorname:
Matrikelnr.:
Prüfungsraum:
Datum:
Zu lösen sind alle Aufgaben.
Lösungen werden direkt unter die Aufgaben geschrieben. Kein zusätzliches Prüfungs- oder Konzeptpapier.
maximale
Punktzahl davon
erreicht Aufgabe 1 25 Aufgabe 2 25 Aufgabe 3 25 Aufgabe 4 25 Aufgabe 5 50 Gesamt-
punktzahl: 150
Note:
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 2 von 14
Schreiben Sie nur in die vorgesehenen Felder. Falls Sie mehr Platz benötigen, benutzen Sie die freien Blätter am Ende des Klausurexemplars und verweisen Sie eindeutig auf den entsprechenden Aufgabenteil (Fußnote).
Aufgabe 1: UML-Metamodell Gesamtpunktzahl: 25
Teilaufgabe 1.a: Von welcher Subklasse von ActivityNode im obigen UML-Metamodell ist das hier jeweils abgebildete Modellierungselement (ohne die "Pfeile") Instanz? 5 Punkte
Modellierungselement Metamodellklasse
Action
ActivityFinalNode
DecisionNode
ForkNode
InitialNode
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 3 von 14
Teilaufgabe 1.b: Welche der folgenden Aussagen sind wahr (bzw. falsch) gemäß dem abgebildeten Metamodell. Erklären Sie kurz und markieren Sie die entsprechende Stelle im Metamodell mit dem jeweiligen Index a) bis g). 20 Punkte
Aussage Fuß-note
wahr
falsch
Begründung (kurz, entsprechende Elemente im Metamodell mit jeweiliger Fußnote markieren)
Eine Activity besteht aus mehreren ActivityNodes. a) X Multiplizität * bei Rolle node
Ein Control Node einer Activity wird als "node" bezeichnet.
b) X
Rolle "node" bei Assoziation zwischen Activity und ActivityNode, ControlNode ist Subklasse von ActivityNode
Für eine Activity kann es viele Parameter geben. c) X
Rolle "parameter" hat zwar nur Multiplizität 1, aber * bei Rolle "node", somit kann es viele ActivityParameterNode für eine Activity geben
Jede Action bezieht sich auf genau einen Classifier, der den Kontext darstellt.
d) X untere Multiplizitätsgrenze bei Rolle "context" ist 0
Bei den Actions einer Activity ist die Reihenfolge wichtig.
e) X Rolle "action" mit {ordered}
Spielt eine Action a für eine Activity A die Rolle "action", so spielt A für a die Rolle "activity"
f) X Rolle "action" mit {subsets node} und Rollennamen "activity" gegenüber der Rolle "node"
Man kann zu einem Activity Node, den man Überschreibt navigieren
g) X Rolle redifinedElement ist navigierbar (Pfeilspitze)
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 4 von 14
Aufgabe 2: Implementierung von Assoziation und Verhalten Gesamtpunktzahl: 25 In einem Schach-Programm bestehe folgende Assoziation:
Teilaufgabe 2.a: Vervollständigen Sie möglichst einfach die Basis-Implementierung für die Assoziation, die im Diagramm durch den Stereotyp «ca1» modelliert ist. 5 Punkte
package schach; public class Schach {
private Figur aktuelleFigur;
// Basisoperationen für <<ca1>>: void set_aktuelleFigur(Figur aktuelleFigur) {
this.aktuelleFigur = aktuelleFigur;
} Figur get_aktuelleFigur() {
return this.aktuelleFigur;
} void remove_aktuelleFigur() {
this.aktuelleFigur = null;
} boolean exists_aktuelleFigur() {
return this.aktuelleFigur != null;
} }
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 5 von 14
Teilaufgabe 2.b: Das Verhalten eines Schach-Objekts sei nun durch folgendes State Machine Diagram spezifiziert.
Vervollständigen Sie möglichst einfach die folgende Implementierung für die Statemachine in der Klasse Schach. Kommentieren Sie Ihre Implementierung an den angemessenen Zeilen mit „//entry action“, „//guard condition true“ bzw „//guard condition false“. Verwenden Sie, wann immer möglich, die Basisoperationen des Stereotyps «ca1». 20 Punkte package schach; public class Schach { // Basisoperationen für <<ca1>>: Wie in voriger Teilaufgabe ... // Statemachine-Implementierung: public final static int KEINE_AKTUELLE_FIGUR_GEWAEHLT = 0; public final static int AKTUELLE_FIGUR_GEWAEHLT = 1;
private int zustand public Schach (){ zustand = KEINE_AKTUELLE_FIGUR_GEWAEHLT; remove_aktuelleFigur(); // entry action }
private boolean istAndereFigur(Figur figur){ // precond. figur!=null
return get_aktuelleFigur() != figur;
} public void figurwahl(Figur figur) { // precond. figur!=null
switch ( zustand ) { // Unterscheidung nach Zustand
case KEINE_AKTUELLE_FIGUR_GEWAEHLT :
zustand = AKTUELLE_FIGUR_GEWAEHLT; set_aktuelleFigur(figur) ; // entry action
break;
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 6 von 14
case AKTUELLE_FIGUR_GEWAEHLT :
if (istAndereFigur(figur)) { // guard condition true set_aktuelleFigur(figur); // entry action } else { // guard condition false zustand = KEINE_AKTUELLE_FIGUR_GEWAEHLT; remove_aktuelleFigur(); // entry action }
break; default: break; } // end switch } // end method } // end class
Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25 Mit einem System sollen Bilder in Alben verwaltet werden. Der normale Benutzer kann sich als Betrachter Alben nur ansehen. Als Autor kann er zusätzlich ein Album editieren, d.h. entweder ein Album neu erstellen oder ein Album ändern. Beim neu Erstellen können bei Bedarf schon Bilder editiert werden. Beim Ändern müssen allerdings Bilder editiert werden
Teilaufgabe 3.a: Erstellen Sie ein Use Case Diagram, das diese Funktionalität spezifiziert. 12 Punkte
ein Album ansehen
ein Album neu erstellen
Album editieren
Betrachter
Autor
Bilder editieren
Album aendern
<<extend>>
<<include>>
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 7 von 14
Teilaufgabe 3.b: Erstellen Sie ein Class Diagram, das die Business Objekte des Systems und deren Zusammenhang im Einklang mit Ihrem Use Case Diagram spezifiziert. Berück-sichtigen Sie dabei zusätzlich folgende Zusammenhänge:
Bilder können mit beliebig vielen Kommentaren versehen werden. Ein Kommentar kann Text oder Ton sein. Ein Bild besitzt immer einen Text-Kommentar als Titel. Texte beziehen sich zusätzlich auf eine Position. Ton-Kommentare haben keine Position. In einer späteren Version sollen Kommentare anderer Art analog dem Modell zufügbar sein. 13 Punkte
Aufgabe 4: RUP Grundlagen Gesamtpunktzahl: 25
Teilaufgabe 4.a: Wie bezeichnet man in RUP ein Diagram wie das links dargestellte? Um welchen Diagrammtyp handelt es sich laut UML? Welche RUP-Disziplin wird durch dieses Diagramm näher charakterisiert? 5 Punkte
Teilaufgabe 4.b: Nennen Sie drei wesentliche Artefakte aus "Design Components". 5 Punkte
0..*
1
Titel
0..*
Kommentare
1
Bild KommentarAlbum
Text Ton{subsets Kommentare}
Position
RUP-Be- zeichnung
Workflow
UML-Dia- grammtyp
Activity Diagram
RUP-Diszi-plin
Analysis & Design
Design Class, Interface, Design Subsystem
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 8 von 14
Teilaufgabe 4.c: Erklären Sie kurz die Begriffe Inception, Elaboration und Iteration sowie deren Zusammenhang. 7 Punkte
Bei Inception und Elaboration handelt es sich um RUP-Phasen. Pro Phase gibt es in der Regel mehrere Iterationen, d.h. Durchläufe durch alle Disziplinen bei deren Abschluss das Projekt jeweils einen geplanten konsistenten Zwischenstand hat. Bei Abschluss der Inception ist der Projektumfang und -Scope klar, am Ende der Elaboration ist ein Prototyp vorhanden und die risikoreichsten Bereiche sind verifiziert.
Teilaufgabe 4.d: Erklären Sie den Unterschied zwischen einer Business Class, einer Analysis Class und einer Design Class. Geben Sie jeweils ein typisches Beispiel. 8 Punkte
Business Class: Beschreibt eine wesentliche Entität des Business, für das ein Softwaresystem entwickelt wird. Es ist noch nicht klar, ob dies auch eine Entität im System sein wird. Bsp: Bestellung: Repräsentiert die Bestellung
Analysis Class: Beschreibt eine Entität im zu entwicklenden System, unter Idealbedingungen, jedoch noch ohne Berücksichtigung der verwendeten Technologien Bsp: BestellungStatemachine: Implementiert die Statemachine zum Bestellprozess
Design Class: Im Prinzip kann aus einer Analyseklasse eine Designklasse entstehen. Im Designmodell befindet sich diese aber auf der Ebene z.B. mit Klassen die durch eine Technologieentscheidung zustande kommen. BestellungBean: Eine Java-Bean-Klasse die die Bestellung implementiert
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 9 von 14
Aufgabe 5: Tree Design Gesamtpunktzahl:50 Folgendes Class Diagram stellt das "Domain Object Model" einer Applikation zur Manipulation von Bäumen für den Use Case "exportiere Baumstruktur nach XML" dar.
0..*
subNodes
1
1
tree <<local>>
Node
+getName():String+addNode(node:Node):void#elementName():String#toXml(tab:String):String
Tree
#elementName():String
CompNode
+addNode(node:Node):void#toXml(tab:String):String
Leaf
Application
+main(args:String[]):void+createTestTree():Tree
Teilaufgabe 5.a: Zeichnen Sie in in das Class Diagram nach UML-Standard ein, welches bekannte Design Pattern für die Modellierung der hierarchischen Tree-Struktur verwendet wurde. Dokumentieren Sie auch, welche Klassen dabei welche Rollen im spielen. 10 Punkte
Teilaufgabe 5.b: Folgender Sourcecode für eine Methode createTestTree erstellt verschie-dene Instanzen der Klassen des Domain Object Models. public class Application { public static void main(String[] args) { System.out.println( new Application().createTestTree().toXml("") ); } public Tree createTestTree () { Tree tree = new Tree("TestTree"); CompNode a = new CompNode("a"); Leaf b = new Leaf("b"); CompNode c = new CompNode("c"); Leaf d = new Leaf("d"); Leaf e = new Leaf("e"); tree.addNode(a); a.addNode(b); a.addNode(c); c.addNode(d); c.addNode(e); return tree; } }
Composite Pattern Usage
Client Composite
Leaf Component Composite
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 10 von 14
Erstellen Sie ein entsprechendes Object Diagram für alle Instanzen passend zum obigen Class Diagram (incl. Objects, Links). 10 Punkte
a:CompNode
b:Leaf c:CompNode
d:Leaf e:Leaf
TestTree:Tree
Teilaufgabe 5.c: Der mit createTestTree erzeugte "TestTree" soll durch die Methode toXml wie folgt exportiert werden.
<TREE name="TestTree"> <NODE name="a">
<NODE name="b"/> <NODE name="c">
<NODE name="d"/> <NODE name="e"/>
</NODE> </NODE>
</TREE>
Die Implementierung der Klasse Node ist hierzu bereits gegeben: abstract public class Node { final protected static String TAB = "\t"; private String name; public Node (String name){ this.name = name; } public String getName(){ return name; } public void addNode(Node node) {} protected String elementName(){ return "NODE"; } protected String startTag() { return "<" + elementName() + " name=\"" + getName() + "\""; } protected String endTag() { return "</" + elementName() + ">"; } protected String toXml(String tab) { return tab + startTag() + "/>\n"; } }
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 11 von 14
Implementieren Sie, möglichst einfach, die restlichen Klassen CompNode, Leaf, und Tree, passend zum gegebenen Sourcecode. 30 Punkte
// CompNode.java import java.util.*; public class CompNode extends Node { public CompNode (String name){ super(name); } public void addNode(Node node) { subNodes.add(node) ; } protected String toXml(String tab) { String xmlString = ""; for (Iterator i = subNodes.iterator(); i.hasNext();) { xmlString = xmlString + ((Node) i.next()).toXml(tab + TAB); } return tab + startTag() + ">\n" + xmlString + tab + endTag() + "\n"; } private Collection subNodes = new ArrayList(); }
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 12 von 14
// Leaf.java public class Leaf extends Node { public Tree (String name){ super(name);} }
// Tree.java
public class Tree extends CompNode { public Tree (String name){ super(name); } protected String elementName(){return "TREE";} }
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 13 von 14
HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler
Seite 14 von 14
Recommended