12.07.2015 Aufrufe

Einführung in die Informatik II UML - Technische Universität München

Einführung in die Informatik II UML - Technische Universität München

Einführung in die Informatik II UML - Technische Universität München

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • Keine Tags gefunden...

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong><strong>UML</strong>Prof. Bernd Brügge, Ph.DInstitut für <strong>Informatik</strong><strong>Technische</strong> Universität MünchenSommersemester 200427. April 2004Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 1 2


Überblick über <strong>die</strong>sen Vorlesungsblock Sprachen, Notation:– E<strong>in</strong>e genauere E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> Modellierungssprache <strong>UML</strong>– Klassendiagramme– Anwendungsfalldiagramme Konzepte und Techniken:– Identifizierung von Objekten und Assoziationen– Modellierung von Objekten– Modellierung der Interaktion zwischen Objekten– Taxonomie der Benutzer von Klassen nach der Art der Nutzung <strong>in</strong> Analyse,Entwurf und ImplementationCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 2


Zur Wiederholung E<strong>in</strong> System kann als e<strong>in</strong>e Menge von Untersystemen beschriebenwerden, <strong>die</strong> rekursiv wieder jeweils e<strong>in</strong>e Menge vonUntersystemen enthalten können, bis wir auf Subsysteme stoßen,<strong>die</strong> Komponenten s<strong>in</strong>d. Komponenten s<strong>in</strong>d elementare Objekte mit Merkmalen (Zustand,Verhalten). Jedes Objekt gehört zu e<strong>in</strong>er Menge von Objekten mitgleichen Merkmalen. Wir nennen <strong>die</strong>se Menge auch Klasse. Def<strong>in</strong>ition Klasse: Die Menge aller Objekte mit gleichenMerkmalen, d.h. mit gleichen Attributen und Operationen. Def<strong>in</strong>ition Instanz: E<strong>in</strong> Objekt ist e<strong>in</strong>e Instanz e<strong>in</strong>er Klasse K,wenn es Element der Menge aller Objekte der Klasse K ist. E<strong>in</strong> System hat Eigenschaften, <strong>die</strong> wir mit Diagrammenbeschreiben können. E<strong>in</strong> Klassendiagramm beschreibt statischeEigenschaften e<strong>in</strong>es Systems.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 3


Ziele des Vorlesungsblockes Sie verstehen <strong>UML</strong> Klassendiagramme und Anwendungsfall-Diagramme. Sie verstehen <strong>die</strong> unterschiedlichen Sichtweisen, <strong>die</strong> man von e<strong>in</strong>erKlasse haben kann. Sie verstehen, warum man oft unterschiedliche Modelle währendder Analyse, Entwurf und Implementation benutzt. Sie können e<strong>in</strong> Analysemodell für e<strong>in</strong> gegebenes Problemerstellen. Sie können aus e<strong>in</strong>em Analysemodell e<strong>in</strong> Spezifikationsmodell mitSchnittstellen erstellen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 4


<strong>UML</strong> ist e<strong>in</strong>e Sprache <strong>UML</strong> ist e<strong>in</strong>e Modellierungssprache, ke<strong>in</strong>e Software-Methode:– E<strong>in</strong>e Software-Methode enthält e<strong>in</strong>e (überwiegend grafische)Modellierungssprache und e<strong>in</strong>en Software-Prozess. Die Modellierungssprache beschreibt Modelle von Systemen. Der Software-Prozess beschreibt <strong>die</strong> Entwicklungsaktivitäten,<strong>die</strong> Abhängigkeit <strong>die</strong>ser Aktivitäten vone<strong>in</strong>ander und wie manam besten <strong>die</strong> Aktivitäten durchführt– Software-Prozesse werden <strong>in</strong> der Softwaretechnik (Hauptstudium)behandelt.– In Info <strong>II</strong> benutzen wir e<strong>in</strong>en sehr e<strong>in</strong>fachen Software-Prozess, der aus– Analyse,– Entwurf,– detailliertem Entwurf und– Implementationbesteht.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 5


Die Geschichte von <strong>UML</strong> Die Modellierungsprache <strong>UML</strong> hat viele Vorläufer, unter anderem:– E/R-Notation, 1976: Chen, Modellierung von Datenbanken– Booch-Notation, 1985: Grady Booch, Rational.– OMT, 1991: James Rumbaugh, General Electric– OOSE, 1992: Ivar Jacobsen, Ericsson <strong>UML</strong> ist <strong>die</strong> Vere<strong>in</strong>igung der Konzepte <strong>die</strong>ser Vorläufer (undvieler anderer Sprachen), deshalb der Name Unified Model<strong>in</strong>gLanguage. <strong>UML</strong> 2.0 : Offizieller Standard der OMG (Object ManagementGroup)Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 6


<strong>UML</strong>: Notation und Metamodell <strong>UML</strong> ist e<strong>in</strong>e Modellierungssprache für Systeme, <strong>in</strong>sbesondere für<strong>Informatik</strong>-Systeme. <strong>UML</strong> besteht aus e<strong>in</strong>er Notation und e<strong>in</strong>em Metamodell. Die Notation beschreibt <strong>die</strong> Syntax der Modellierungssprache:– Die <strong>UML</strong>-Notation ist 2-dimensional und besteht aus grafischen Elementen(Java ist 1-dimensional und besteht aus textuellen Elementen)– Teile der <strong>UML</strong>-Notation haben wir (<strong>in</strong>formell) bereits mehrfach zurModellierung <strong>in</strong> Info I benutzt (Rechtecke, Dreiecke, Pfeile). Das Metamodell beschreibt <strong>die</strong> Semantik von <strong>UML</strong>:– Das <strong>UML</strong> Metamodell beschreibt "genauer", was wir unter Begriffen wie"Klasse", "Assoziation", "Multiplizität" verstehen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 7


E<strong>in</strong>schub: Formale Methoden vs Modellierung Die Modellierungssprache <strong>UML</strong> ist nicht exakt. Die Notation istnicht formal begründet, d.h. es gibt ke<strong>in</strong>e formale Grammatik für <strong>die</strong>Notation. Also kann das Metamodell nicht mathematisch exakt se<strong>in</strong>. Die Idee e<strong>in</strong>er exakten Entwurfssprache ist das zentrale Thema desGebietes Formale Methoden im Hauptstudium, wo Entwürfe mite<strong>in</strong>er auf e<strong>in</strong>em Kalkül basierenden Technik mathematischbeschrieben werden (auch mathematische Spezifikation genannt). Mathematische Spezifikationen s<strong>in</strong>d exakt und unmißverständlich:– Man kann z.B. beweisen, dass e<strong>in</strong> Programm e<strong>in</strong>e mathematische Spezifikationerfüllt (Wir werden dazu Entwurf durch Verträge und den Zusicherungs-Kalkül von Hoare benutzen).– Es gibt aber ke<strong>in</strong>e Möglichkeit zu beweisen, dass e<strong>in</strong>e mathematischeSpezifikation <strong>die</strong> Anforderungen an e<strong>in</strong> <strong>Informatik</strong>-System erfüllt.⇒ mehr im HauptstudiumCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 8


<strong>UML</strong>-Klassendiagramm: Notation anhand e<strong>in</strong>esBeispielsAuftragempfangsdatumistVorausbezahltanzahl: Str<strong>in</strong>gpreis: Geldausführen()abschließen()*1nameaddresseKundekreditwürdigkeit():Str<strong>in</strong>g{ W e n nA uftrag.Kunde.k redit w ürdigkeit"g eri ng", d a n n mußA uftrag.i stVorausbezahlt trues e<strong>in</strong>}1P ositionen*FirmenkundePrivatkundeAuftragspositionmenge: Integerpreis: GeldistGeliefert: Booleanunternehmensnamekreditwürdikgeitkreditlimiter<strong>in</strong>nern()kreditkartennr*1Produkt*Ve rkäufer{kreditwü rdigkeit() = = ge ri n g}0..1AngestellterCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 9


Klassendiagramme eignen sich sehr gut zur Kommunikation Klassendiagramme s<strong>in</strong>d <strong>die</strong> zentrale Beschreibungstechnik beiobjektorientierten Methoden.– Hauptvorteile:– Die wichtigsten Abstraktionen s<strong>in</strong>d klar zu erkennen– Diagramme enthalten weniger Details als entsprechender Programm-Code Allerd<strong>in</strong>gs muss man sich immer fragen:Wer benutzt Klassendiagramme?– Unterschiedliche Benutzer <strong>in</strong>terpretieren Klassendiagramme unterschiedlich! Doch zunächst e<strong>in</strong>mal e<strong>in</strong> bisschen <strong>UML</strong>-Syntax ...Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 10


