HdM-Stuttgart, FB1, MI Probeklausur 1, Informatik 4 Prof. Dr. Edmund Ihler. Fachhochschule Stuttgart Hochschule der Medien.

Ähnliche Dokumente
HdM-Stuttgart, FB1, MI Probeklausur 1, Informatik 4 Prof. Dr. Edmund Ihler. Fachhochschule Stuttgart Hochschule der Medien.

Probeklausur 2. Name: Vorname: Matrikelnr.: Datum:

Arbeitsblätter zu Teil I des Praktikums

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

1. Welches Interface ist nicht von Collection abgeleitet? A. B. C. D. List Set Map SortedSet. 2. Welche Aussagen sind richtig?

Klausur Softwaretechnologie SS 2017

Beispielklausur A MPGI 3

UML (Unified Modelling Language) von Christian Bartl

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Klausur. Softwareentwurf. 13. März 2013 Bearbeitungszeit: 120 Minuten

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Wuerfel - augenzahl: int + Wuerfel() + wuerfeln() + gibaugenzahl(): int

Matrikelnummer:

Programmieren in Java -Eingangstest-

Fakultät IV Elektrotechnik/Informatik

Objektorientierte Programmierung Studiengang Medieninformatik

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Info B VL 14: Java Collections/Reflections

MPGI 3 SLK A. Wintersemester 2011/ Februar 2012

Objektorientierte Programmierung

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

Übungen Softwaretechnik I

Besteht aus Aktoren (actors) und use-cases sowie deren Verbindungen.

7. Objektorientierung. Informatik II für Verkehrsingenieure

Klausur: Java (Liste P)

Prüfung Softwareentwicklung II (IB)

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Präsenzübung Programmierung WS 2016/2017

Klausur Software-Entwicklung März 01

II.4.5 Generische Datentypen - 1 -

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

Informatik I Eprog HS12

Thema 3 Das UML- Metamodell

12 Abstrakte Klassen, finale Klassen und Interfaces

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

14 Abstrakte Klassen, finale Klassen, Interfaces

Probeklausur zur Vorlesung

Programmierkurs Java

Vorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige:

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Languages and Tools for Object-Oriented Development Klausur Wintersemester 2007/2008

14 Abstrakte Klassen, finale Klassen, Interfaces

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung I (IB)

Musterlösung Stand: 5. Februar 2009

MPGI 3 Muster-Klausur A

Sommersemester Implementierung I: Struktur

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

UML Eine kurze Einführung

Vorlesung Programmieren

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

Klausur Softwaretechnologie WS 2008/09

Aufgabe 1 (Programmanalyse):

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

UML -Klassendiagramme

Klausur im Fach Software-Engineering Einführung

Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2018/19 - Dr. Günter Kniesel. Übungsblatt 10 Lösungen

Prüfung Software Engineering I (IB)

Klausur. Softwareentwurf. 04. Februar 2013 Bearbeitungszeit: 120 Minuten

Klausur "OOAD" im SS Name, Vorname: Matrikel-Nr:

RUP Analyse und Design: Überblick

Probeklausur Informatik 2 Sommersemester 2013

Algorithmen und Datenstrukturen 07

Softwareentwicklung Lösungen zu Programmierung von Klassen mit BlueJ

Objektorientierte Programmierung Studiengang Medieninformatik

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Die abstrakte Klasse Expression:

Einführung in die OOP mit Java

Klausur Softwaretechnologie SS 2012

1 Klassen und Objekte

Algorithmen und Datenstrukturen 06

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Programmieren in Java

1 Abstrakte Klassen, finale Klassen und Interfaces

Klausur Grundlagen der Programmierung

Einstieg in die Informatik mit Java

Semestralklausur Informatik I - Programmierung

Objektorientierte Programmierung

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Javakurs für Anfänger

Programmiermethodik 3. Klausur Lösung

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Informatik 2 für Regenerative Energien

Objektorientierte Programmierung

