Docsity
Docsity

Prüfungen vorbereiten
Prüfungen vorbereiten

Besser lernen dank der zahlreichen Ressourcen auf Docsity


Download-Punkte bekommen.
Download-Punkte bekommen.

Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo


Leitfäden und Tipps
Leitfäden und Tipps

Ubung+Musterlösung Klassendiagramm - Objektorientierte Modellierung (Kappel) TU Wien, Übungen von Modellierung

Art: Übungen

2020/2021
Sonderangebot
30 Punkte
Discount

Zeitlich begrenztes Angebot


Hochgeladen am 24.09.2021

Nils_Schrieber
Nils_Schrieber 🇩🇪

4.7

(32)

1 / 38

Toggle sidebar

Diese Seite wird in der Vorschau nicht angezeigt

Lass dir nichts Wichtiges entgehen!

bg1
VU Objektorientierte Modellierung ¨
Ubung 1: Klassendiagramm
188.391, SS2018 , MUSTERL ¨
OSUNG ¨
Ubungsgruppen: 12.03.2018 - 16.03.2018
Hinweise:
Theoriefragen: Erl¨
autern Sie die Fragen anhand eines selbst gew¨
ahlten, konkreten Beispiels.
selbst gew¨
ahlt . . . nicht aus der Vorlesung oder aus den L¨
osungen anderer ¨
Ubungsaufgaben
konkret . . . z.B. Klasse Person anstelle abstrakt Klasse A“
Modellierungsbeispiele: Bilden Sie den Sachverhalt, der in der Angabe geschildert wird, m¨
oglichst genau
ab. Sollte etwas in der Angabe nicht erw¨
ahnt sein, treffen Sie sinnvolle Annahmen.
Aufgabe 1: Klassendiagramm - Theoriefragen 1
Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm besch¨
aftigt.
a) Erl¨
autern Sie die Notation einer Klasse. Gehen Sie dabei auf alle Details ein. Zur Erl¨
auterung dieser De-
tails geben Sie ein Beispiel f¨
ur eine konkrete Klasse an. (Es ist nicht das Ziel, m¨
oglichst viele Attribute
und Operationen anzugeben, sondern mit Hilfe weniger Attribute und Operationen s¨
amtliche Notati-
onsm¨
oglichkeiten aufzuzeigen.)
b) Erl¨
autern Sie die Notation eines Objekts. (Sie sollten in der Lage sein, ein Beispiel-Objekt f¨
ur die Klasse
aus Aufgabe a) zu modellieren, auch wenn a) von jemand anderem gel¨
ost wurde.)
c) Erl¨
autern Sie alle Notationsm¨
oglichkeiten f¨
ur eine Assoziation anhand eines konkreten Beispiels.
d) Illustrieren Sie den Unterschied zwischen 1:1, 1:n und n:m Assoziationen anhand eines Objektdia-
gramms.
Aufgabe 2: Klassendiagramm - Theoriefragen 2
Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm besch¨
aftigt.
a) Was ist eine Assoziationsklasse? Erkl¨
aren Sie die Notation anhand eines konkreten Beispiels. Wann ist es
sinnvoll, eine solche einzusetzen?
b) Beschreiben Sie den Unterschied zwischen starker und schwacher Aggregation. Erkl¨
aren Sie die Notation
jeweils anhand eines konkreten Beispiels.
c) Was ist eine Generalisierung, was versteht man unter Mehrfachvererbung und was ist eine abstrakte
Klasse? Erl¨
autern Sie die Notation dieser Konzepte anhand eines oder mehrerer Beispiele.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
Discount

Sonderangebot

Unvollständige Textvorschau

Nur auf Docsity: Lade Ubung+Musterlösung Klassendiagramm - Objektorientierte Modellierung (Kappel) TU Wien und mehr Übungen als PDF für Modellierung herunter!

VU Objektorientierte Modellierung Ubung 1: Klassendiagramm¨ 188.391, SS2018 , MUSTERL ¨OSUNG Ubungsgruppen: 12.03.2018 - 16.03.2018¨

Hinweise:

  • Theoriefragen: Erl¨autern Sie die Fragen anhand eines selbst gew¨ahlten, konkreten Beispiels.
    • selbst gew¨ahlt... nicht aus der Vorlesung oder aus den L¨osungen anderer ¨Ubungsaufgaben
    • konkret... z.B. Klasse ”Person“ anstelle abstrakt Klasse ”A“
  • Modellierungsbeispiele: Bilden Sie den Sachverhalt, der in der Angabe geschildert wird, m¨oglichst genau ab. Sollte etwas in der Angabe nicht erw¨ahnt sein, treffen Sie sinnvolle Annahmen.