Sichtbarkeit <strong>in</strong> <strong>UML</strong> In <strong>UML</strong> gibt es 3 Sichtbarkeitsstufen (visibilities) für Merkmale:Öffentlich (public): Das Merkmal ist überall sichtbar.Notation: +Beispiel: +preis: GeldPrivat (private): Das Merkmal ist nur <strong>in</strong>nerhalb der Klasse sichtbar.Notation: -Beispiel: -preis: GeldGeschützt (protected): Merkmal ist <strong>in</strong> Klasse und Unterklasse sichtbar.Notation: #Beispiel: #addresse: Str<strong>in</strong>g Die Angabe von Sichtbarkeitsstufen ist optional. Die Vore<strong>in</strong>stellung ist öffentlich.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 13


Sichtbarkeit: <strong>UML</strong> vs. Java Java erlaubt das Deklarieren von Sichtbarkeitsstufen durch Angabee<strong>in</strong>es der Schlüsselworte public, private, protected vore<strong>in</strong>em Merkmal. Unterschiede zu <strong>UML</strong>:– Die Bedeutung von protected ist <strong>in</strong> Java nicht <strong>die</strong>selbe wie <strong>in</strong> <strong>UML</strong>.– Java bietet e<strong>in</strong>e zusätzliche, <strong>in</strong> <strong>UML</strong> nicht vorgesehene Sichtbarkeitsstufe:Wird <strong>die</strong> Sichtbarkeitsstufe e<strong>in</strong>es Merkmals nicht explizit angegeben, ist dasMerkmal nur für Klassen nutzbar, <strong>die</strong> im gleichen "Paket" wie <strong>die</strong> Klasse, für<strong>die</strong> das Merkmal deklariert ist, enthalten s<strong>in</strong>d.– <strong>die</strong>s kann zu zusätzlichen Komplikationen führen⇒ Vorlesungsblock über VerträgeCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 14


Sichtbarkeitssymbole <strong>in</strong> <strong>UML</strong>-KlassendiagrammenPrivatAuftrag-empfangsdatum-istVorausbezahlt-anzahl: Str<strong>in</strong>g-preis: Geld+ausführen()+abschließen()*Geschützt1#name#addresseKunde+kreditwürdigkeit():Str<strong>in</strong>gÖffentlichPrivatkundeSichtbarkeit ist e<strong>in</strong> zentraler Aspekt währenddes detaillierten Entwurfs (Während der Analyse istSichtbarkeit nicht so wichtig)kreditkartennrCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 15


<strong>UML</strong>-Syntax für OperationenSichtbarkeit Name ( Parameterliste ) : Rückgabetyp { Eigenschaften }! Sichtbarkeit ist +, # oder -! Name ist e<strong>in</strong>e Zeichenkette! Parameterliste ist e<strong>in</strong>e durch Kommata getrennte Liste von Parametern.! Rückgabetyp ist der Typ des Resultates.! Eigenschaften zeigen Werte an, <strong>die</strong> für <strong>die</strong> Operationen Anwendung f<strong>in</strong>den.Sichtbarkeit, Parameterliste, Rückgabetyp und Eigenschaften s<strong>in</strong>d optional.Die runden Klammern müssen angegeben werden.Beispiele für gültige Operationen:+kontostandAm (datum: Datum): GeldkontostandAm()Beispiele für ungültige Operationen:kontostandAmkonstandAm:GeldCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 16


<strong>UML</strong>-Syntax von ParameternRichtung Name : Typ = Vore<strong>in</strong>stellungswert! Richtung zeigt an, ob der Parameter e<strong>in</strong> E<strong>in</strong>gabeparameter (<strong>in</strong>),Ausgabeparameter (out) oder beides ist (<strong>in</strong>out). Beispiele:+kontostandAm (<strong>in</strong> datum: Datum): Geld+kontostandAm (<strong>in</strong> datum: Datum; out Betrag: Geld)+e<strong>in</strong>zahlen (<strong>in</strong> datum: Datum; <strong>in</strong>out Konto: Geld)Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 17


Wieviel Detail bei Operationen und Attributen ist nötig? Wenn so viele Aspekte optional s<strong>in</strong>d, wie detailliert soll manAttribute und Operationen <strong>in</strong> Klassendiagrammen beschreiben?– Während der Analyse:Nur Namen von Attributen und Operationen– Während des detaillierten Entwurfs:Jedes öffentliche Attribut hat e<strong>in</strong>en Typ, jede öffentlicheOperation hat e<strong>in</strong>e Funktionalität– Während der Implementation:Jedes Attribut hat e<strong>in</strong>en Typ, jede Operation hat e<strong>in</strong>eFunktionalitätCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 18


Arten von <strong>UML</strong>-Operationen Anfrage (Query): E<strong>in</strong>e Operation, <strong>die</strong> e<strong>in</strong>en Wert aus e<strong>in</strong>em Objektliefert, ohne den Zustand des Objektes zu verändern. E<strong>in</strong>e Anfragehat also ke<strong>in</strong>e Seiteneffekte auf das Objekt. Beispiel e<strong>in</strong>er Anfrage:Betrag = kontostandAm("30.4.2001")Anfragen kann man mit der E<strong>in</strong>schränkung {query} markieren(siehe Folie 25). Modifizierer (modifier): E<strong>in</strong>e Operation, <strong>die</strong> den Zustand e<strong>in</strong>esObjektes ändert.– Beispiel e<strong>in</strong>es Modifizierers: setName("Bruegge"); Unterschied zwischen Anfrage und Modifizierer:– Anfragen können <strong>in</strong> beliebiger Reihenfolge ausgeführt werden.– Bei Modifzierern ist <strong>die</strong> Reihenfolge wichtig. Dogma: In Info <strong>II</strong> s<strong>in</strong>d Rückgabewerte nur bei Anfragen erlaubt.Modifizierer dürfen ke<strong>in</strong>e Rückgabetypen enthalten (Warum nicht?)Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 19


Operation vs. Methode In Modellierungssprachen werden <strong>die</strong> Begriffe Operation undMethode manchmal synonym benutzt. Die beiden Begriffe habenallerd<strong>in</strong>gs unterschiedliche Bedeutung beim Polymorphismus, deres erlaubt, e<strong>in</strong>e Operation an unterschiedliche Methoden zu b<strong>in</strong>den(dynamische B<strong>in</strong>dung erlaubt <strong>die</strong>s zur Laufzeit). Polymorphismus und dynamische B<strong>in</strong>dung s<strong>in</strong>d zentrale Konzeptedes objekt-orientierten Programmierstils. Deshalb unterscheiden wir bei der Modellierung zwischen Operationund Methode:– Def<strong>in</strong>ition Operation: Deklaration oder Aufruf e<strong>in</strong>esAlgorithmus.– Synonyme: Methodendeklaration, Methodenaufruf– Def<strong>in</strong>ition Methode: Implementation (oder Rumpf) e<strong>in</strong>esAlgorithmus.– Synonym: MethodenrumpfCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 20


Operationen <strong>in</strong> Programmiersprachen Programmiersprachen haben ihre eigenen Namenskonventionen:– In Java heißen Operationen Methoden.– In C++ werden Operationen Funktionen der Klasse genannt. In Programmiersprachen benutzen wir deshalb nicht den BegriffOperation Wir unterscheiden dabei zwischen Methodendeklaration,Methodenrumpf und Methodenaufruf.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 21


Assoziationen <strong>in</strong> <strong>UML</strong> Def<strong>in</strong>ition: E<strong>in</strong>e Assoziation verb<strong>in</strong>det zwei Klassen (<strong>die</strong>sogenannten Zielklassen) und beschreibt so e<strong>in</strong>e Beziehungzwischen <strong>die</strong>sen Zielklassen. Die Anknüpfungspunkte an den Zielklassen werden alsAssoziationsenden bezeichnet. Es gibt 3 Arten von Assoziationen:– allgeme<strong>in</strong>e Assoziation– Aggregation (Enthaltense<strong>in</strong>s-Beziehung)– Vererbung Allgeme<strong>in</strong>e Assoziationen und Aggregationen können (durchAngabe e<strong>in</strong>er Pfeilspitze an e<strong>in</strong>em Assoziationsende) gerichtetse<strong>in</strong>.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 22