Klausur. Softwareentwurf. 22. März 2011 Bearbeitungszeit: 120 Minuten

Programmiermethodik 1. Klausur

Transkript:

Fachhochschule Stuttgart Hochschule der Medien Probeklausur 1 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 Aufgabe 1: 16 Aufgabe 2: 17 Aufgabe 3: 12 Aufgabe 4: 23 Aufgabe 5: 22 Gesamtpunktzahl: 90 Note: davon erreicht Seite 1 von 14

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: Grundlagen der UML Gesamtpunktzahl: 16 Teilaufgabe 1.a: Benennen Sie folgende UML-Modellierungselemente (z.b. class). 6 Punkte hans object collaboration actor state activity component Teilaufgabe 1.b: Entwerfen Sie ein Class Diagram, das die Klassen Klavier und Taste zeigt und folgenden Zusammenhang spezifiziert: Ein Klavier besitzt unbestimmt viele Tasten, die als Klaviertasten fungieren, aber mindestens 12 davon. Klavier und Tasten können sich gegenseitig Nachrichten schicken. Eine Taste ist entweder weiss oder nicht-weiss (= schwarz). 5 Punkte Klavier Klaviertaste 12.. * Taste weiss:boolean Teilaufgabe 1.c: Die angegebene qualifizierte Assoziation mit zwei Qualifiern kann man in Java mit Hilfe verschachtelter Maps implementieren. Wie, soll A q1:q1 q2:q2 folgendes Klassendiagramm zeigen. Ergänzen Sie dieses entsprechend, mit Multiplizitäten und Rollennamen b ein. 5 Punkte b 1 B A 1 1 Map Map q1:q1 q2:q2 b 1 B Seite 3 von 14

Aufgabe 2: UML-Metamodell Gesamtpunktzahl: 17 Folgendes Diagramm in Abbildung 1 ist ein Ausschnitt aus dem UML-Metamodell. Abbildung 2 visualisiert ein konkretes UML-Modell. Abbildung 1: Ausschnitt UML Meta-Modell Text +add_line(obj_line:line):void +iterator_line():lineiterator textlines 0..* +line {ordered Line -text:string="" +Line(text:String) +dump():void TextGoethe +TextGoethe() Abbildung 2: Konkretes UML-Modell: TextOfLines Teilaufgabe 2.a: Die in Abbildung 2 visualisierten UML-Modellierungselemente sind Instanzen von Metaklassen aus dem Metamodell in Abbildung 1. Ordnen Sie den Modellierungselementen die entsprechenden Metaklassen zu. 5 Punkte Seite 4 von 14

Modellierungselement Name der Metaklasse Class Attribute Association AssociationEnd Generalization Teilaufgabe 2.b: Im Modell in Abbildung 2 werden Werte für Meta-Attribute im Metamodell aus Abbildung 1 festgelegt. Wie heissen die Meta-Attribute, deren Werte durch die durch die folgende Notation aus Abbildung 2 festgelegt wird. 12 Punkte Notation für Wert Name der Meta- Attributs multiplicity Bedeutung für Werts für Modellierungselement Textobjekte besitzen 0 oder beliebig viele Line-Objekte in der Rolle line ordering Die textline-links sind geordnet Pfeilspitze bei: Kursivschrift bei: bei isnavigable isabstract initialvalue aggregation Von einem Text-Objekt aus kann man zu seinen line- Objekten navigieren Es sind keine Instanzen der Klasse Text möglich Der Leerstring ist der Initiale Wert für das Attribut text bei Line-Instanzen. Die Assoziation ist eine Komposition Seite 5 von 14

Aufgabe 3: RUP (Rational Unified Process) Gesamtpunktzahl: 12 Teilaufgabe 3.a: Stellen Sie die zweidimensionale RUP-Prozessstruktur grafisch dar. Zeichnen Sie in zwei der Workflows (Disciplines) exemplarisch ein typisches Resourcenprofil ein (Resourcenbedarf über der Zeit). 6 Punkte Teilaufgabe 3.b: Vervollständigen Sie die fehlenden drei der vier Schlüsselkonzepte (Key Concepts) der RUP-Prozessbeschreibungen gemäß analog dem eingetragenen Beispiel Activity und erläutern Sie stichwortartig, was deren Bedeutung ist. 6 Punkte Activity Beschreibung, wie etwas erfolgen soll Workflow wann soll etwas geschehen (Activity) und entstehen Artefakt) Worker wer (Rolle) soll etwas (Aktivität) tun Artefact was soll entstehen (Ergebnis, Produkt) Seite 6 von 14

