Objektorientierte Modellierung mit UML Gerhard Röhner 18. März 2006.

Post on 06-Apr-2015

110 views 1 download

Transcript of Objektorientierte Modellierung mit UML Gerhard Röhner 18. März 2006.

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