Assoziationen <strong>in</strong> <strong>UML</strong> (Beispiel){ We nnAuft rag.Kunde.k red i t würd i gke i t"ger i ng", da nn mu ßAuft rag.i stVo rausbezah l t t rues e <strong>in</strong>}AuftragempfangsdatumistVorausbezahltanzahl: Str<strong>in</strong>gpreis: Geldausführen()abschließen()1*1(Allgeme<strong>in</strong>e) AssoziationnameaddresseKundekreditwürdigkeit():Str<strong>in</strong>gVererbungsassoziationAggregationP os i t ionenAuftragspositionmenge: Integerpreis: GeldistGeliefert: Boolean*Firmenkundeunternehmensnamekreditwürdikgeitkreditlimiter<strong>in</strong>nern()Privatkundekreditkartennr*1Produkt*Verkäufer{k redi t wü rdigke i t() = = ger <strong>in</strong>g}0..1AngestellterCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 23


Rollen Def<strong>in</strong>ition: E<strong>in</strong> Assoziationsende kann explizit mite<strong>in</strong>er Beschriftung versehen werden. DieseBeschriftung heißt Rolle.– Wenn e<strong>in</strong>e Assoziation ke<strong>in</strong>e Beschriftung hat,nennt man das Assoziationsende nach derZielklasse– Beispiel (siehe nächste Folie): Die Rolle vonAuftrag zu Kunde würde man Kunde nennen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 24


Rollen <strong>in</strong> <strong>UML</strong> (Beispiel)Auftrag{ We nnAuft rag.Kunde.k red i t würd i gke i t"ger i ng", da nn mu ßAuft rag.i stVo rausbezah l t t rues e <strong>in</strong>}empfangsdatumistVorausbezahltanzahl: Str<strong>in</strong>gpreis: Geldausführen()abschließen()1*1nameaddresseKundekreditwürdigkeit():Str<strong>in</strong>gP os i t ionen*FirmenkundePrivatkundeRollenname:PositionenAuftragspositionmenge: Integerpreis: GeldistGeliefert: Boolean*1Produktunternehmensnamekreditwürdikgeitkreditlimiter<strong>in</strong>nern()Rollenname:Verkäufer*Verkäufer0..1Angestellterkreditkartennr{k redi t wü rdigke i t() = = ger <strong>in</strong>g}Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 25


Multiplizität Def<strong>in</strong>ition: Die Zahl an e<strong>in</strong>em Assoziationsende, <strong>die</strong> besagt,wieviele Objekte an der Beziehung beteiligt se<strong>in</strong> können, heißtMultiplizität. Beispiele für Multiplizitäten:* ("0..∞")Beispiel: E<strong>in</strong> Kunde kann ke<strong>in</strong>en oder viele Aufträge haben1 ("genau 1")Beispiel: E<strong>in</strong> Auftrag ist genau e<strong>in</strong>em Kunden zugeordnet0..1 ("E<strong>in</strong>er oder ke<strong>in</strong>er", "optional")Beispiel: E<strong>in</strong>ige Firmenkunden werden durch e<strong>in</strong>enspeziellen Verkäufer betreut, andere Firmenkunden nicht Vore<strong>in</strong>stellung: Wenn e<strong>in</strong> Assoziationsende ke<strong>in</strong>e expliziteMultiplizität hat, dann hat sie <strong>die</strong> Multiplizität 1.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 26


Multiplizitäten <strong>in</strong> <strong>UML</strong> (Beispiel){ We nnAuft rag.Kunde.k red i t würd i gke i t"ger i ng", da nn mu ßAuft rag.i stVo rausbezah l t t rues e <strong>in</strong>}AuftragempfangsdatumistVorausbezahltanzahl: Str<strong>in</strong>gpreis: Geldausführen()abschließen()1*Multiplizität: 1(verpflichtend)1Multiplizität:vielenameaddresseKundekreditwürdigkeit():Str<strong>in</strong>gAggregationP os i t ionenmenge: Integerpreis: GeldistGeliefert: Boolean*AuftragspositionFirmenkundeunternehmensnamekreditwürdikgeitkreditlimiter<strong>in</strong>nern()Privatkundekreditkartennr*1Produkt*Verkäufer{k redi t wü rdigke i t() = = ger <strong>in</strong>g}0..1AngestellterMultiplizität:optionalCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 27


Die Vererbungsassoziation hat ke<strong>in</strong>e Multiplizität Die Angabe von Multiplizitäten ist nur bei allgeme<strong>in</strong>enAssoziationen und Aggregationen nötig. Bei Vererbung ist sie nicht s<strong>in</strong>nvoll. Warum?Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 28


Modellierung von E<strong>in</strong>schränkungen mit <strong>UML</strong> E<strong>in</strong> wesentlicher Aspekt von Klassendiagrammen s<strong>in</strong>dBeschreibungen von E<strong>in</strong>schränkungen. Mit den Konzepten "Assoziation", "Attribut" und"Generalisierung" kann man bereits viele E<strong>in</strong>schränkungenausdrücken, z.B.:– E<strong>in</strong> Auftrag kann nur von e<strong>in</strong>em e<strong>in</strong>zelnen Kunden kommen.– E<strong>in</strong> Auftrag besteht aus separaten Auftragspositionen, d.h. man kann nicht 2Auftragspositionen zusammen bestellen. Die folgende E<strong>in</strong>schränkung kann man allerd<strong>in</strong>gs so nichtausdrücken:– Firmenkunden haben e<strong>in</strong> Kreditlimit, Privatkunden nicht. <strong>UML</strong> enthält <strong>die</strong> Möglichkeit zur Beschreibung von beliebigenE<strong>in</strong>schränkungen.– Die E<strong>in</strong>schränkung muss <strong>in</strong> geschweifte Klammern {} gesetzt werden. Wir unterscheiden <strong>in</strong>formelle und formale E<strong>in</strong>schränkungen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 29


Informelle E<strong>in</strong>schränkungen <strong>in</strong> <strong>UML</strong>: Beliebiger TextE<strong>in</strong>schränkungfür Klasse Auftrag{ We nnAuft rag.Kunde.k red i t würd i gke i t"ger i ng", da nn mu ßAuft rag.i stVo rausbezah l t t rues e <strong>in</strong>}AuftragempfangsdatumistVorausbezahltanzahl: Str<strong>in</strong>gpreis: Geldausführen()abschließen()1*1nameaddresseKundekreditwürdigkeit():Str<strong>in</strong>gP os i t ionen*FirmenkundePrivatkundeAuftragspositionmenge: Integerpreis: GeldistGeliefert: Booleanunternehmensnamekreditwürdikgeitkreditlimiter<strong>in</strong>nern()kreditkartennr*1Produkt*Verkäufer{k redi t wü rdigke i t() = = ger <strong>in</strong>g}0..1AngestellterE<strong>in</strong>schränkungfür KlassePrivatkundeCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 30


Formale E<strong>in</strong>schränkungen <strong>in</strong> <strong>UML</strong>: OCL <strong>UML</strong> stellt e<strong>in</strong>e Sprache zur Verfügung, mit derE<strong>in</strong>schränkungen formal beschrieben werden können. Die Sprache heißt OCL (Object Constra<strong>in</strong>t Language). OCL besprechen wir im Vorlesungsblock "Entwurf durchVerträge".Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 31


Wer benutzt Klassendiagramme? In Info <strong>II</strong> benutzen wir Klassendiagramme für 2Beschreibungszwecke:– Die Beschreibung der statischen Eigenschaften e<strong>in</strong>es <strong>Informatik</strong>-Systems. (Hauptzweck)– Beschreibung von Konzepten (Didaktische Gründe) <strong>Informatik</strong>-Systeme s<strong>in</strong>d für zwei Gruppen von Personen<strong>in</strong>teressant: Kunde und Entwickler.– Der Kunde (Benutzer) e<strong>in</strong>es <strong>Informatik</strong>-Systems ist anKlassendiagrammen nicht so sehr <strong>in</strong>teressiert, sondern an derFunktionalität des Systems, <strong>die</strong> <strong>in</strong> <strong>UML</strong> mit Anwendungsfällenmodelliert werden.– Der Entwickler e<strong>in</strong>es <strong>Informatik</strong>-Systems erzeugt und benutztKlassendiagramme während der Entwicklungsphasen des<strong>Informatik</strong>-Systems, d.h. während der Analyse, dem System-Entwurf, dem detailliertem Entwurf und der Implementation.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 32


