Probeklausur 3 (mit Lösung) - KLAUS -...

14
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:

Transcript of Probeklausur 3 (mit Lösung) - KLAUS -...

Page 1: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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:

Page 2: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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

Page 3: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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)

Page 4: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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;

} }

Page 5: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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;

Page 6: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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

Page 7: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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

Page 8: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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

Page 9: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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

Page 10: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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"; } }

Page 11: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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(); }

Page 12: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

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";} }

Page 13: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler

Seite 13 von 14

Page 14: Probeklausur 3 (mit Lösung) - KLAUS - beta6klaus.hdm-stuttgart.de/data/13037_Informatik_4/13037-WS2006-Ihler... · Aufgabe 3: Modellierung mit Class und Use Case Diagam Gesamtpunktzahl:25

HdM-Stuttgart Probeklausur, Informatik 4 Prof. Dr. Edmund Ihler

Seite 14 von 14