2. Objektorientierter Entwurf

Ähnliche Dokumente
Objektorientiertes Software-Engineering

Übungen Softwaretechnik I

Objektorientierte Modellierung (1)

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Funktions- versus Objektorientierter Entwurf

Objektorientierte Programmiersprachen

Java Einführung Objektorientierte Grundkonzepte

Informatik für Ökonomen II: Modellierung von Informatiksystemen

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Requirements Engineering I

Grundlagen der Informatik für Ingenieure I

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Muster in der Software Technik. Grundlegende Konzepte der Software Entwicklung und Objekt Orientierung

Modellierung Zusammenfassung WS2000

Einführung in die Programmierung

Softwaretechnik (Allgemeine Informatik) Überblick

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Objektorientierte Softwareentwicklung

Kurzeinführung in UML

Vorlesung Datenstrukturen

Rückblick: Entity-Relationship-Modell

Modul INFG Grundlagen der Wirtschaftsinformatik

UML. Weiteres Vorgehen im Projekt

4. Übung zu Software Engineering

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte Programmierung OOP

Kapitel 6. Vererbung

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

Unified Modeling Language (UML)

Universität Karlsruhe (TH)

Informatik I - Programmierung Globalübung Objektorientierung. Objektorientierung Konzepte & Notationen

Methodische objektorientierte Softwareentwicklung

Wegweisende Arbeiten in der Softwaretechnik Peter P. Chen Entity Relationship Modellierung

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Grundlagen der UML-Modellierung. Modellierung. Elena Paslaru Seminar Praktische Modellierung SS

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Erweiterte Entity-Relationship- und UML-Modellierung. Copyright 2004 Shamkant Ramez Elmasri B. Navathe and Shamkant Navathe.

OOD. Objektorientiertes Design. Peter Coad und Edward Yourdon. Prentice Hall Verlag

Kapitel 6. Vererbung

Analyse und Modellierung von Informationssystemen

Kapitel 6. Vererbung

Einführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren

SWE5 Slide 1. Software-Engineering. Vorlesung 5 vom Sebastian Iwanowski FH Wedel

Modellieren mit der Unified Modeling Language: Klassen- und Objektdiagramme. 11. November 2014

Oracle JDeveloper 10 g

Java, OO und UML Fortsetzung

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung "Software-Engineering"

Präsentation Interfaces

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Teil II: OOP und JAVA (Vorlesung 9)

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

J.2 Objektorientiertes Modellieren mit UML

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Einführung in die Informatik

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Aufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt.

Grundlagen des Software Engineering

1.3 Charakteristische Eigenschaften von objektorientierten Systemen

Unified Modeling Language (UML )

Objektorientierte Programmierung Teil 1: Einführung

Von UML 1.x nach UML 2.0

Media Engineering. Objektorientierte Modellierung. R. Weller University of Bremen, Germany cgvr.cs.uni-bremen.de

Die abstrakte Syntax der Unified Modeling Language

16 Architekturentwurf Einführung und Überblick

Kapitel 3: Statische Analyse mit FUSION

Design mit CASE-Tools

3. Konzepte der objektorientierten Programmierung

Objektorientierte Analyse (OOA) Inhaltsübersicht

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Aufbau betrieblicher Informationssyteme

Objektorientierte Analyse (OOA) OOA-Pattern

Inhaltsverzeichnis. Teil I Einführung 13. Teil II Struktur 41. Vorwort 11

Techniken der Projektentwicklung

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

SWE1 / Übung 9 ( )

Java Vererbung. Inhalt

Beziehungen zwischen Objekten

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Inhalte. Datenmodelle und Datenmodellierung. Datenmodelle. Datenmodellierung. Datenmodellierung: Kontext: Informationssysteme

Datenmodellierung! Informatik II: Modellierung Prof. Dr. Martin Glinz. Kapitel 3. Institut für Informatik!

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD

Konzeptueller Entwurf

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Einführung in die Informatik

Theorie zu Übung 8 Implementierung in Java

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Software Engineering

Knasmüller.book Seite vii Mittwoch, 28. März : vii. Inhaltsverzeichnis

Software-Engineering

Modellierungstechniken im Softwaredesign. Praxisprojekt [ai] Control WS 2011/2012 Lara Baschour und Anne Heiting