Aufgabe 1: Klassendiagramm - Theoriefragen 1

Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm besch¨aftigt.

a) Erl¨autern Sie die Notation einer Klasse. Gehen Sie dabei auf alle Details ein. Zur Erl¨auterung dieser De- tails geben Sie ein Beispiel f¨ur eine konkrete Klasse an. (Es ist nicht das Ziel, m¨oglichst viele Attribute und Operationen anzugeben, sondern mit Hilfe weniger Attribute und Operationen s¨amtliche Notati- onsm¨oglichkeiten aufzuzeigen.)

b) Erl¨autern Sie die Notation eines Objekts. (Sie sollten in der Lage sein, ein Beispiel-Objekt f¨ur die Klasse aus Aufgabe a) zu modellieren, auch wenn a) von jemand anderem gel¨ost wurde.)

c) Erl¨autern Sie alle Notationsm¨oglichkeiten f¨ur eine Assoziation anhand eines konkreten Beispiels.

d) Illustrieren Sie den Unterschied zwischen 1:1, 1:n und n:m Assoziationen anhand eines Objektdia- gramms.

Aufgabe 2: Klassendiagramm - Theoriefragen 2

Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm besch¨aftigt.

a) Was ist eine Assoziationsklasse? Erkl¨aren Sie die Notation anhand eines konkreten Beispiels. Wann ist es sinnvoll, eine solche einzusetzen?

b) Beschreiben Sie den Unterschied zwischen starker und schwacher Aggregation. Erkl¨aren Sie die Notation jeweils anhand eines konkreten Beispiels.

c) Was ist eine Generalisierung, was versteht man unter Mehrfachvererbung und was ist eine abstrakte Klasse? Erl¨autern Sie die Notation dieser Konzepte anhand eines oder mehrerer Beispiele.

Aufgabe 3: Einleitende Beispiele, Teil 1

Modellieren Sie die geschilderten Sachverhalte und treffen Sie realistische Annahmen wo n¨otig:

a) Eine Bibliothek hat einen Namen und besteht aus mehreren B¨ucherregalen. Jedes Regal hat eine Bezeich- nung und beinhaltet mehrere B¨ucher, deren Titel gespeichert werden. Ein Buch besteht aus mehreren Seiten, deren Nummer und Wortanzahl gespeichert werden.

Basiss tein legokompatibel :boolean

{abstract} Konstruktionsstein

Tier reiten :boolean

Platte laenge :double breite :double

Mensch kopfDrehen :boolean

Schiene laenge :double

Duplo-Teil bezeichnung :String farbe :String noppenzahl :int

Bestellung adresse :String preis :double

Restaurant name :String adresse :String

Pizzaria ofentyp :Typ

«enumeration» Typ holz stein

Kundin kNr :int

Bibliothek name :String

Regal bezeichnung :String

Buch titel :String

Seite nummer :int 0,1 * (^1) * wortzahl :int

0..1 *

b) Von jedem Duplo-Teil wird die Bezeichnung, die Farbe und die Anzahl der Noppen gespeichert. Es gibt un- ter anderem folgende Arten von Duplo-Teilen: Basissteine, Konstruktionssteine, Tiere und Menschen. Bei einem Basissteinen wird gespeichert, ob dieser zum (klassischen) Lego kompatibel ist, bei jedem Mensch wird gespeichert, ob er/sie den Kopf drehen kann oder nicht. Bei den Tieren wird gespeichert, ob oben- drauf ein Mensch oder ein weiteres Tier reiten kann. Es gibt genau zwei Arten von Konstruktionssteinen, Schienen – von ihnen wird die L¨ange gespeichert – und Platten, von denen L¨ange und Breite gespeichert werden.

Basiss tein legokompatibel :boolean

{abstract} Konstruktionsstein

Tier reiten :boolean

Platte laenge :double breite :double

Mensch kopfDrehen :boolean

Schiene laenge :double

Duplo-Teil bezeichnung :String farbe :String noppenzahl :int

Bestellung adresse :String preis :double

Restaurant name :String adresse :String

Pizzaria ofentyp :Typ

«enumeration» Typ holz stein

Kundin kNr :int

Bibliothek name :String

Regal bezeichnung :String

Buch titel :String

Seite nummer :int 0,1 (^) * 0..1^ * (^1) * wortzahl :int

