2. Objektorientierung

Werbung
2. Objektorientierung
2.1 Objekte: Die Idee
Frage dich nicht, WAS das System macht:
frage, WORAN es etwas macht.
Bertrand Meyer 1988
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Komplexität beherrschbar machen
Zerlegung in Teilsysteme
(Verantwortungsbereiche)
Klare Schnittstellen zwischen Teilsystemen
(Protokolle)
Verschiedene Abstraktionsebenen
(Hierarchie)
Vorgefertigte Teile - Wiederverwendung
(Baukastenprinzip)
T echnische Universität Dresden
Prof. Hußmann
Seite 1
Softwaretechnologie
Verantwortungsbereiche
• Sachbearbeiter in einem Betrieb oder einer Behörde
–
–
–
–
–
Ist unter definierter Adresse/Telnr. erreichbar.
Hat genau definierten Zuständigkeitsbereich
Bearbeitet genau definierte Einzelaufgaben
Verfügt über spezielles Wissen bzw. spezifische Information
Bearbeitet komplexe Geschäftsvorfälle in Zusammenarbeit mit
anderen Sachbearbeitern
• “Software-Sachbearbeiter” = Objekte
Meine Verantwortung:
Kontoführung
T echnische Universität Dresden
Prof. Hußmann
Meine
Verantwortung:
Produktkatalog
Softwaretechnologie
2. Objektorientierung
2.1 Objekte: Die Idee
2.2 CRC-Karten
2.3 Objektorientierte Programmierung
T echnische Universität Dresden
Prof. Hußmann
Seite 2
Softwaretechnologie
Objektorientierung
Identität:
„DD-0X5A“
Zustand:
Normalbetrieb
Verhalten:
„gelbes Licht“
• Wie ist das Objekt bezeichnet?
• Wie verhält es sich zu seiner Umgebung?
• Welche Informationen sind „Privatsache“ des Objekts?
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Grundkonzepte der Objektorientierung
• Ein System besteht aus vielen Objekten.
• Ein Objekt hat ein definiertes Verhalten.
– Verhalten setzt sich zusammen aus einer Menge genau definierter
Operationen zur Erfüllung von Einzelaufgaben.
– Eine solche Operation wird beim Empfang einer Nachricht ausgeführt.
• Ein Objekt hat einen inneren Zustand.
– Der Zustand des Objekts ist Privatsache.
– Das Resultat einer Operation des Objekts (bei Empfang einer
Nachricht) hängt vom aktuellen Zustand des Objektes ab.
• Ein Objekt hat eine eindeutige Identität.
– Die Identität eines Objektes ist unabhängig von seinen anderen
Eigenschaften.
– Es können mehrere verschiedene Objekte mit identischem Verhalten
und identischem inneren Zustand im gleichen System existieren.
T echnische Universität Dresden
Prof. Hußmann
Seite 3
Softwaretechnologie
Beispiel: Ampel-Objekt
Objekt zur Repräsentation
einer Ampel
Ampel DD-0X5A
Zeittakt
Lichtsignale
• Verhalten des Ampel-Objekts:
– Reaktion auf Nachrichten wie ‚Zeittakt‘, ‚Fahrzeugsensor‘
• Zustand des Ampel-Objekts:
– Schaltphase, Restzeit, Betriebsmodus, ...
• Identität des Ampel-Objekts:
– Unabhängig vom Zustand
– Unterscheidbar von anderen Ampeln
(auch solchen im gleichen Zustand!)
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Beispiel: Termin-Objekt
Objekt zur Repräsentation
eines Termins
12. Abteilungsrunde
gibDatum
versendeEinladungen
Ergebnis:
Datum
• Verhalten des Termin-Objekts:
– Reaktion auf Nachrichten wie ‘gibDatum’, ‘versendeEinladungen’
• Zustand des Termin-Objekts:
– Datum, Ort, Teilnehmer, geplant/bestätigt
• Identität des Termin-Objekts:
– Unabhängig vom Zustand
T echnische Universität Dresden
Prof. Hußmann
Seite 4
Softwaretechnologie
Klasse und Objekt
Klasse:
„Ampel“
Polymorphie:
Ampeln mit
Sensorsteuerung
reagieren in
spezieller Weise
auf Zeittakt
Vererbung:
Sensorgesteuerte
Ampel
• Welcher Begriff beschreibt das Objekt?
• Welche Begriffshierarchie wird verwendet?
• Wie hängt das Verhalten des Objektes von der Hierarchie ab?
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Erweiterte Konzepte der Objektorientierung
• Ein Objekt gehört zu einer Klasse.
– Die Klasse schreibt das Verhaltensschema und die innere Struktur
ihrer Objekte vor.
• Klassen besitzen einen ‘Stammbaum’, in der Verhaltensschema
und innere Struktur durch Vererbung weitergegeben werden.
– Vererbung bedeutet Generalisierung einer Klasse zu einer
Oberklasse.
• Polymorphie: Eine Nachricht kann verschiedene Reaktionen
auslösen, je nachdem zu welcher Unterklasse einer Oberklasse
das empfangende Objekt gehört.
n
T echnische Universität Dresden
n
Prof. Hußmann
Seite 5
Softwaretechnologie
Beispiel: Ampel-Klasse und Ampel-Objekte
DD-0X5A: SensorAmpel
DD-0Y3C: ZeitAmpel
DD-0X5B: SensorAmpel
Ampel
SensorAmpel
ZeitAmpel
Instanz einer Klasse
Generalisierung (Vererbung)
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Beispiel: Termin-Klasse und Termin-Objekte
AR-12: Teambesprechung
Figaro am 10.1.01: Theaterbesuch
AR-13: Teambesprechung
Termin
Geschäftstermin
Privater Termin
Teambesprechung Kundenbesuch
Theaterbesuch
Instanz einer Klasse
Generalisierung (Vererbung)
T echnische Universität Dresden
Prof. Hußmann
Seite 6
Softwaretechnologie
Beispiele: Polymorphie
• Jede Ampel reagiert auf den Zeittakt.
– Die Klasse Ampel schreibt vor, daß auf die Nachricht „Zeittakt“
reagiert werden muß.
– Verschiedene Reaktionen:
DD-0Y3C: ZeitAmpel
DD-0X5A: SensorAmpel
• Jeder Termin kann verschoben werden.
– Die Klasse Termin schreibt vor, daß auf die Nachricht
„verschiebeTermin“ reagiert werden muß.
– Verschiedene Reaktionen:
AR-13: Teambesprechung
Figaro: Theaterbesuch
• Unterklassen spezialisieren das Verhalten ihrer Oberklassen.
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Prinzipielle Vorteile von Objektorientierung
Zuständigkeitsbereiche
Lokale Kombination von
Daten und Operationen,
gekapselter Zustand
Klare Schnittstellen
Definiertes Objektverhalten,
Nachrichten zwischen Objekten
Vererbung und Polymorphie
(Spezialisierung),
Klassenschachtelung
Stabilität
Änderungsfreundlichkeit
Hierarchie
Baukastenprinzip
T echnische Universität Dresden
Benutzung vorgefertigter
Klassenbibliotheken,
Anpassung durch Spezialisierung
(mittels Vererbung)
Prof. Hußmann
Seite 7
Wiederverwendung
Softwaretechnologie
2. Objektorientierung
2.2 CRC-Karten
Objektorientiertes
Modell
CRC-Karten
Informelle
Problembeschreibung
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
CRC-Karten
• CRC = Class – Responsibility – Collaborator
(Klasse – Verantwortlichkeit – Mithelfer)
• Beck, Cunningham, Wilkerson, Wirfs-Brock (ca. 1989-1995)
• Technik zur Gruppenarbeit (Rollenspiele)
• Spielerische Hinführung zu objektorientiertem Denken
• Einziges Hilfsmittel: Zu beschriftende Karteikarten
Klassenname (class)
Ober- und Unterklassen
Verantwortlichkeiten
Mithelfer
(responsibilities)
(collaborators)
Klassenname (class)
Definition
Attribute
(attributes)
(Vorderseite)
T echnische Universität Dresden
(Rückseite)
Prof. Hußmann
Seite 8
Softwaretechnologie
CRC-Karten-Methode: Vorgehensweise
• CRC-Karten sind nur ein
Hilfsmittel.
• Das Kernstück der Methode
sind intensive
Gruppensitzungen.
• Voraussetzung: informelle Anforderungsbeschreibung
(ideal: ausführliche Anforderungsspezifikation)
• Kandidaten für Klassen (Karten) identifizieren
• Typische Szenarien identifizieren und durchspielen
(dabei: Karten schrittweise ausfüllen)
• Iteration: Verbesserungen, mehrfache Wiederholung
• Ungewöhnliche Szenarien durchspielen
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Klassen finden: Beispiel Terminverwaltung
Problembeschreibung:
Es ist ein Terminverwaltungssystem für Arbeitsgruppen zu
entwickeln. Das System soll alle geplanten Teambesprechungen
(z.B. Projektbesprechungen) speichern und die Reservierung von
Besprechungsräumen unterstützen. Das System soll automatisch
Kollisionen mit bereits bekannten Terminen vermeiden. Deshalb soll
auch die Eintragung privater Termine möglich sein.
Kandidaten für Klassen:
T echnische Universität Dresden
Prof. Hußmann
Seite 9
Softwaretechnologie
Gruppenspiel
• Ideale Gruppengröße: 5 bis 6 aktive TeilnehmerInnen
• Teilnehmer(Innen):
–
–
–
–
–
Fachspezialisten
Systemanalytiker
Systementwickler
Manager (?)
Moderator, 'Facilitator'
• Gruppendynamik:
– CRC-Karten-Sitzungen können Teamgeist stärken
– Vorhandene Gruppen-Probleme können aufbrechen
– Kein Mittel zur Klärung und Lösung von Problemen im Team !
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Beispiel einer CRC-Karte
Teambesprechung
Oberklassen:
Unterklassen:
Termin
Titel wissen
Datum wissen
Teilnehmer wissen
Teilnehmer einladen
Raum festlegen
Teilnehmer
Besprechungsraum
Teambesprechung
Ein Objekt 'Teambesprechung' beschreibt
genau einen Termin, an dem mehrere Teilnehmer der Gruppe teilnehmen sollen.
Rückseite:
T echnische Universität Dresden
Titel
Datum
Prof. Hußmann
Seite 10
Softwaretechnologie
Regeln für das Ausfüllen von CRC-Karten
• Verantwortlichkeiten:
– Eine Verantwortlichkeit enthält fast immer ein Zeitwort.
– '... wissen' kann auch eine Verantwortlichkeit sein.
• Mithelfer:
– Mithelfer-Einträge nur eintragen, wenn Kommunikation mit anderen
Objekten notwendig.
– Eine Verantwortlichkeit kann mehrere Mithelfer benötigen.
– Die Rückgabe einer Antwort gehört zu einem normalen
Kommunikationsvorgang - nicht als Verantwortlichkeit nennen.
• Karten-Rückseiten:
– Definitionen am besten vor dem Spiel ausfüllen, später überprüfen.
– Attribute können während des Spiels oder später ausgefüllt werden.
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
2. Objektorientierung
2.3 Objektorientierte Programmierung
My guess is that object-oriented programming will be in
the 1980's what structured programming was in the 1970's.
Everyone will be in favor of it.
Every manufacturer will promote his products as supporting it.
Every manager will pay lip service to it.
Every programmer will practice it (differently!).
And no one will know just what it is ..."
Tim Rentsch (1982)
T echnische Universität Dresden
Prof. Hußmann
Seite 11
Softwaretechnologie
Programmierparadigmen
• Funktionale Programmierung:
– Funktionsdefinition und -komposition, Rekursion
– Kein Zustandsbegriff
fac(n) = if n = 0 then 1 else n * fac(n-1) end
• Imperative Programmierung:
– Anweisungsfolgen, Schleifen, Prozeduren
– Variablen (Zustand)
k := n; r := 1; while k > 0 do r := r*k; k := k-1 end;
• Logische Programmierung:
– Formallogische Axiomensysteme (Hornklauseln)
– Fakten und Deduktionsregeln
– Resolution
fac(0,1).
fac(n+1, r) :- fac(n, r1), mult(n+1, r1, r).
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Strukturparadigmen
• Unstrukturierte Programmierung:
– Lineare Folge von Befehlen, Sprüngen, Marken
k:=n; r:=1; M: if k<=0 goto E; r:=r*k; k:=k-1; goto M; E:...
• Strukturierte Programmierung:
– Blöcke, Prozeduren, Fallunterscheidung, Schleifen
– Ein Eingang, ein Ausgang für jeden Block
k := n; r := 1; while k > 0 do r := r*k; k := k-1 end;
• Modulare Programmierung:
– Sammlung von Typdeklarationen und Prozeduren
– Klare Schnittstellen zwischen Modulen
DEFINITION MODULE F; PROCEDURE fac(n:CARDINAL):CARDINAL; ...
• Objektorientierte Programmierung:
– Kapselung von Daten und Operationen in Objekte
– Klassen, Vererbung und Polymorphie
public class CombMath extends Number { int fac(int n) ...
T echnische Universität Dresden
Prof. Hußmann
Seite 12
Softwaretechnologie
Orthogonalität
Strukturiert
Funktional
––
Imperativ
Pascal
C
Logisch
Modular
Objektorientiert
Modula-2
Ada
Java
C++
––
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Funktion und Daten
• Separation von Funktion und Daten
Funktionshierarchie
Datenbasis
• Integration von Funktion und Daten
• In den Strukturparadigmen:
– strukturiert:
Separation von Funktion und Daten
– modular:
Modul = (grosse) Funktionsgruppe + lokale Daten
– objektorientiert: Objekt = (kleine) Dateneinheit + lokale Funktionen
T echnische Universität Dresden
Prof. Hußmann
Seite 13
Softwaretechnologie
Kooperative Ausführung durch Objekte
12. Projektbesprechung
Zeit
M. Huber
(Teiln.1)
...
P. Fischer
(Teiln. n)
Raum
R12
Neu
Kollision?
Kollision?
Reservierung
vormerken
vormerken
Kooperierende Objekte mit lokaler Datenhaltung
Einfacher Übergang zu Parallelverarbeitung und Verteilung
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Objektorientierte Programmiersprachen
ALGOL
Simula
C
Smalltalk
Pascal
C++
Eiffel
UCSD
Pascal
C#
LISP
BASIC
CLOS
Visual
Basic
Ada
Object
Pascal
(Delphi)
Self
Ada-95
Java
T echnische Universität Dresden
Prof. Hußmann
Seite 14
Softwaretechnologie
Geschichte der OO-Programmierung
• Simula: Ole-Johan Dahl + Krysten Nygaard, Norwegen, 1967
• Allan Kay: The Reactive Engine, Dissertation, Univ. Utah, 1969
• Smalltalk: Allan Kay, Adele Goldberg, H. H. Ingalls, Xerox Palo
Alto Research Center (PARC), 1976-1980
• C++: Stroustrup, Bell Labs (New Jersey), 1984
• Eiffel: Bertrand Meyer, 1988
• Java: Ken Arnold, James Gosling, Sun Microsystems, 1995-
T echnische Universität Dresden
Prof. Hußmann
Softwaretechnologie
Die Programmiersprache Java
• Java™ – eine Modeerscheinung?
– die Programmiersprache für das Internet?
– die Geheimwaffe von Sun gegen Microsoft?
• Geschichte:
– Vorläufer von Java: OAK (First Person Inc.), 1991-1992
» Betriebssystem/Sprache für Geräte, u.a. interaktives Fernsehen
– 1995: HotJava Internet Browser
» Java Applets für das World Wide Web
» 1996: Netscape Browser (2.0) Java-enabled
– Weiterentwicklungen:
» Java als Applikationsentwicklungssprache (Enterprise Java)
» Java zur Gerätesteuerung (Embedded Java)
» Java Beans, Enterprise Java Beans (Software-Komponenten)
» Java Smartcards
T echnische Universität Dresden
Prof. Hußmann
Seite 15
Softwaretechnologie
Warum gerade Java?
• Java ist relativ einfach und konzeptionell klar.
• Java vermeidet “unsaubere” (gefährliche) Konzepte.
– Strenges Typsystem
– Kein Zugriff auf Speicheradressen (im Unterschied zu C)
– Automatische Speicherbereinigung
• Java ist unabhängig von Hardware und Betriebssystem.
– Java Bytecode
– Java Virtual Machine
• Java ist abstrakt in seinen Konzepten.
– z.B. Java Collection Framework
• Java ist angepaßt an moderne Benutzungsoberflächen.
– Java Swing Library
• Java ermöglicht nebenläufige Programme.
– sogenanntes multi-threading
T echnische Universität Dresden
Prof. Hußmann
Seite 16
Softwaretechnologie
Herunterladen