Kapitel 2: Der Software-Entwicklungsprozess

OO Softwareentwicklung

Objektorientierung II

Algorithmen und Programmierung II

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

Transkript:

2. Objektorientierter Entwurf 2.1 Grundlagen der Objektorientierung Ein Vorgehen heißt objektorientiert, wenn es sich bei der Modellbildung an den Gegenständen der Realität orientiert die Modelle auf der Grundlage von Information Hiding und Datenabstraktion aufbaut Vererbung und Polymorphismus unterstützt. Objekt (object) Ein individuell erkennbares, von anderen Objekten eindeutig unterscheidbares Element der Realität. Gleichartige Objekte werden durch Klassen modelliert. Klasse (class) eine eindeutig benannte Einheit, welche eine Menge gleichartiger Objekte beschreibt. Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 1

Zur Geschichte: Simula 1967 Vererbung & Polymorphismus Parnas 1972 abstrakte Datentypen Information Hiding & Datenabstraktion Ada Modula-2 Smalltalk Objektorientierung Entity- Relationship- Modell, 1976 semantische Datenmodelle OODB Objektmodelle Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 2

2.2 Klassen- und Objektmodelle Eine Klasse beschreibt den Aufbau, die Bearbeitungsmöglichkeiten und das mögliche Verhalten von Objekten dieser Klasse. Eine Klassendefinition besteht aus Definition der Attribute der Klasse (lokale Merkmale) Definition der Beziehungen zu anderen Klassen Definition der Operationen, die auf Objekten der Klasse oder auf der Klasse selbst möglich sind Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 3

Klassen stehen in Beziehung zueinander: Assoziation: Die Objekte einer Klasse sind Merkmale von Objekten einer anderen Klasse. Gilt oft auch umgekehrt, d.h. Assoziationen sind häufig bidirektional Benutzung: Die Objekte einer Klasse benutzen Attribute oder Operationen einer anderen Klasse zur Bereitstellung ihrer eigenen Attribute und Operationen Vererbung: Eine Klasse ist Unterklasse einer anderen Klasse. Sie «erbt» alle Attribute und Operationen dieser Klasse, d.h. alle Objekte der Klasse verfügen über diese, ohne dass sie in der Klasse lokal definiert worden wären Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 4

Beispiel: Mitarbeiter im Stundenlohn tundensatz itarbeiter tamm Nr ame orname instellen ntlassen ndividuallohn ändern Arbeitszeit erfassen Lohn zahlen ezahlt mit ugunsten von..*..* itarbeiter im onatslohn Überzeitsaldo Ferienguthaben ohn zahlen 0..* 1..* ohnahlungsauftrag Erteilen Stornieren Position Stufe von eschäftigt in eschäftigt eingestuft in lasse von 1 bteilung ame itz 1 1 ierarchie ierarchiestufe erienanspruch ohnklasse r rundlohn KLASSE Mitarbeiter im Monatslohn UNTERKLASSE von Mitarbeiter ATTRIBUTE (Name, Kardinalität, Wertebereich) Leistungslohnanteil (1,1) CHF Überzeitsaldo (1,1) Stunden Ferienguthaben (1,1) Tage... BEZIEHUNGEN (Name, Kardinalität, mit Klasse) eingestuft in (1,1) Lohnklasse OPERATIONEN Lohn zahlen Voraussetzung: Mitarbeiter ist aktiv Ergebniszusicherung: Zahlungsauftrag zugunsten des Mitarbeiters ist erteilt mit Grundlohn aus Lohnklasse und Leistungslohnanteil BENUTZT (Klasse.Operation) Zahlungsauftrag.Erteilen Klassenmodell Klassendefinition Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 5

Klassenmodelle bestehen aus einer Menge von Klassen und ihren wechselseitigen Beziehungen. Die Übersicht über die vorhandenen Klassen und ihre Beziehungen wird in der Regel mit graphischen Notationen modelliert, während für die Klassendefinitionen selbst strukturierter Text verwendet wird. Objektmodelle können als Alternative oder als Ergänzung zu Klassenmodellen verwendet werden. In beiden Fällen werden keine konkreten Objekte (d.h. solche mit bekannter Identität und bekannten Attributwerten) modelliert, sondern abstrakte Objekte, die als Muster bzw. als Repräsentant für konkrete Objekte stehen Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 6