{non-unique}

{non-unique}

c) Ein Restaurant hat mehrere Kundinnen die wiederum in mehreren Restaurants Essen bestellen k¨onnen. Von jedem Restaurant werden Name und Adresse gespeichert. Zus¨atzlich wird f¨ur jede Bestellung, die eine Kundin in einem Restaurant macht, die Lieferadresse und der Preis gespeichert. Von jeder Kundin wird die Kundinnen-Nummer gespeichert. Es gibt eine spezielle Art Restaurant, n¨amlich die Pizzaria. Von dieser wird zus¨atzlich der Ofentyp gespeichert, den sie zum Herstellen der Pizzen verwendet. Es gibt genau zwei verschiedene ¨Ofen, n¨amlich Holzofen und Steinofen.

Basiss tein legokompatibel :boolean

{abstract} Konstruktionsstein

Tier reiten :boolean

Platte laenge :double breite :double

Mensch kopfDrehen :boolean

Schiene laenge :double

Duplo-Teil bezeichnung :String farbe :String noppenzahl :int

Bestellung adresse :String preis :double

Restaurant name :String adresse :String

Pizzaria ofentyp :Typ

«enumeration» Typ holz stein

Kundin kNr :int

Bibliothek name :String

Regal bezeichnung :String

Buch titel :String

Seite nummer :int 0,1 * 0..1^ * (^1) * wortzahl :int

{non-unique}

{non-unique}

Aufgabe 5: Klassendiagramm lesen - Wahr oder falsch?

Es ist folgendes UML-Modell gegeben:

E

{abstract} D

  • y :int
  • z :String

x :char

G

F

C

J

A

B

{XOR}^ H

K

R

1..*

1

2

1

0..2^ *

  • 1

1

1..*

3 2

Welche Aussagen treffen zu? Begr¨unden Sie Ihre Antwort!

Ein Objekt von E kann direkt auf die Variable x zugreifen.  nein Ein Objekt von C steht in Beziehung zu genau einem Objekt von A und genau zwei Objekten von B.

 nein

Ein Objekt von E steht in Beziehung zu genau einer direkten Instanz von D.  nein Ein Objekt von R kann mit sich selbst in Beziehung stehen.  ja Die Raute bei E wird als starke Aggregation bezeichnet.  ja

Ein Objekt von G muss in Beziehung zu mindestens einem Objekt von E stehen.  ja Ein Objekt von D kann auf die Variable x zugreifen.  ja Ein Objekt von E steht in Beziehung zu mindestens einem Objekt von F.  nein Im System k¨onnen mehr K als H enthalten sein.  ja Ein Objekt von C muss in Beziehung zu einem Objekt von A stehen.  nein

Eine Instanz von E kann auf die Variable y zugreifen.  ja Ein Objekt von F ist in genau einem Objekt von E enthalten.  ja Ein Objekt von A steht mit genau zwei Objekten von B in Beziehung, ein Objekt von B steht mit genau drei Objekten von A in Beziehung.

 ja

Wenn eine Instanz von G gel¨oscht wird, werden alle enthaltenen Instanzen von H gel¨oscht.  nein Ein Objekt von G steht in Beziehung zu mindestens einem Objekt von J und die Bezie- hung kann von G aus navigiert werden.

 ja

Aufgabe 6: Fehler finden

Gegeben ist folgendes UML Klassendiagramm. Bei der Modellierung sind leider einige Fehler passiert. Finden Sie die Fehler und korrigieren Sie diese im Diagramm.

Es gibt genau zwei verschiedene Arten von USI-Kursen, n¨amlich Sportkurse und Sprachkurse. Ein USI-Kurs wird von mehreren Studenten besucht, ein Student kann wiederum mehrere Kurse besuchen. Von jedem Studenten werden Name und Matrikelnummer gespeichert, von jedem Kurs der Name der Lehrerin, die ihn unterrichtet. Außerdem wird f¨ur jeden Kurs gespeichert, ob der jeweilige Student den Kursbeitrag bereits bezahlt hat oder nicht. Von Sportkursen wird zus¨atzlich gespeichert, ob Wettk¨ampfe stattfinden. Ein Sportkurs findet entweder in einer Sporthalle, von der die Gr¨oße gespeichert wird und ob sie einen Holzboden hat, oder in einem Schwimm- bad statt. Jedes Schwimmbad hat eine bestimmte Wassertemperatur. Von Sprachkursen wird das Kursniveau gespeichert. Es gibt genau vier verschiedene Niveaus: A1, A2, B1 und B2. Jeder Sprachkurs beinhaltet mehrere Module, ein Modul kann in mehreren Sprachkursen vorkommen. Von jedem Modul wird das Thema gespeichert. Ein Modul kann sich aus mehreren Teilmodulen zusammensetzen, die jeweils genauso aufgebaut sind und die gleichen Attribute aufweisen wie ein Modul.

  • Objektdiagramm 2:

:A

:A

:A

:A

:B

:B

:B :C

:C

:B :C

:C :D

:D

:D

:D

x - x - x -

y +f

y +f

z +

z +

z +

  • (^) z

  • (^) z

  • (^) z

z

z

Klassendiagramm 2:

{abstract} BD

B

C

A D

2

z + 0..

x (^) - 0..

+f 0..

y 0..

Aufgabe 2: Vergleich von Klassendiagrammausschnitten

Erkl¨aren Sie den Unterschied zwischen folgenden Klassendiagrammausschnitten: a)

A B A B

b)

A B A B

c)

Bibliothek *^ * Buch Bibliothek^1 * Buch

d)

A B A B

C

C

e)

A

C

B A B

C

f)

A ^ B A 0.. B

g)

A

A1 A2 A

«enumeration» Art A A A

A

  • typ: Art

Aufgabe 4: Torte

Bilden Sie die folgenden Sachverhalte mit einem Klassendiagramm ab. Ein B¨acker b¨ackt mehrere Torten, eine Torte kann von mehreren B¨ackern gebacken werden. Vom B¨acker werden der Name und das Datum, an dem er die Meisterpr¨ufung bestanden hat, gespeichert. Von jeder Torte werden die Bezeichnung und das Gewicht gespeichert und ob es sich um eine Motivtorte handelt oder nicht. Von jeder Torte die von einem oder mehreren B¨ackern gebacken wird, wir das Datum der Herstellung und die Backtemperatur gespeichert. Dabei wird außerdem ein bestimmtes Rezept verwendet, das mehrere Zutaten in einer bestimmten Menge (Gewicht) ben¨otigt. Eine Torte kann eine Glasur haben, von der die Trockenzeit und die Art der Glasur

  • Zucker oder Schokolade – gespeichert werden. Die Hochzeitstorte ist eine spezielle Torte, von der zus¨atzlich gespeichert wird, ob ein Miniatur-Brautpaar an der Torte angebracht werden soll. Eine Hochzeitstorte wird von einem B¨acker erfunden, dem Designer. Jeder B¨acker ist entweder in einer B¨ackerei angestellt oder in einer Konditorei. Von beiden werden Name und Adresse gespeichert. Von der B¨ackerei wird zus¨atzlich gespeichert, ob sie ihren eigenen Sauerteig herstellt.

Torte bezeichnung :String gewicht :double motivtorte :boolean

Bäcker name :String meisterpruefung :Date

Herstellung datum :Date temperatur :double

Bäckerei name :String adresse :String sauerteig :boolean

Konditorei name :String adresse :String

Hochzeitstorte brautpaar :boolean

Glasur typ :Glasurtyp trockenzeit :int

«enumeration» Glasurtyp zucker schoko

{XOR}

Rezept name :String

Zutat bezeichnung :String

Menge gewicht :double

Designer 1

0..

  • 1 * *

  • (^) *

1

1

Ausschnitt einer alternativen L¨osung, sodass ein Tortenexemplar von mehreren B¨ackern hergestellt werden kann:

Tortenart bezeichnung :String gewicht :double motivtorte :boolean

Bäcker name :String meisterpruefung :Date

Tortenexemplar datum :Date temperatur :double

1

Aufgabe 5: Klettern I

Bilden Sie die folgenden Sachverhalte mit einem Klassendiagramm ab. Von jedem Kletterer werden Name und Geburtsdatum gespeichert. Es gibt spezielle Kletterer, die Bergf¨uhrer, von denen zus¨atzlich das Datum der Bergf¨uhrerpr¨ufung gespeichert wird und ob diese auch im alpinen Gel¨ande t¨atig sein d¨urfen. Beim Kletterweltcup werden mehrere Kletterrouten benutzt. Von jeder Kletterroute werden die Bezeichnung, der Schwierigkeitsgrad (leicht, mittel, schwer) und der Felstyp (kalk, granit, sandstein) gespei- chert. In einer Weltcupsaison kann eine Kletterroute genau ein Kletterer gewinnen, dieser wird dann als Sieger bezeichnet.

