UML – Eine kurze Einführung - DBIS
Transcrição
UML – Eine kurze Einführung - DBIS
UML – Eine kurze Einführung Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Allgemeine Grundlagen Java – Ein erster Überblick Vererbung und Polymorphismus Objekte und Klassen Klassen, Objekte und Methoden in Java String-Klasse Ausnahmebehandlung Wrapper-Klassen Pakete und Javadoc UML – Eine kurze Einführung Objektorientierung Spezielle Themen Generische Programmierung Java Collection-Framework Streams Unit-Tests Entwurfsmuster - Eine Einführung GUI-Programmierung Java Virtual Machine Ausblick Programmiermethodik - Objektorientierung 2 Modell und Diagramm • Ein Modell stellt Abstraktion eines Realitätsausschnitts dar. Um Informationen verständlicher darzustellen Analog zum Erstellen von Bauplänen von Gebäuden Um essentielle Systemaspekte aufzuzeigen Zur Kommunikation Mit Projektmitarbeitern Mit Kunden Um komplexe Architekturen darstellen zu können • Ein Diagramm ist die grafische Repräsentation eines Modells. Sicht Programmiermethodik - Objektorientierung Modell Sicht Realitätsausschnitt 3 Unified Modeling Language (UML) • Die Unified Modeling Language (UML) ist eine standardisierte ausdruckstarke Modellierungssprache. • Mit Hilfe der UML können Softwaresysteme besser entworfen, analysiert und dokumentiert werden. • Begriff Unified bedeutet Unterstützung des gesamten Entwicklungsprozesses. Unabhängigkeit von Entwicklungswerkzeugen, sowie Programmiersprachen oder auch Anwendungsbereichen. • Die UML ist aber nicht ein Allheilmittel und vollständig, ein vollständiger Ersatz für eine Textbeschreibung, eine Methode oder Vorgehensmodell. Programmiermethodik - Objektorientierung 4 Diagrammarten (1) • Etliche unterschiedliche Diagrammarten • Klassendiagramm (in dieser Vorlesung) Beschreibt den strukturellen Aspekt (Klassen, Interfaces, Beziehungen). • Sequenzdiagramm (in der Vorlesung über Entwurfsmuster) Beschreibt komplexe Interaktionen zwischen Objekten in bestimmten Rollen. Beschreibt die zeitliche Abfolge dieser Interaktionen. • viele mehr (z.B. Business Prozesse, Use Case-Diagramme, etc.) Programmiermethodik - Objektorientierung 5 Diagrammarten (2) Grafik übernommen von http://de.wikipedia.org/wiki/Unified_Modeling_Language Programmiermethodik - Objektorientierung 6 Notation für Klassen (Übersicht) Sprachkonzept Klasse Klasse mit Abschnitten Notation Name Name Attribut1 Attribut2 Operation1 Operation2 Programmiermethodik - Objektorientierung 7 Klassen (Attribute) • Sichtbarkeit für Attribute und Operationen + = public # = protected - = private ~ = default • Instanzattribute oder Klassenattribute Klassenattribute werden unterstrichen • Zusätzliche Eigenschaften angeben <<readOnly>> <<ordered>> <<unique>> <<redefines <Operationsname>>> Programmiermethodik - Objektorientierung 8 Klassen (Multiplizität) • Multiplizität von Attributen Spezifiziert wie viele Werte ein Attribut aufnehmen kann. Attribut:Typ[a..b] a..b mindestens a .. höchstens b a und b sind natürliche Zahlen * statt b bedeutet beliebig viele Beispiele 1..1 0..1 0..* 1..* genau ein (entspricht 1) Null oder ein beliebig viele (entspricht *) beliebig viele aber zumindest ein Programmiermethodik - Objektorientierung 9 Beispiele Alle Attribute sind privat Stack -max_si ze : int -top : int -stackArr : int [0..*] <<constructor>>+Stack( max_size : int ) +push( element : int ) +pop() : int +isEmpty() : boolean +length() : i nt U ser User kann mehrere Passwörter haben -name : Stri ng [1] -key : Password [1..*] Alle Operationen sind öffentlich Bereiche (hier Operationen) können auch leer bleiben <<enumeration>> C o lo r RED BLUE GREEN BLACK Datentypen oder Enumerations Programmiermethodik - Objektorientierung 10 Klassen (Operationen) • Obligate Angabe einer (eventuell leeren) Parameterliste für jede Operation. • Für jeden Parameter muss zumindest der Name und sein Typ angegeben werden (auch Multiplizität). • Auch Rückgabetyp möglich (wenn nichts angegeben – void). • Unterstreichen kennzeichnet Klassenoperationen. • Sichtbarkeit wie bei Attributen • Zusätzliche Eigenschaften <<abstract>> (oder kursiv geschrieben) <<leaf>> (wenn final) <<raisedException>> (wie throws) <<enumeration>> <<constructor>> • Hinweise auf Algorithmen können in einer Notiz angefügt werden. Programmiermethodik - Objektorientierung 11 Assoziation • Grundform (binäre Assoziation) A B • Zusätzliche Angaben Benennung In der Mitte der Kante (Anzeigen der Leserichtung durch Pfeil möglich) Rollen (an den Enden der Assoziation, spezifische Funktion angeben) Multiplizitäten (an den Enden, wie bei Attributen) Angabe von Eigenschaften {ordered} {unique} … Navigationsangaben Zulässige Navigationsrichtung (durch Pfeil) Keine Navigation erlaubt (durch X) Programmiermethodik - Objektorientierung 12 Beispiele has U ser has U ser Passwo rd -key Passwo rd * U ser -owner has 1 -key Reflexive Assoziation Passwo rd * So rted I ntL ist <<constructor>>+SortedIntLi st() +insert( element : i nt ) +print() Node * -next -first -data : int 0..1 <<constructor>>+Node( data : i nt ) 0..1 * Programmiermethodik - Objektorientierung 13 Beispiel (Java Umsetzung – Grundformen) U ser -owner 1 has -key Passwo rd * U ser has -key Passwo rd * public class User{ private Password[] key; … } public class User{ private Password[] key; … } public class Password{ private User owner … } public class Password{ … … } Programmiermethodik - Objektorientierung 14 Beispiel (Java Umsetzung) B o rr o wer -currentBorrower 0..1 public class Borrower{ private Book[] borrowedBooks; private int numBooks; ... public Borrower(){ numBooks = 0; borrowedBooks = new Book[5]; } borrows -borrowedBooks Book 5 public class Book{ private Borrower currentBorrower; ... public void setBorrower(Borrower bw){ currentBorrower = bw; } } public void borrowBook(Book b){ ... borrowedBooks[numBooks] = b; numBooks++; b.setBorrower( this ); ... } } Programmiermethodik - Objektorientierung 15 Aggregation • Ist eine spezielle Assoziation (Teile-Ganzes-Beziehung). • Komposition ist eine speziellere (strengere) Form der Aggregation mit folgenden Einschränkungen. Ein Teil darf Kompositionsteil höchstens eines Ganzen sein. Multiplizität 1 bedeutet, dass das Teil nur solange existiert wie sein Ganzes. • Beispiele has C o mp an y 1 Aggregation In vo ice li n e item Komposition 1..* has In vo ice D ivisi on 1 1..* Rechnungsposition existiert nur mit der Rechnung Programmiermethodik - Objektorientierung 16 Beispiel (Java Umsetzung) C ar has -wheels W h eel 4 public class Car { private Wheel[] wheels; ... public Car(Wheel r1, Wheel r2, … ) { wheels = new Wheel[4]; wheels[0] = r1; wheels[1] = r2; … } } Programmiermethodik - Objektorientierung C ar has -fixedWheels W h eel 4 public class Car { private Wheel[] fixedWheels; ... public Car(){ fixedWheels = new Wheel[4]; fixedWheels [0] = new Wheel(); fixedWheels [1] = new Wheel(); … } ... } 17 Vererbung, Schnittstellen Programmiermethodik - Objektorientierung 18 Programmiermethodik - Objektorientierung 19