2.3 Vererbung und Polymorphismus Vererbung Relation, welche eine Menge von Klassen in eine Hierarchie von Ober- und Unterklassen gliedert, so dass jede Unterklasse neben ihren eigenen Eigenschaften auch alle Eigenschaften aller Oberklassen hat, sofern sie diese nicht explizit abändert oder ausschließt. Die Eigenschaften einer Klasse sind ihre Attribute, Beziehungen und Operationen. Beispiel: Vererbungshierarchie von Anlagenelementen: Anlagenelement Anschluss Schalter Gerät Sammelschiene Leitungsabgang Abzweigpunkt Transformator Generator Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 7

Polymorphismus Möglichkeit, eine Operation gleichen Namens für Objekte verschiedener Klassen mit möglicherweise verschiedener Wirkung zu definieren. Wird eine solche Operation auf ein Objekt angewendet, so muss aus dem Kontext bestimmt werden, welche Operationsdefinition zu verwenden ist. Polymorphismus und Vererbung Wird eine Operation nur innerhalb einer Klassenhierarchie mehrfach definiert, so bietet die Vererbung eine einfache Möglichkeit zur Bestimmung der anzuwendenden Operationsdefinition: Sei A der Name einer Operation, welche auf ein Objekt x der Klasse K anzuwenden ist. Ausgehend von der Klasse K wird die Klassenhierarchie aufsteigend nach Definitionen für A durchsucht. Die erste gefundene Definition wird verwendet. Nutzen Programme werden durch Polymorphismus kürzer, flexibler und leichter erweiterbar. Häufig kann auf komplizierte Fallunterscheidungen verzichtet werden. Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 8

Beispiel: Zum Zeichnen der verschiedenen Symbole für Anlagenelemente in Anlagenschemata gibt es für jede der fünf untersten Klassen in obiger Klassenhierarchie eine eigene Operation Zeichne, welche das zugehörige Symbol erzeugt. Durch den Polymorphismus wird nun beispielsweise folgende Konstruktion möglich:... Anlagenelement [] bildsymbole; // Vektor mit verschiedenen Bildsymbolen... for (int index = 0; index<anzahlsymbole; index++) // Zeichne Symbole {bildsymbole[index].zeichne;}... Jedes Objekt des Vektors Bildsymbole entscheidet aufgrund seiner Klassenzugehörigkeit, welches die für sich passende Zeichne-Operation ist und wendet diese an. Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 9

Ad-hoc Verwendung von Vererbung und Polymorphismus Vererbung in primitiver Form: Modell- bzw. Codesteinbruch: Brauchbares nutzen, nicht Brauchbares umdefinieren, Fehlendes ergänzen Folge: Unerwünschte Seiteneffekte. Resultierende Software ist fehlerträchtig, schwierig zu verstehen und schwierig zu pflegen Beispiel: Klasse Quadrat mit Operationen Verschiebe, Skaliere, Drehe, Zeichne Von Quadrat wird neue Klasse Rechteck abgeleitet mit zusätzlichen Operationen SkaliereBreite und SkaliereHöhe -> Klasse Quadrat verliert die Eigenschaft, dass alle ihre Objekte Quadrate sind: jedes Objekt der Klasse Rechteck ist durch die Vererbung auch ein Objekt der Klasse Quadrat. Wehe dem Anwender, der sich darauf verlässt, dass Quadrate quadratisch sind... Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 10

Vererbung und Polymorphismus als Spezialisierungsabstraktion Vererbung und Polymorphismus nur zur Realisierung einer Spezialisierungsabstraktion verwenden: Jedes Objekt x einer Klasse S ist ein Spezialfall eines Objekts jeder Oberklasse von S. -> Keine Operation der Klasse S darf eine Invariante einer ihrer Oberklassen verletzen Invariante Eigenschaft eines Objekts, die durch die Anwendung beliebiger Operationen nicht verändert wird -> Möglichkeiten der Polymorphie eingeschränkt: geerbte Operation darf nur noch spezialisiert, aber nicht mehr beliebig abgeändert werden Ein großer Teil der gefährlichen Seiteneffekte der Vererbung wird so ausgeschlossen Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 11