Benutzer von Klassendiagrammen Die Entwickler e<strong>in</strong>es <strong>Informatik</strong>-Systems bezeichen wirnach der Entwicklungsphase des <strong>Informatik</strong>-Systems als– Analytiker– System-Entwerfer– Klassen-Entwerfer– Implementierer Jeder <strong>die</strong>ser Entwickler hat unterschiedliche Sichtweisenvon Modellen. Bevor wir <strong>die</strong>se Typen von Entwicklern beschreiben,machen wir noch e<strong>in</strong>e Unterscheidung bezüglich der Artvon Klassen, <strong>die</strong> <strong>in</strong> Klassendiagrammen auftauchen:– Anwendungsklassen– LösungsklassenCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 33


E<strong>in</strong>schub: Anwendungsklassen vs Lösungsklassen Def<strong>in</strong>ition Anwendungsdomäne: Der Bereich, aus dem dasProblem kommt (F<strong>in</strong>anzwelt, Meteorologie,Unfallverhütung, Architektur, …). Def<strong>in</strong>ition Anwendungsklasse: E<strong>in</strong>e Abstraktion aus derAnwendungsdomäne. Bei Modellierungen <strong>in</strong> derGeschäftswelt nennt man <strong>die</strong>se Klassen auch oftGeschäftsobjekte (bus<strong>in</strong>ess objects).– Beispiele: Student, Studentenverzeichnis, E<strong>in</strong>kaufskorb Def<strong>in</strong>ition Lösungsdomäne: Der Bereich, der Lösungen fürTeilprobleme liefert (Telekommunikation, Datenbanken,Compilerbau, Betriebssysteme, Entwurfsmuster, …). Def<strong>in</strong>ition Lösungsklasse: E<strong>in</strong>e Abstraktion, <strong>die</strong> austechnischen Gründen e<strong>in</strong>geführt wird, da sie bei der Lösungdes Problems hilft.– Beispiele: sortierter Baum, verkettete ListeCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 34


Warum <strong>die</strong>se Unterscheidung?Der Kunde kommt mit <strong>die</strong>sem Problem. Was machen Sie?Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 35


Analytiker Analytiker (analyst)– Die Klassen, <strong>die</strong> den Analytiker <strong>in</strong>teressieren, s<strong>in</strong>dApplikationsklassen.– Die Assoziationen zwischen Klassen bezeichnen Beziehungenzwischen Abstraktionen <strong>in</strong> der Anwendungsdomäne.– Den Analytiker <strong>in</strong>teressiert auch, ob Vererbungshierarchien imModell <strong>die</strong> Taxonomie <strong>in</strong> der Anwendungsdomäne richtigwiderspiegeln. Def<strong>in</strong>ition Taxonomie: E<strong>in</strong>e Hierarchie von Begriffen. Lösungsklassen sowie <strong>die</strong> genaue Signatur vonOperationen <strong>in</strong>teressieren den Analytiker nicht.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 36


Welche Anwendungsklassen sehen Sie hier?Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 37


Entwerfer und Spezifizierer Der Entwerfer konzentriert sich auf <strong>die</strong> Lösung des Problems, also auf<strong>die</strong> Lösungsdomäne. Entwurf besteht aus vielen Aufgaben (Subsystemauswahl, Auswahl derDatenbank, Auswahl der Zielplattform, usw.). In Info <strong>II</strong> konzentrierenwir uns auf <strong>die</strong> Spezifikation von Schnittstellen. E<strong>in</strong> Entwerfer, der sich nur auf Schnittstellen konzentriert,wird auch Spezifizierer genannt. Aufgaben des Spezifizierers:– Erstellt <strong>die</strong> Schnittstelle e<strong>in</strong>er Klasse (Klassen-Entwurf) oder e<strong>in</strong>esSubsystems (System-Entwurf).– Def<strong>in</strong>iert <strong>die</strong> Schnittstelle so, dass sie von möglichst vielen anderenKlassen <strong>in</strong> demselben <strong>Informatik</strong>-System benutzbar ist.– Wenn möglich: Def<strong>in</strong>iert <strong>die</strong> Schnittstelle so, dass sie <strong>in</strong> anderen<strong>Informatik</strong>-Systemen wiederverwendbar (reusable) ist.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 38


Drei Arten von Implementierern Klassen-Implementierer (class implementor):– Implementiert <strong>die</strong> Klasse. Der Implementierer wählt geeignete Datenstrukturenund Algorithmen, und realisiert <strong>die</strong> Schnittstelle der Klasse <strong>in</strong> e<strong>in</strong>erProgrammiersprache. Klassen-Erweiterer (class extender):– Erweitert <strong>die</strong> Klasse durch e<strong>in</strong>e Subklasse, <strong>die</strong> für e<strong>in</strong> neues Problem oder e<strong>in</strong>eneue Anwendungsdomäne benötigt wird. Klassen-Benutzer (client):– Verwendet e<strong>in</strong>e existierende Klasse für eigene Programme(z.B. e<strong>in</strong>e Klasse aus e<strong>in</strong>er Klassenbibliothek, oder e<strong>in</strong>e Klasse aus e<strong>in</strong>emanderen Subsystem).– Den Klassen-Benutzer <strong>in</strong>teressiert <strong>die</strong> Signatur der Klasse und ihre Semantik,so dass er <strong>die</strong> Methoden aufrufen kann.Die Implementation der Klasse selbst <strong>in</strong>teressiert ihn nicht.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 39


Warum betonen wir <strong>die</strong>se unterschiedlichen Benutzer? Viele Modelle machen ke<strong>in</strong>en Unterschied zwischen Applikationsklasse("Verzeichnis") und Lösungsklasse ("Reihung", "Baum").– Der Grund: Modellierungsprachen erlauben es, beide Arten <strong>in</strong> e<strong>in</strong>em Modellzu verwenden.– Info <strong>II</strong> Dogma: Lösungsklassen s<strong>in</strong>d im Analysemodell nicht erlaubt. Viele Softwaresysteme machen ke<strong>in</strong>en Unterschied zwischen derSpezifikation und Implementierung e<strong>in</strong>er Klasse.– Der Grund: Objekt-orientierte Programmiersprachen erlauben <strong>die</strong>Vermischung von Schnittstellenspezifikation und Implementierung bei derDeklaration e<strong>in</strong>er Klasse.– Info <strong>II</strong> Dogma: Implementierungen s<strong>in</strong>d im Spezifikationsmodell nichterlaubt. Heuristik: Der Schlüssel für <strong>die</strong> Erstellung von Softwaresystemenmit hoher Qualität ist e<strong>in</strong>e genaue Unterscheidung zwischen– Anwendungsklassen und Lösungsklassen– Schnittstellenspezifikation und ImplementierungCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 40


Erstellung von <strong>Informatik</strong>-Systemen: Beteiligte Personen <strong>Informatik</strong>-Systeme haben viele unterschiedliche Interessenten:EndanwenderKundeEntwickler- Analytiker- EntwerferSystem-EntwerferKlassen-Entwerfer- ImplementiererBenutzer von KlassenImplementierer von KlassenErweiterer von Klassen. Wir sehen <strong>die</strong>se Interessenten als Rollen, <strong>die</strong> je nach Komplexität des<strong>Informatik</strong>-Systems auf e<strong>in</strong>e oder mehrere Personen abgebildet werden.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 41


Beispiele für <strong>die</strong> Abbildung von Rollen auf Personen Studenverwaltungssystem <strong>in</strong> Info <strong>II</strong>:– Frage: Wer ist der Kunde?– Wer ist der Entwickler? Campus Management System von SAP:Jede Rolle wird von e<strong>in</strong>em Team ausgeübt, das aus mehrerenPersonen besteht.– Frage: Wer ist der Benutzer? Das Ziel von Info <strong>II</strong> ist, dass Sie <strong>die</strong> wichtigsten Rollen bei derEntwicklung e<strong>in</strong>es Software-Systems kennen und e<strong>in</strong>ige davonsehr gut ausüben können.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 42


