Post on 06-Apr-2015
Objektorientierte Modellierung mit UML
Gerhard Röhner18. März 2006
Objektorientierter Entwicklungsprozess
Smalltalk, Eiffel, TP 5.5, Delphi, Java Entwicklung der UML Entwicklung der OO-Methodik objektorientierte Methoden ganzheitliche Gegenstände bessere Abstraktionsmöglichkeiten methodische Durchgängigkeit evolutionäre Entwicklung
Durchgängige Modellrepräsentation
OOA – objektorientierte Analyse (Definition) OOD – objektorientiertes Design (Entwurf) OOP – objektorientierte Programmierung
(Implementierung)
Kunde
Name Anschrift Bonität
BonitätPrüfen()
type Kunde = class Name: String; StrasseNr: String; PLZOrt: String; Bonitaet: integer; procedure BonitaetPruefen; end;
Objektorientierte Analyse
Wünsche und Anforderungen der Auftraggebers an ein neues System ermitteln und beschreiben
fachliche Lösung des zu realisierenden Systems
keine Implementierungsaspekte Entwicklung des Fachkonzepts
Objektorientierter Entwurf
Realisierung des Fachkonzepts aus OOA auf einer Plattform
Effizienz und Standardisierung Realisierung der Drei-Schichten-Architektur
Drei-Schichten-Architektur
Objektorientierte Programmierung
Implementierung des OOD-Modells in einer objektorientierten Programmiersprache
Objekt
Element des Anwendungsbereichs Geheimnisprinzip Attribute Methoden Exemplar einer Klasse Objektidentität
Personal nummer: 1234 Name: Müller Gehalt: 5500
einstellen()
erhöheGehalt()
druckeAusweis()
UML-Darstellung
unterteiltes Rechteck Name im Singular zentriert, unterstrichen Attribute und Werte
Mitarbeiter 1
Personalnummer = 1234 Name = Müller Gehalt = 5500
Attribut
Datenbereich eines Objekts Name und Datentyp Wert legt Zustand des Objekts fest alle Objekte einer Klasse haben gleiche
Attribute Substantiv
Methode
Operation zum Manipulieren des Objekts Prozeduren Funktionen Konstruktoren alle Objekte einer Klasse haben gleiche
Methoden Verb oder Verb + Substantiv
Klasse
Abstraktion gleichartiger Objekte Beschreibung der Objekte Datentyp der Objekte
Stempelmetapher
UML-Darstellung der Klasse
unterteiltes Rechteck Name im Singular zentriert, nicht unterstrichen Attribute Methoden
Klasse
Attribute
Methoden()
Mitarbeiter
Personalnummer Name Gehalt
einstellen() erhöheGehalt() druckeAusweis()
Objekt-Klassen-Beziehung
R1
x1 = 5 y1 = 10 x2 = 100 y2 = 200
R2: Rechteck
x1 = 100 y1 = 50 x2 = 200 y2 = 100
Rechteck
x1 y1 x2 y2
zeigen() gibFlaeche()
Programmierung in Java
public class Mitarbeiter { private int Personalnummer; private String Name; private float Gehalt; public void einstellen() { } public void druckeAusweis() { } public void erhöheGehalt(float Betrag) { }}
Programmierung in Delphiunit UMitarbeiter;interface type Mitarbeiter = class private Personalnummer: integer; Name: String; Gehalt: real; public procedure einstellen; procedure druckeAusweis; procedure erhoeheGehalt(Betrag: real); end;implementation ...end.
Assoziation
Kennt-Beziehung Objektbeziehung ist Exemplar einer Assoziation Darstellung durch Strecken ungerichtet - gerichtet
Schueler
Nachname Vorname Geburtsdatum Führerschein
machePrüfung()
Auto
KFZ-Kennzeichen Kilometerstand Tankvolumen Kraftstoffverbrauch Kraftstoffmenge
tanken() fahren()
fährt
Kardinalität - Multiplizität
Kardinalität: 1, * Multiplizität: 0..3, 2..4, ... Optionalität: 0 – nicht 0
Kunde Kontobesitzt
1 0..3
Implementierung Assoziation
Operation Beispiel Allgemein
Herstellen einer Beziehung setAuto(einAuto) link
Abfragen einer Beziehung getAuto(): Auto getlink
Aufheben einer Beziehung removeAuto() unlink
Implementierung Assoziation
public class Schueler { private Auto dasAuto; ... public void setAuto(Auto einAuto) { dasAuto = einAuto; } public Auto getAuto() { return dasAuto; } public void removeAuto() { dasAuto = null; }}
Beispiel Assoziation
Aggregation
Ganzes Teilbesteht aus
Universität Fachbereichhat
Instituthat
Aggregation
hat-Beziehung (besteht aus, Teil-Ganzes) Raute für Behälterobjekt Implementierung als Feld, Liste oder Vektor
Ganzes Teilbesteht aus
Universität Fachbereichhat
Instituthat
Komposition
Spezialfall der Aggregation Teile sind existenzabhängig vom Ganzen
Ganzes
TeilAggregation
existenzabhängigesTeil
Komposition
Ordner Datei
enthält
enthältDokument
enthält
Generalisierung
Beziehung zwischen allgemeiner und spezieller Klasse
Klassenhierarchie abgeleitete Klasse hat
zusätzliche Attribute und Methoden
Darstellung durch Pfeil mit geschlossenem Dreieck
Ist-Beziehung
Person
Name Anschrift Geburtsdatum
druckeAdresse()
Angestellter
Personalnummer Gehalt Bank
überweiseGehalt()
Student
MatrikelNr Immatrikulationen
druckeAusweis()
Hilfskraft
Beschäftigungen
druckeArbeitszeiten()
Delegation
Liste
einfuegen() löschen() geben()
Keller
push() pop() top()
Liste
einfuegen() löschen() geben()
Keller
push() pop() top()
schlechte Modellierungmit Vererbung
gute Modellierungmit Delegation
Implementierung der Vererbung
Type Unterklasse = class(Oberklasse) // allgemein TAutoFormular = class(TForm) // Beispiel
In Java benutzt man das Schlüsselwort extends:
public class Unterklasse extends Oberklasse {} // allgemein public class Hilfskraft extends Student() // Beispiel
Klassendiagramm
Index für Datenbanktabelle
Sekundarstufe I
Sequenzdiagramm
Zustandsdiagramm
POP3-Protokoll
STAT liefert die Anzahl der verfügbaren E-Mails und deren Gesamtgröße LIST liefert eine nummerierte Liste der verfügbaren E-Mails samt GrößeRETR # holt E-Mail mit der Nummer #DELE # markiert die E-Mail mit der Nummer # zum LöschenNOOP No OperationRSET alle Löschmarkierungen werden aufgehobenQUIT Verbindung beenden und markierte E-Mails löschen
ER-Modellierung
Verhältnis ERM zu OO
Problembereiche Spiele Simulationen Anwendungen