Subtypen Auch bei Spezialisierung kann die Verwendung von Objekten einer Unterklasse an Stellen, wo Objekte einer ihrer Oberklassen verlangt sind, zu unvorhergesehenem Fehlverhalten führen. Vermeidung durch noch stärkere Beschränkung von Vererbung und Polymorphie: Subtypen: Eine Klasse S ist ein Subtyp einer Klasse K, wenn an jeder Stelle, wo ein Objekt der Klasse K verwendet wird, auch ein Objekt der Klasse S verwendet werden kann. Dies ist dann der Fall, wenn für jede geerbte Operation gilt Die Voraussetzungen der Operation werden höchstens abgeschwächt, aber nicht verstärkt Die Ergebniszusicherung der Operation wird höchstens verstärkt, aber nicht abgeschwächt keine Operation der Klasse S verletzt eine Invariante der Klasse K Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 12

Bedeutung von Vererbung und Polymorphismus Vereinfachung der Modelle (weniger Schreib- und Darstellungsaufwand) Wesentlich beschleunigte Software-Entwicklung, wenn vorhandene Klassenbibliotheken genutzt werden können Einfache Erweiterbarkeit bestehender Systeme Erleichterte Wiederverwendung und Anpassung bestehender Komponenten Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 13

Aber: Vererbung und Polymorphismus sind modell- und softwaretechnisch nur dann sauber, wenn sie als Spezialisierungsabstraktion eingesetzt werden Spezialisierung ist eine zusätzliche Dimension in der Modellierung und stellt erhöhte Anforderungen an das Denk- und Abstraktionsvermögen der Modellierer Überall, wo Implementierungen vererbt werden, bricht die Vererbung das Geheimnisprinzip Die Möglichkeit, mittels Polymorphismus Objektreferenzen an beliebige Stellen in einem System weiterzureichen und dort zu verwenden, bricht bei undisziplinierter Verwendung so gut wie alle Abstraktionsprinzipien, insbesondere das Prinzip der Benutzungshierarchie (Metapher der geschichteten virtuellen Maschinen) Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 14

2.4 Entwurfstechnik Vorhandenes nutzen Von vorhandenen Klassen neue Klassen so ableiten, dass diese das gestellte Problem lösen Ziel: möglichst viel vorhandene Software wiederverwenden und diese lediglich problemspezifisch anpassen Mittel: Klassenbibliotheken, Muster, Rahmen Klassenmodell aus Anforderungsspezifikation übernehmen und ergänzen/anpassen Wo nötig: Neues Klassenmodell erstellen Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 15

Erstellung neuer Klassenmodelle Gleiche Verfahren wie in objektorientierter Spezifikation Objektanalyse: Statische Struktur der "Realität" abbilden. Texte, Glossare, vorhandene Informationsstrukturen heranziehen Szenarienanalyse: Szenarien erstellen und im Rollenspiel durchspielen. Leistungsträger für die Systemreaktionen festlegen. Hilfsmittel: Interaktionsdiagramme, Klassenkarten, CRC-Analyse Vorhandene Klassenmodelle nutzen Black-Box-Verwendung: Nutzung vorhandener Operationen Nebenwirkungsfrei, Information Hiding-kompatibel, weniger flexibel White-Box-Verwendung: Nutzung durch Ableitung von Unterklassen Nebenwirkungen möglich, bricht Information Hiding, extrem flexibel Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 16

Problem des objektorientierten Entwerfens: Drei Abstraktionen beherrschen Delegation: Sich auf vorhandene Dienstleistungen abstützen Generalisierung: Gemeinsamkeiten im Dienstleistungsangebot verwandter Klassen in gemeinsame Oberklasse verlagern Komposition: Zusammengehörende Klassen zu Einheiten zusammenfassen Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 17

2.5 Repräsentation von Modellen Vielfalt von Modellen und Notationen, die in die Kategorie Objekt- und Klassenmodell fallen Zum Beispiel: Booch (1994), Coad und Yourdon (1991a, b), Jacobson et al. (1992), Rumbaugh et al. (1991), Wirfs-Brock et al. (1990) Seit etwa 1997 dominiert ein Quasi-Standard: Die Unified Modeling Language UML (Rumbaugh, Jacobson und Booch 1999, Oestereich 1998). Architektur und Entwurf von Software 2. Objektorientierter Entwurf 2001 by Martin Glinz 18