Klassendiagramme s<strong>in</strong>d immer Teile von Modellen Klassendiagramme werden <strong>in</strong> verschiedenen Modellen verwendet:– Analysemodell– Spezifikationsmodell– Implementationsmodell Je nach unserem Interesse betrachten wir <strong>die</strong>se Modelle sehrunterschiedlich, und oft <strong>in</strong>teressiert uns <strong>in</strong> e<strong>in</strong>er bestimmten Rollenicht alles im Modell:⇒ 3 Arten von Schnittstellen im Spezifikationsmodell Je nach Rolle und Modell gibt es unterschiedliche Interpretationen fürverschiedene <strong>UML</strong>-Konstrukte:– Unterschiedliche Interpretation von Assoziationen– Unterschiedliche Interpretation von Attributen– Unterschiedliche Interpretation von Vererbung Wir werden jetzt auf <strong>die</strong>se unterschiedlichen Interpretationene<strong>in</strong>gehen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 43


Analysemodell Das Analysemodell wird während der Analysephase erstellt.– Haupt<strong>in</strong>teressenten: Analytiker, Kunde, Benutzer.– Das Klassendiagramm enthält nur <strong>die</strong> Applikationsklassen. Das Analysemodell ist <strong>die</strong> Grundlage der Kommunikationzwischen den Analytikern, den Experten der Anwendungsdomäneund den Endbenutzern des Systems.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 44


Spezifikationsmodell Das Spezifikationsmodell wird während des detaillierten Entwurfserstellt.– Haupt<strong>in</strong>teressenten s<strong>in</strong>d Spezifizierer und Benutzer.– Das Klassendiagramm enthält Applikationsklassen undSchnittstellen. Das Spezifikationsmodell ist <strong>die</strong> Grundlage der Kommunikationzwischen dem Entwerfer und Implementierer.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 45


Implementationsmodell Das Implementationsmodell wird während der Implementationerstellt.– Haupt<strong>in</strong>teressenten: Implementierer und Erweiterer.– Das Diagramm enthält Applikationsklassen, Schnittstellenund Lösungsklassen. Das Implementationsmodell ist <strong>die</strong> Grundlage für <strong>die</strong>Implementation <strong>in</strong> e<strong>in</strong>er Programmiersprache, das heißt, es <strong>die</strong>ntzur Kommunikation zwischen dem Programmierer und demRechner.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 46


Entwicklungsaktivitäten s<strong>in</strong>d Modelltransformationen(siehe Info I - Vorlesung 2: <strong>Informatik</strong>-Systeme)AnalyseWM AnalyseM SystemDetaillierterEntwurfM DetailM Implf Wf MAf MSf MDf ImplWM AnalyseM SystemM DetailM ImplSystem-EntwurfImplementationAnalyse-ModellSpezifikations-ModellImplementations-ModellE<strong>in</strong> Modell enthält e<strong>in</strong> oder mehrere Diagramme:KlassendiagrammeAnwendungsfalldiagrammeSequenzdiagrammeCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 47


Familien_az_1.qxd 12.01.2004 15:47 Uhr Seite 9494BeratungBeratung 95SchwangerenberatungsstelleTräger: Sozial<strong>die</strong>nst kath. FrauenKontakt: SchwangerenberatungsstelleAm Katzenstadel 1, 86152 AugsburgTel. 42 08 99-0, Fax 42 08 99-22schwangerenberatung.augsburg@skf-augsburg.deTerm<strong>in</strong>e: zu erfragenKosten: ke<strong>in</strong>eAngebot: Beratung bei gewollter/ungewollter Schwangerschaft, zu vorgeburtlicherDiagnostik, bei unerfülltem K<strong>in</strong>derwunsch und nache<strong>in</strong>em Schwangerschaftsabbruch. Vermittlung von f<strong>in</strong>anziellenund sozialen Hilfen. Sexualpädagogische Prävention. Informationüber Verhütungsmittel und Familienplanung. Gruppenangebotevon PEKiP und Alle<strong>in</strong>erziehenden Gruppen.Schweigepflicht, alle Konfessionen.Schwangeren- Sexual- und PartnerberatungTräger: pro familia, Deutsche Gesellschaft für Familienplanung,Sexualpädagogik und Sexualberatung Augsburg e.V.Kontakt: Hermanstraße 1, 86150 AugsburgTel. 45 03 62-0, Fax 45 03 62-10augsburg@profamilia.de, www.profamilia-augsburg.deTerm<strong>in</strong>e: nach telefonischer Vere<strong>in</strong>barungKosten: ke<strong>in</strong>e, um Spende wird gebetenAngebot: Beratung bei K<strong>in</strong>derwunsch und Verhütung. Information und Vermittlungvon f<strong>in</strong>anziellen und sozialen Hilfen für Schwangere.Schwangerschaftskonfliktberatung nach §219b. Beratung zu Fragender Sexualität, Partnerschaft und Familie, bei Trennung undScheidung. Sexualpädagogische Angebote für Jugendliche, Elternund Multiplikatoren. Gruppenangebote und Vorträge. Öffentlichkeitsarbeit.Die MitarbeiterInnen bieten E<strong>in</strong>zel-, Paar- und Gruppenberatungan. Schweigepflicht.Entwicklungspsychologische BeratungTräger: Sozial<strong>die</strong>nst kath. FrauenKontakt: Kath. Beratungsstelle für SchwangerschaftsfragenAm Katzenstadel 1, 86152 AugsburgTel. 42 08 99-0, Fax 42 08 99-22schwangerenberatung.augsburg@skf-augsburg.deTerm<strong>in</strong>e: nach telefonischer Vere<strong>in</strong>barungKosten: ke<strong>in</strong>eAngebot: Für Eltern mit Säugl<strong>in</strong>gen und Kle<strong>in</strong>k<strong>in</strong>dern. Diese Beratung hilftEltern, ihr K<strong>in</strong>d <strong>in</strong> se<strong>in</strong>er Entwicklung zu verstehen und zu unterstützen.Sie bietet Hilfe bei frühk<strong>in</strong>dlichen Regulationsstörungen(Schlaf-, Schrei- und Fütterploblemen). Die Beratung kann Verhaltensauffälligkeitenund Entwicklungsstörungen vorbeugen.Familien- und ErziehungsberatungTräger: Kath. Jugendfürsorge der Diözese Augsburg e.V.Kontakt: Psychologische BeratungsstelleErziehungs-, Jugend- und FamilienberatungSchaezlerstraße 36, 86152 AugsburgTel. 31 00-141, Fax 31 00-184EB-Augsburg@kjf-Augsburg.deAußenstellen:Pfersee (Cramerton), D<strong>in</strong>kelscherben, Gersthofen, Königsbrunn,Oberhausen, Univiertel, SchwabmünchenTerm<strong>in</strong>e: nach telefonischer Vere<strong>in</strong>barungKosten: ke<strong>in</strong>eAngebot: Wir unterstützen K<strong>in</strong>der und Jugendliche, Eltern und alleErziehungspersonen <strong>in</strong> familiären, schulischen und andererenProblemsituationen.


Die Benutzer des Spezifikationsmodells Im Spezifikationsmodell gibt es für <strong>die</strong> verschiedenen Artenvon Implementierern unterschiedliche Schnittstellen Öffentliche Schnittstelle (public <strong>in</strong>terface):– Menge der Merkmale, <strong>die</strong> für den Klassen-Benutzer sichtbar s<strong>in</strong>d. Private Schnittstelle (private <strong>in</strong>terface):– Menge der Merkmale, <strong>die</strong> nur für den Klassen-Implementierer sichtbars<strong>in</strong>d. Geschützte Schnittstelle (protected <strong>in</strong>terface):– Menge der Merkmale, <strong>die</strong> für den Klassen-Erweiterer sichtbar s<strong>in</strong>d.–Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 49


Öffentliche Schnittstelle (public <strong>in</strong>terface) Menge der Merkmale, <strong>die</strong> für den Klassen-Benutzer sichtbars<strong>in</strong>d. E<strong>in</strong> öffentliches Merkmal (public member) ist überall imModell sichtbar. Jede Klasse im System kann auf öffentliche MerkmalezugreifenCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 50