Aufgabe 4: Text Viewer Gesamtpunktzahl:23 Im Modell TextOfLines aus Abbildung 2 bestehen Texte aus Zeilen (Line-Objekte). Ein TextViewer-Objekt ist in der Lage die Zeilen eines Textes anzuzeigen. Dazu verwendet es in seiner Methode dump(:text) die Methode iterator_line() des Text-Objekts um ein LineIterator-Objekt zu erhalten, und um damit die Line-Objekte zu iterieren und diesen jeweils die Operation dump() zu delegieren. Diese Methode gibt den Inhalt der Zeile auf die Konsole aus. TextViewer +main(args:string[]):void +dump(text:text):void Text <<parameter>> text +add_line(obj_line:line):void +iterator_line():lineiterator public class TextViewer { public static void main(string[] args){ Text text = new TextGoethe(); TextViewer textviewer = new TextViewe textviewer.dump(text); public void dump(text text) { // foreach line in textlines: dump line //... Abbildung 3: TextViewer LineIterator +nextline():line +hasnextline():boolean Line -text:string="" +Line(text:String) +dump():void Abbildung 4: LineIterator Teilaufgabe 4.a: Implementieren Sie zunächst die Operation dump(:text) der Klasse TextViewer unter Verwendung der Methode iterator_line() der Klasse Text. 5 Punkte public void dump(text text) { for ( ) { LineIterator iter = text.iterator_line(); iter.hasnextline(); iter.nextline().dump(); Seite 7 von 14

Teilaufgabe 4.b: Wenden Sie nun das GoF-Design Pattern Adapter an, um das Interface LineIterator durch einen Adapter für java.util.iterator zu realisieren. Spezifizieren Sie die Verwendung des Patterns, indem Sie folgendes Collaboration Diagram vervollständigen. Zeichnen Sie dabei das Role-Binding, und die entschiedenden Relationen ein. 8 Punkte interface java.util.iterator +hasnext():boolean +next():java.lang.object +remove():void 1 iterator LineIteratorImpl <<Role>> Adaptee <<Role>> Adapter +LineIteratorImpl(iterator:Iterator) +nextline():line +hasnextline():boolean Iterator Adapter <<Role>> Client <<Role>> Client TextViewer +dump(text:text):void interface LineIterator +nextline():line +hasnextline():boolean Teilaufgabe 4.c: Implementieren Sie nun die Klasse LineIteratorImpl, die dieses Interface realisiert. Stellen Sie dabei den oben angegebenen Konstruktor zur Verfügung. 5 Punkte import java.util.*; public class LineIteratorImpl implements LineIterator { private Iterator iterator; public LineIteratorImpl(Iterator iterator){ this.iterator = iterator; public Line nextline(){ return (Line)iterator.next(); public boolean hasnextline(){ return iterator.hasnext(); Seite 8 von 14

Teilaufgabe 4.d: Implementieren Sie nun die Klasse Text. Verwenden Sie dabei eine passende Collection-Klasse. 5 Punkte import java.util.*; abstract public class Text { private List line = new ArrayList(); public void add_line(line obj_line) { line.add(obj_line); public LineIterator iterator_line() { return new LineIteratorImpl(line.iterator()); Seite 9 von 14

Aufgabe 5: Würfelspiel Gesamtpunktzahl: 22 Würfelspiel: Folgendes einfache Würfelspiel wird von zwei Spielern mit einem sechsseitigen Würfel gespielt, der die Augenzahlen 1, 2 und 3 je zweimal besitzt. Ziel: Jeder Spieler versucht durch aufeinanderfolgende Würfe eine möglichst hohe Gesamtaugenzahl zu erreichen. Spielausgang: Wer von beiden Spielern in einer Partie die höchste Gesamtaugenzahl erreicht, hat gewonnen. Gleiche Gesamtaugenzahl bedeutet unentschieden. Partie: Jeder Spieler kann pro Partie, und unter nachfolgenden Einschränkungen, frei entscheiden, ob er einen, zwei oder drei aufeinanderfolgende Würfe ausführen will. Ein dritter Wurf ist aber nur erlaubt, wenn die Augenzahl des zweiten Wurfs nicht kleiner war, als die des ersten Wurfs. Es beginnt Spieler 1 und führt seine maximal drei Würfe aus, danach folgt Spieler zwei und führt seine maximal drei Züge aus. Gesamtaugenzahl: Die Gesamtaugenzahl eines Spielers wird wie folgt ermittelt: War ein Wurf kleiner als der vorhergehende, so ist die Gesamtaugenzahl gleich 1. Ansonsten ist die Gesamtaugenzahl die Summe aller Augenzahlen seiner Würfe. Teilaufgabe 5.a: Vervollständigen Sie folgendes Use Case Diagram indem Sie angemessene Relationen zwischen den Use Cases einzeichnen. 5 Punkte <<extend>> W ür fe ausführen <<extend>> Spieler <<include>> Wurf 1 ausf üh ren Wurf ausfüh ren Wurf 2 ausf ühren Wurf 3 ausf ühren Teilaufgabe 5.b: Spezifizieren Sie den Spielablauf nun durch ein einfaches Activity Diagram das zeigt, dass zunächst Spieler 1 seine Würfe ausführt, und danach Spieler 2. Benutzen Sie dazu lediglich zwei Activities mit jeweils der Bezeichnung Würfe ausführen sowie Start und Ende, Transitions und Swimlanes. 3 Punkte Spieler 1 Würfe durchführen Spieler 2 Würfe durchführen Seite 10 von 14

Teilaufgabe 5.c: Spezifizieren Sie nun die Activity (bzw. den Use Case) Würfe ausführen im Detail. Verwenden Sie dazu als Modellierungselemente nur Activities inklusive Start und Ende, Transitions, Guard-Conditions, Decisions. Modellieren Sie jeden möglichen Wurf als eine eigene Activity (z.b. Wurf 1 ausführen ). 7 Punkte Wurf 1 ausführen [else] [weiterer Wurf gewünscht] Wurf 2 ausführen [else] [weiterer Wurf gewünscht und Augenzahl von Wurf 2 war nicht kleiner als Augenzahl von Wurf 1] Wurf 3 ausführen Seite 11 von 14

Teilaufgabe 5.d: Folgendes State Chart Diagram beschreibt die Zustände des Würfels, während ein Spieler seine Würfe ausführt. Die Zustände 1, 2 und 3 stellen die geworfene Augenzahl dar, nach dem letzten Wurf. Folgende Events werden dabei an den Würfel gesendet: w(i): wenn ein Wurf mit der Augenzahl i = 1, 2 oder 3 erfolgt ist end: wenn laut Spielregel kein Wurf mehr erlaubt ist In g wird die Gesamtaugenzahl gespeichert. Ergänzen Sie die noch fehlenden Transitions samt Events und Actions (um g aktuell zu halten). 7 Punkte 1 end w(1)/g=1 w(1)/g=g+1 w(2)/g=g+2 w(2)/g=2 w(3)/g=3 w(3)/g=g+3 2 w(2)/g=g+2 3 w(3)/g=g+3 end w(1)/g=1 w(3)/g=g+3 end w(2)/g=1 w(2)/g=1 Seite 12 von 14

Seite 13 von 14

Seite 14 von 14