Aufgabe 6: Klettern II

Erweitern Sie das Klassendiagramm aus Aufgabe 5 wie folgt: Eine Kletterroute ist Teil von einem Klettergebiet, ein Klettergebiet beinhaltet mindestens eine Kletterroute. Von jedem Klettergebiet werden Name und Adresse gespeichert. Ein Klettergebiet hat entweder eine Garage oder einen oder mehrere Parkpl¨atze. Von der Garage wird der Preis gespeichert und wie viele Stockwerke sie hat, vom Parkplatz wird gespeichert, ob dieser ¨uberdacht ist. Jedes Klettergebiet wird von mehreren Klettervereinen genutzt, aber nur von einem Kletterverein verwaltet. Vom Kletterverein wird die Bezeichnung gespeichert. Jeder Kletterverein besch¨aftigt mehrere Bergf¨uhrer, ein Bergf¨uhrer kann in einem Kletterverein t¨atig sein. Der F¨orderverein ist ein spezieller Kletterverein, der vom Land gef¨ordert wird. Von ihm wird zus¨atzlich die Adresse und die H¨ohe der F¨orderung gespeichert.

L¨osung f¨ur I und II:

Bergführer prfDat :Date alpin :boolean

Kletterer name :String gebDat :Date

Kletterroute bezeichnung :String schwierigkeitsgrad :Level Felstyp :Typ

Klettergebiet name :String adresse :String

Kletterverein bezeichnung :String

Foerderverein adresse :String foerderung :double

Parkplatz ueberdacht :boolean

Garage preis :double stockwerke :int

«enumeration» Level leicht mittel schwer

«enumeration» Typ kalk granit sandstein

{XOR}

Weltcupsaison jahr :int

1

verwaltet

nutzt

0..

beschaeftigt

1..*

1

Sieger 0..

1

1

1

1..*

Aufgabe 3: Synchrone/Asynchrone Kommunikation

Beschreiben Sie die im folgenden Text vorkommenden Kommunikationsabl¨aufe mittels Sequenzdiagramm.

Sissi und Franz sind am Weg zur Party von Norbert, einem Freund von Franz. Im Auto schreibt Sissi ihrer Mutter noch ein SMS, um sie zu fragen, was sie sich zum Geburtstag w¨unscht. Als sie vor dem Haus von Norbert eintreffen, sehen sie schon Marianne, die mit einer Freundin vor der T¨ur steht und raucht. Sissi schreit Marianne freudig ” Hallo!“ zu, als sie sich mit Franz dem Haus n¨ahert. Es dauert einen Moment, bis Marianne aus ihrem Gespr¨ach aufhorcht und schaut, wer da ihren Namen gerufen hat. Als sie Sissi erblickt, schreit sie erfreut ” Hallo Sissi!“ zur¨uck! Nach einem kurzen Gespr¨ach mit Marianne, betreten Franz und Sissi das Haus. Sie h¨oren die laute Musik, die durch das ganze Haus schallt. Sissi weiß gar nicht, wo genau sie eigentlich herkommt.

Franz trifft seinen alten Freund Max und sie suchen sich ein stilles Pl¨atzchen, um sich ¨uber Ihr aktuelles Leben auszutauschen. Franz erz¨ahlt Max von seinem Unfall mit dem Fahrrad und dieser wiederum berichtet von seiner neuen, großen Liebe, Moritz. Pl¨otzlich l¨autet Maxs Telefon. Es ist Moritz, der etwas verzweifelt wirkt, weil er Max in der Menge nicht mehr finden kann. Max teilt ihm mit, wo er zu finden ist, legt auf und schw¨armt Franz weiter von Max vor.

Sissi schaut auf ihr Handy und stellt fest, die Mailbox meldet 2 vers¨aumte Anrufe, ein SMS von ihrer Mutter und sie findet eine WhatsApp Nachricht von Marianne, die fragt, wo im Haus sie sie finden kann. Pl¨otzlich h¨ort sie laute Sirenen von außerhalb des Hauses und weiß im ersten Moment gar nicht, wo diese herkommen. Im n¨achsten Moment steht die Polizei vor der offenen Haust¨ur und verwarnt Sissi, die gerade bei der T¨ur steht, dass sie die Musik leiser drehen soll, da die Nachbarn sich bereits beschwert haben. Sissi schreit ” Musik leiser“ durchs ganze Haus und hofft, dass jemand sie h¨ort und die Musikanlage leiser dreht. Pl¨otzlich ist es still im Haus, jemand hat die Musikanlage ausgeschaltet. Die Polizei ermahnt Sissi noch einmal, dass sie R¨ucksicht auf ihre Nachbarschaft nehmen sollen und verabschiedet sich. Sissi verspricht das und verabschiedet sich ebenfalls von der Polizei. Alles nochmal gut gegangen!