Private Schnittstelle (private <strong>in</strong>terface) Menge der Merkmale, <strong>die</strong> nur für den Klassen-Implementierersichtbar s<strong>in</strong>d. E<strong>in</strong> privates Merkmal (private member) darf nur <strong>in</strong> derdef<strong>in</strong>ierenden Klasse verwendet werden. Der Klassen-Implementierer kann bei der Erstellung e<strong>in</strong>erKlasse öffentliche, geschützte und private Merkmale <strong>die</strong>serKlasse benutzen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 51


Geschützte Schnittstelle (protected <strong>in</strong>terface) Menge der Merkmale, <strong>die</strong> für den Klassen-Erweiterer sichtbars<strong>in</strong>d. E<strong>in</strong> geschütztes Merkmal (protected member) darf nur <strong>in</strong> derdef<strong>in</strong>ierenden Klasse selbst und <strong>in</strong> Unterklassen <strong>die</strong>ser Klasseverwendet werden. Der Klassen-Erweiterer kann bei der Erstellung e<strong>in</strong>erUnterklasse öffentliche und geschützte Merkmale ihrerOberklasse(n) und öffentliche, geschützte und privateMerkmale der Unterklasse benutzen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 52


Je nach Modell haben Assoziationen unterschiedlicheInterpretationen Im Analysemodell (während der Analyse) <strong>in</strong>terpretieren wirAssoziationen als Beziehungen zwischen Klassen:– E<strong>in</strong> Auftrag stammt von e<strong>in</strong>em e<strong>in</strong>zelnen Kunden– E<strong>in</strong> Kunde kann mehr als e<strong>in</strong>en Auftrag haben Im Spezifikationsmodell (während des Entwurfs) <strong>in</strong>terpretierenwir Assoziationen als Verantwortlichkeiten:– Die Klasse Kunde muss <strong>die</strong> Methode kreditwürdigkeit()bereitstellen, <strong>die</strong> von der Klasse Auftrag aufgerufen wird.– Die Klasse Auftrag muss e<strong>in</strong>e Methode getAuftragsposition()bereitstellen, <strong>die</strong> für e<strong>in</strong>en gegebenen Kunden <strong>die</strong> zum Auftrag gehörendenAuftragspositionen zurückgibt. Im Implementationsmodell (während der Implementation)<strong>in</strong>terpretieren wir Assoziationen als Variablen (Java:Instanzvariablen):– E<strong>in</strong> Auftrag hat e<strong>in</strong>e Instanzvariable Kunde.– E<strong>in</strong> Auftrag hat e<strong>in</strong>e Reihung von Instanzvariablen, <strong>die</strong> jeweils auf e<strong>in</strong>eAuftragsposition zeigen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 53


Je nach Modell haben Attribute unterschiedlicheInterpretationen Im Analysemodell (während der Analyse) <strong>in</strong>terpretieren wirAttribute als Eigenschaften e<strong>in</strong>er Klasse:– E<strong>in</strong> Kunde hat e<strong>in</strong>en Namen– E<strong>in</strong> Student hat e<strong>in</strong>e Matrikelnummer Im Spezifikationsmodell (während des Entwurfs)<strong>in</strong>terpretieren wir Attribute als Aufforderung, Methoden zudef<strong>in</strong>ieren, <strong>die</strong> das Attribut setzen oder lesen:– public Str<strong>in</strong>g getName() teilt den Namen des Kunden mit.– public void setName(Str<strong>in</strong>g S) setzt den Namen des Kunden. Im Implementationsmodell (während der Implementation)<strong>in</strong>terpretieren wir Attribute als Variablen (Java:Instanzvariablen):– E<strong>in</strong> Kunde hat e<strong>in</strong> Feld Name für se<strong>in</strong>en Namen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 54


E<strong>in</strong>schub: Was ist der Unterschied zwischenAssoziationen und Attributen? Attribute s<strong>in</strong>d Assoziationen sehr ähnlich. Im Analysemodell gibt es gar ke<strong>in</strong>en Unterschied. Attribute undAssoziationen s<strong>in</strong>d lediglich alternative Schreibweisen.Multiplizitäten lassen sich leichter mit Assoziationen ausdrücken,aber man kann auch Reihungen verwenden:– empfangsDatum[0..1]: Datum Im Spezifikationsmodell bezeichnen Attribute lokaleKlasseneigenschaften, während Assoziationen e<strong>in</strong>e Navigierbarkeitim Klassenmodell implizieren:– E<strong>in</strong>e Assoziation zwischen Auftrag und Kunde sagt, dass ich von derKlasse Auftrag zu der Klasse Kunde kommen kann. Im Implementationsmodell werden Attribute und Assoziationenunterschiedlich realisiert:– Attribute entsprechen Variablen mit Wertsemantik– Assoziationen entsprechen Variablen mit ReferenzsemantikCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 55


Je nach Modell hat Vererbung e<strong>in</strong>e unterschiedlicheBedeutung Im Analysemodell gilt:– Alles, was für <strong>die</strong> Oberklasse gilt, trifft auch auf <strong>die</strong> Unterklasse zu. Im Spezifikationsmodell gilt:– Die Schnittstelle der Unterklasse erbt <strong>die</strong> Schnittstelle der Oberklasse. Hier<strong>in</strong>teressiert uns <strong>die</strong> Spezifikationsvererbung (specification <strong>in</strong>heritance), auchSchnittstellenvererbung genannt. Die Vererbung im Implementationsmodell hängt stark davon ab, was<strong>die</strong> Programmiersprache an Vererbungskonzepten zu bieten hat, aberim allgeme<strong>in</strong>en gilt:– Die Unterklasse erbt alle Methoden und Felder der Oberklasse (<strong>in</strong>cl. ihrerImplementation) und kann geerbte Methoden überschreiben.Hier <strong>in</strong>teressiert uns <strong>die</strong> Implementationsvererbung (implementation <strong>in</strong>heritance).Beispiele für Spezifikations- und Implementationsvererbung:→ In den Vorlesungsblöcken "Polymorphismus" + "Entwurf durch Verträge"Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 56


Weitere <strong>UML</strong>-Diagrammarten Klassendiagramme beschreiben <strong>die</strong> statische Struktur e<strong>in</strong>es Systems,aber nicht se<strong>in</strong> funktionelles oder dynamisches Verhalten.Dafür gibt es <strong>in</strong> <strong>UML</strong> andere Diagrammarten. Funktionelles Verhalten:– E<strong>in</strong> Anwendungsfalldiagramm (use case diagram) beschreibt <strong>die</strong>Funktionalität des Systems (Beispiele für Funktionalität:Abschließen e<strong>in</strong>en Auftrags, Ausführen des Auftrags) Dynamisches Verhalten:– E<strong>in</strong> Sequenzdiagramm beschreibt das dynamische Verhaltenzwischen mehreren Objekten, und zwar <strong>die</strong> Reihenfolge vonNachrichten, <strong>die</strong> zwischen den Objekten ausgetauscht werden(Beispiele für dynamisches Verhalten: Interaktion zwischen Web-Browser und Web-Server über HTTP, allgeme<strong>in</strong>: jedes Protokoll)– E<strong>in</strong> Zustandsdiagramm beschreibt das dynamische Verhaltene<strong>in</strong>es Objekts (Beispiel: Verkaufsautomat, Stern).Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 57


Welche <strong>UML</strong>-Diagramme behandeln wir <strong>in</strong> Info <strong>II</strong>? In Info <strong>II</strong> behandeln wir vier <strong>UML</strong>-Diagrammarten:– Klassendiagramme: bereits gemacht– Anwendungsfalldiagramme: heute– Sequenzdiagramme und Zustandsdiagramme– im Vorlesungsblock "Ereignis-basierte Programmerierung"im Zusammenhang mit endlichen Automaten. <strong>UML</strong> kennt noch viele andere Diagrammarten– Kollaborationsdiagramme,– Aktivitätsdiagramme, ...– Verteilungsdiagramme...→ Hauptstudium (Software Eng<strong>in</strong>eer<strong>in</strong>g)Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 58


Anwendungsfall E<strong>in</strong> Anwendungsfall beschreibt e<strong>in</strong>e Funktion des Systemsals e<strong>in</strong>e Folge von Ereignissen, mit e<strong>in</strong>em sichtbaren Resultfür den Benutzer.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 59


Warum brauchen wir Anwendungsfälle?Was ist das hier?Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 60


Modellieren wir doch mal das Problem alsKlassendiagrammName ?Attribut 1 ?Attribut 2 ?Operation 1 ?Operation 2 ?Operation 3 ?Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 61


Ergebnis unserer Analyse der AnwendungsdomäneKisteKapazität: IntGewicht: IntÖffnen()Schließen()Tragen()Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 62


Leider benutzen wir <strong>die</strong> Klasse ganz anders! 5/4/2004Stuhl KisteKapazität: IntGewicht: IntÖffnen()Schliessen()Schließen()Tragen()Draufsetzen()Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 63


Fragen Warum haben wir das D<strong>in</strong>g als “Kiste” modelliert? Warum haben wir es nicht als Stuhl modelliert? Was machen wir, wenn Draufsetzen() <strong>die</strong> am meistenbenutzte Operation ist? Wie können wir solche Modellierungsfehler verh<strong>in</strong>dern?⇒ Wir fangen mit Anwendungsfällen anCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 64


Organisatorisches: Interaktive Lehre: Ja oder Ne<strong>in</strong>?Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 65


Evaluierung der Interaktiven ExperimentesCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 66


Fragen 5/4/2004 Warum haben wir das D<strong>in</strong>g als “Kiste” modelliert? Warum haben wir es nicht als Stuhl modelliert? Was machen wir, wenn Draufsetzen() <strong>die</strong> am meistenbenutzte Operation ist? Wie können wir solche Modellierungsfehler verh<strong>in</strong>dern?⇒ Wir fangen mit Anwendungsfällen anCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 67


Anwendungsfall E<strong>in</strong> Anwendungsfall beschreibt e<strong>in</strong>e Funktion des Systems als e<strong>in</strong>eFolge von Ereignissen, mit e<strong>in</strong>em sichtbaren Result für den Benutzer. Def<strong>in</strong>ition Anwendungsfall (use case): E<strong>in</strong>e Folge von Schritten(sequence of events), <strong>die</strong> <strong>die</strong> Interaktion e<strong>in</strong>es Benutzers mit e<strong>in</strong>emSystem beschreibt. E<strong>in</strong> Anwendungsfall besteht aus m<strong>in</strong>destens 3 Teilen:– Name– Akteure– Ereignisfolge– E<strong>in</strong> vollständig formulierter Anwendungsfall hat noch 3 weitere Teile:E<strong>in</strong>gangsbed<strong>in</strong>gung, Ausgangsbed<strong>in</strong>gung, Spezielle Anforderungen.→ Vorlesungsblock "Entwurf durch Verträge" Wir beschreiben Anwendungsfälle anhand e<strong>in</strong>es BeispielsCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 68


Akteur Def<strong>in</strong>ition Akteur (actor): Die von e<strong>in</strong>em Benutzer <strong>in</strong> Bezug aufdas System e<strong>in</strong>genommene Rolle. Beispiel: Kunde, Kassierer. Akteure werden <strong>in</strong> <strong>UML</strong>-Anwendungsfalldiagrammen alsStrichfigur gezeichnet.KundeCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 69


Modellierungsbeispiel mit e<strong>in</strong>em Anwendungsfall:Erstellung e<strong>in</strong>es abstrakten Szenarios Zunächst beschreiben wir <strong>in</strong> natürlicherSprache <strong>in</strong> e<strong>in</strong>em konkreten Szenario,wie das System benutzt wird: Aus dem konkreten Szenario machen wire<strong>in</strong> abstraktes Szenario, <strong>in</strong> dem wirkonkrete Namen (Joe, DVD,…) durchKlassen (Kunde, Artikel, …) ersetzen:Beispiel: Joe durchstöbert denQuelle-Katalog und legt zweiDVDs <strong>in</strong> se<strong>in</strong>en E<strong>in</strong>kaufskorb.Zum Zahlen gibt er se<strong>in</strong>eMastercard-Kreditkartennummer an. Erwählt Normalversand aus undklickt OK. Das System checkt<strong>die</strong> Kreditkarte, dann bestätigt esden Verkauf mit e<strong>in</strong>er E-Mail anjoe@mac.com.Beispiel: Der Kunde durchstöberte<strong>in</strong>en Katalog und legt <strong>die</strong> ausgewähltenArtikel <strong>in</strong> se<strong>in</strong>en E<strong>in</strong>kaufskorb.Zum Zahlen gibt er se<strong>in</strong>eVersandart und Kreditkarten<strong>in</strong>formationan und bestätigt se<strong>in</strong>en Kauf. DasSystem autorisiert den Verkauf übere<strong>in</strong>e Kreditkarte und bestätigt denVerkauf mit e<strong>in</strong>er Quittung und e<strong>in</strong>erE-Mail an <strong>die</strong> E-Mail-Addresse ausder Versand<strong>in</strong>formation.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 70


Vom abstrakten Szenario zum AnwendungsfallWir machen aus dem abstrakten Szenario e<strong>in</strong>en Anwendungsfall"E<strong>in</strong>kauf e<strong>in</strong>es Artikels", <strong>in</strong>dem wir <strong>die</strong> Komponenten auflisten:1. Name: E<strong>in</strong>kauf e<strong>in</strong>es Artikels2. Akteur: Kunde.3. Ereignisfolge:1. Der Kunde stöbert durch den Katalog2. Der Kunde wählt e<strong>in</strong>en Artikel zum Kauf aus.3. Der Kunde geht zur Kasse.4. Der Kunde gibt se<strong>in</strong>e Versand-Information an(Adresse, Express- oder Normalversand)5. Der Kunde gibt Kreditkartendaten an.6. Das System autorisiert den Verkauf7. Das System bestätigt den Verkauf sofort.8. Das System sendet e<strong>in</strong>e Bestätigung per E-Mail an den KundenCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 71


Darstellung <strong>in</strong> e<strong>in</strong>em <strong>UML</strong>-AnwendungsfalldiagrammKommunikations-BeziehungKundeE<strong>in</strong>kauf e<strong>in</strong>esArtikels E<strong>in</strong>e Beziehung zwischen dem Akteur "Kunde" und demAnwendungsfall "E<strong>in</strong>kauf e<strong>in</strong>es Artikels" wird durch e<strong>in</strong>e L<strong>in</strong>ie(allgeme<strong>in</strong> Beziehung genannt) beschrieben.– In <strong>die</strong>sem Fall nennen wir sie Kommunikations-Beziehung Anwendungsfälle können auch Beziehungen zu anderenAnwendungsfällen haben.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 72


Beziehungen zwischen Anwendungsfällen Neben der Kommunikations-Beziehung zwischen Akteurenund Anwendungsfällen gibt es auch Beziehungen zwischenAnwendungsfällen: Enthält-Beziehung ():– E<strong>in</strong>e bestimmte Funktionalität tritt <strong>in</strong> mehreren Anwendungsfällenauf.– Dann kann man sie als separaten Anwendungsfall"herausfaktorisieren" (funktionale Dekomposition). Erweitert-Beziehung ():Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 73


Enthält-Beziehungen zwischen AnwendungsfällenInteraktiveHilfeE<strong>in</strong>kauf e<strong>in</strong>esArtikelsKundeKatalogstöbernCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 74


Beispiel für Funktionale DekompositionKatalog stöbernArtikel auswählenArtikelkaufenKundeVersand<strong>in</strong>formationangebenKreditkartendatenangebenCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 75


Funktionale Dekomposition von "Artikel bestätigen"Kredit bestätigenArtikelbestätigenBestätigung perE-Mail sendenVerkäuferCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 76


Wann wende ich <strong>die</strong> Enthält-Beziehung an? Problem: Die Funktionalität A <strong>in</strong> der ursprünglichen Problembeschreibungsoll um e<strong>in</strong>e andere, bereits vorhandene Funktionalität B erweitert werden.Die Funktionalität B kann <strong>in</strong> mehr als e<strong>in</strong>em Anwendungsfall auftreten. Lösung: E<strong>in</strong>e -Beziehung von Anwendungsfall A zuAnwendungsfall B. Beispiel: Der Anwendungsfall “MeldeNotfall” beschreibt <strong>die</strong> Folge vonSchritten bei der Abwicklung e<strong>in</strong>es Notfalls.Für e<strong>in</strong> bestimmtes Szenario ("Der Benutzer ist e<strong>in</strong> Anfänger") kann der”Hilfe"-Anwendungsfall benutzt werden.AussenbeamterHilfeMeldeNotfallCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 77