Achten Sie bei diesem Beispiel besonders darauf, ob die beschriebenen Kommunikationsabl¨aufe synchron oder asynchron sind.

Mailbox

Sissi Franz Mutter Polizei

MusikMusik

Marianne Max Moritz

Hallo!Hallo!

Hallo!Hallo!

SireneSirene

Musik leiser!

Musik leiser!

par

WhatsApp Nachricht

Anruf

SMS

SMS

2 versäumte Anrufe

Verabschiedung

Gespräch beginnen

Hallo Sissi!

Musik leiser drehen!

Gespräch fortsetzen

b) Berechnung von Traces Beschreiben Sie alle m¨oglichen Ereignisfolgen des folgenden Diagramms.

:A :B :C :D :E :F

par

opt [...]

strict

critical a b c d e f g h

  • par: Die Nachrichten der zwei par-Abschnitte k¨onnen beliebig kombiniert werden, solange die folgenden Einschr¨ankungen ber¨ucksichtigt werden: - Erster par-Abschnitt: critical; die Reihenfolge von a und b ist egal (da sie sich keine Lebenslinie teilen), dazwischen d¨urfen aber keine anderen Nachrichten kommen. - Zweiter par-Abschnitt: seq (default-Ordnung); c muss jedenfalls vor d kommen, da sich die beiden eine Lebenslinie teilen; e kann davor, dazwischen oder danach folgen. M¨ogliche Sequenzen: c → d → e oder e → c → d oder c → e → d

M¨ogliche Sequenzen zum Beispiel: b → a → c → d → e c → a → b → d → e NICHT m¨oglich zum Beispiel: a → c → b → d → e

  • strict: genau diese Reihenfolge muss eingehalten werden f → g
  • opt: abh¨angig von der Bedingung wird h ausgef¨uhrt oder nicht.

Aufgabe 5: Klassendiagramm aus Sequenzdiagramm

Gegeben ist folgendes Sequenzdiagramm:

x:A y:A z:B k:C m:C

on(19) do x do :"ok" x

on(6) b on(7) b("ok") b :"no" x

on(7) b b("yes") b :"maybe"

Vervollst¨andigen Sie nachfolgendes Klassendiagramm.

  • Operationsdefinitionen mit Typangaben, soweit ersichtlich
  • Beziehungen zwischen Klassen in Form von navigierbaren Assoziationen: Zeichnen Sie nur Navigations- richtungen ein, die aus dem gegebenen Sequenzdiagramm ersichtlich sind.

A b(String) :String b()

B on(int) do() :String

C x()

i f ( ok == true ) p r i n t ( ” Auszahlung e r f o l g t! ” ) ; // S i c h t b a r am B i l d s c h i r m e l s e p r i n t ( ” Nicht genug Geld v e r f ¨u g b a r! ” ) ; // S i c h t b a r am B i l d s c h i r m

... }

private void p r i n t ( S t r i n g m) {... } }

c l a s s Bankkonto ( ) { private double b a l a n c e ;

public double g e t k t o S t a n d ( ) { return b a l a n c e ; }

public boolean getMoney ( double b e t r a g ) { i f ( b a l a n c e − b e t r a g >= 0 ) { b a l a n c e = b a l a n c e − b e t r a g ; return true ; } e l s e ( b a l a n c e − b e t r a g < 0 ) return f a l s e ; } }

:Main

bApp:BankApp

:Bildschirm bk1:Bankkonto

break [error == true]

loop (0,10) [error == true]

alt [balance - betrag >= 0]

[balance - betrag < 0]

alt [ok == true]

print("Geben Sie Ihren IBAN ein!")

counter=counter+

new

openBankkonto(iban)

ok=getMoney:false

error=start:error

ktoStand=getktoStand:balance

getMoney(betrag)

error=start:error

getktoStand

ok:getMoney:true

start

print("Auszahlung erfolgt!")

run

betrag

print("Nicht genug Geld verfügbar!")

print("Zugriff fehlgeschlagen!")

iban

balance= balance-betrag

bk1=openBankkonto:bankKonto

start

print("Ihr Kontostand: ktoStand Wieviel wollen Sie beheben?")