Heuristiken für <strong>die</strong> Modellierung mit Anwendungsfällen Während der Ausarbeitung von Anwendungsfällen ist es ofts<strong>in</strong>nvoll, komplizierte Anwendungsfälle <strong>in</strong> kle<strong>in</strong>ereAnwendungsfälle aufzuteilen ("Divide et impera").– Die Aufteilung e<strong>in</strong>es komplexen Anwendungsfalles <strong>in</strong> kle<strong>in</strong>ereAnwendungsfälle (mit Hilfe der -Beziehung) nennen wirfunktionale Dekomposition. Wie f<strong>in</strong>det man <strong>die</strong> kle<strong>in</strong>eren Anwendungsfälle?– E<strong>in</strong> guter Ausgangspunkt für <strong>die</strong> kle<strong>in</strong>eren Anwendungsfälle ist <strong>die</strong>Ereignisfolge des komplexen Anwendungsfalles. Was ist, wenn e<strong>in</strong> Anwendungsfall viele Varianten hat?– Unterteile ihn <strong>in</strong> e<strong>in</strong>en normalen Anwendungsfall und e<strong>in</strong>en odermehrere erweiternde Anwendungsfälle (mit ).– In der ersten Entwicklungsphase (Projektphase 1) implementiere den normalenAnwendungsfall.– Implementiere <strong>die</strong> erweiternden Anwendungsfälle <strong>in</strong> Phase 2, Phase 3,….Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 78


Erweitert- Beziehung zwischen AnwendungsfällenE<strong>in</strong>kauf e<strong>in</strong>esArtikelsInteraktiveHilfeKundeKatalogstöbernE<strong>in</strong>kauf, wennKunde ke<strong>in</strong>Geld hatCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 79


Wie f<strong>in</strong>de ich <strong>die</strong> "richtigen" Objekte? Wir sagen: Objekt-Orientierung ist gut Wir haben gesehen:– Wenn man <strong>die</strong> Analyse naiv mit der Objekt-Identifizierung beg<strong>in</strong>nt, kannman leicht <strong>die</strong> falschen Objekte f<strong>in</strong>den, was zu e<strong>in</strong>em falschen System führt("GIGO: garbage <strong>in</strong>, garbage out") Wir haben deshalb auch gesagt:– E<strong>in</strong>e gute Modellierung fängt mit der Identifizierung der Funktionen an, <strong>die</strong>das <strong>Informatik</strong>-System bieten soll. Wenn wir mit der Modellierung der Funktionalität anfangen sollen,wie f<strong>in</strong>den wir dann Objekte und Klassen? Def<strong>in</strong>ition Partizipierende Objekte:– Objekte oder Klassen, <strong>die</strong> an e<strong>in</strong>em Anwendungsfall teilnehmen.– Partizipierende Objekte f<strong>in</strong>det man, <strong>in</strong>dem man sich Ereignisfolgen genaueranschaut.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 82


Wie f<strong>in</strong>de ich teilnhmende Objekte/Klassen? Verwendung von vielen verschiedenen Wissensquellen:– Interviews mit Kunden und Experten, um <strong>die</strong> Abstraktionen derAnwendungsdomäne zu identifizieren– Entwurfsmuster, um Abstraktionen <strong>in</strong> der Lösungsdomäne zu identifizieren– Allgeme<strong>in</strong>es Wissen und Intuition Formulierung von Szenarios (<strong>in</strong> natürlicher Sprache):– Beschreibung der konkreten Benutzung des Systems. Formulierung von Anwendungsfällen (natürliche Sprache und <strong>UML</strong>):– Beschreibung der Funktionen mit Akteuren und Ereignisfolgen Syntaktische Untersuchung von Substantiven, Verben und Attributen:– In der Problembeschreibung (oft nicht machbar, da zu umfassend)– In den Ereignisfolgen der Anwendungsfälle (sehr gut machbar).⇒ textuelle Analyse nach AbbotCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 83


Erzeugung e<strong>in</strong>es Klassendiagramm aus e<strong>in</strong>em AnwendungsfallKundeLaden ?betreten() betritt()TochteraltergeeignetVideospiel*Spielzeugpreiskaufen()BrettspielEreignisfolge e<strong>in</strong>es Anwendungsfalls: Der Kunde Joe Smith betritt denLaden um e<strong>in</strong> Spielzeug zu kaufen.Es soll e<strong>in</strong> Spielzeug se<strong>in</strong>, dassse<strong>in</strong>er Tochter gefallen muss undweniger als 50 DM kostet. Erprobiert e<strong>in</strong> Videospiel aus, dasaus e<strong>in</strong>em Handschuh und e<strong>in</strong>emKopfbildschirm besteht. Es gefälltihm.E<strong>in</strong>e Hilfskraft berät ihn. DieEignung des Spiels hängt davon ab,wie alt das K<strong>in</strong>d ist. Joe's Tocherist erst 3 Jahre ist. DieHilfskraft empfiehlt e<strong>in</strong>e andereArt von Spielzeug, nämlich dasBrettspiel "Mensch ärgere Dichnicht".Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 84


Substantiv-Verb AnalyseNach dem Erf<strong>in</strong>der auch Abbotts Technique genanntBeispiel"Joe Smith""Spielzeug""3 Jahre alt""betreten", "Hilfe suchen""Hängt ab von….""ist e<strong>in</strong>..." ,"entweder...oder","Art von…""hat e<strong>in</strong>", "gehört zu""muss…se<strong>in</strong>", "ist weniger …als"Satz-Konstruktkonkrete Person, D<strong>in</strong>gSubstantivAdjektivallgeme<strong>in</strong>es Verb<strong>in</strong>transitives VerbKlassifizierungbesitzanzeigendes VerbBed<strong>in</strong>gung<strong>UML</strong>-KomponenteObjektKlasseAttributOperationOperation (Ereignis)VererbungAggregationE<strong>in</strong>schränkungCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 85


Reihenfolge bei der Modellierung1. Zunächst e<strong>in</strong>mal formulieren wir e<strong>in</strong>ige Szenarien, möglichst mitHilfe des Kunden.2. Dann extrahieren wir <strong>die</strong> Anwendungsfälle aus den Szenarien,möglichst mit Experten aus der Anwendungsdomäne3. Dann machen wir e<strong>in</strong>e Analyse der Ereignisfolgen derAnwendungsfälle, z.B. mit Hilfe von Abbott's Textueller Analyse.4. Dann erst erzeugen wir Klassendiagramme.Dies be<strong>in</strong>haltet <strong>die</strong> folgenden Schritte:4.1. Klassen f<strong>in</strong>den (textuelle Analyse, Domänenexperten).4.2. Attribute und Operationen f<strong>in</strong>den(manchmal allerd<strong>in</strong>gs auch, bevor <strong>die</strong> Klassen identifizierts<strong>in</strong>d!)4.3. Assoziationen zwischen Klassen f<strong>in</strong>den4.4. Multiplizitäten bestimmen4.5. Rollen bestimmen4.6. E<strong>in</strong>schränkungen bestimmenCopyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 86


Zusammenfassung der wichtigsten Konzepte Zentraler Bestandteil e<strong>in</strong>es <strong>Informatik</strong>-Systems ist dessen Beschreibung Wir verwenden zwei verschiedene Beschreibungsformen:– Analyse- und Entwurfsebene: Modellierungssprache (<strong>in</strong> Info <strong>II</strong>: <strong>UML</strong>)– Notationen: Klassendiagramme, Anwendungsfälle, Sequenzdiagramme,Zustandsdiagramme.– Implementationsebene: Programmiersprache (<strong>in</strong> Info <strong>II</strong>: Java) Modelle: Analyse-, Spezifikations- und Implementationsmodell– Modelle <strong>in</strong> <strong>UML</strong> s<strong>in</strong>d e<strong>in</strong>facher zu kommunizieren als Code Unterschiedliche Benutzer von Modellen: Kunde, Experte, Analytiker,Entwerfer Implementierer– System-Entwerfer, Klassen-Entwerfer, Klassen-Benutzer, Klassen-Implementierer,Klassen-Erweiterer E<strong>in</strong>e gute Modellierung beg<strong>in</strong>nt mit Anwendungsfällen dann identifiziertman <strong>die</strong> Klassen:– Fängt man mit Klassendiagrammen an, f<strong>in</strong>det man eventuell <strong>die</strong> falschen Klassen.Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong>: TUM Sommersemester 2004 87

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!