10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005
Einordnung in den Kontext der Vorlesung 1. Einführung 2. Projektmodell 3. Vorgehensmodelle 4./5. Unified Modeling Language (UML) 6. Analyse-Phase: Geschäftsprozesse 7. Analyse-Phase: Datenmodellierung 8. Analyse-Phase: Dialoge 9. Design-Phase 10. Programmierungs-Phase 11. Test- / Integrations-Phase, Einführung 12. Projektmanagement 13. Qualitätsmanagement 15.12.2005, Seite 2
Agenda Agenda Programmiersprachen Klassen und Objekte Assoziationen und Vererbung Kontrollfragen 15.12.2005, Seite 3
Programmiersprachen Objektorientierte und andere Programmiersprachen ALGOL, AWK, BASIC, C, COBOL, FORTRAN, Pascal, PL/1, REXX, Cyclone 1 je Prozessortyp 6 5 Prozedurale Sprachen Assemblerund Maschinensprachen Programmiersprachen 2 Funktionale Sprachen 3 LISP, Logo, ML, Scheme, Haskell, OPAL, Miranda visuelle Programmierumgebungen (z.b. VisualBasic, Delphi), Datenbanksprachen (zum Beispiel SQL, dbase, Clipper) Sonstige Sprachen und Umgebungen 4 Logische und regelbasierte Sprachen Objektorientierte Sprachen Smalltalk, Eiffel, C++, Objective-C, Java, C#, Oberon, Python, Ruby Prolog OPS5, XSLT 15.12.2005, Seite 4
Agenda Agenda Programmiersprachen Klassen und Objekte Assoziationen und Vererbung Kontrollfragen 15.12.2005, Seite 5
Klassen und Objekte Klassen und Objekte Beispiel: Rind-Klasse und Elsa, Günter und Anja Rind Klasse (=Abstraktion) Objekte (Konkrete Eigenschaften) Elsa Günter Anja Aus Österreich: Objektorientierte Software-Entwicklung Oldenbourg 15.12.2005, Seite 6
Klassen und Objekte Klassen Klasse = Abstrakter Datentyp Eine Klasse beschreibt die Gemeinsamkeiten einer Menge von gleichartigen Objekten. Klasse = Abstraktion Sie ist eine Schablone für Objekte Sie definiert: Attribute und Methoden 15.12.2005, Seite 7
Klassen und Objekte Objekte Zustand: Ein Objekt hat Attribute, deren konkrete Werte sind der Zustand des Objekts (die Daten) Verhalten: Das Verhalten eines Objekts wird durch seine Operationen / Methoden beschrieben Identität: Jedes Objekt hat eine Identität, die es von anderen Objekten unterscheidet, sie ist unabhängig vom Zustand, Identität bleibt, selbst wenn alle Daten geändert werden 15.12.2005, Seite 8
Klassen und Objekte Klassen vs. Objekte Eine Klasse definiert die zentralen Eigenschaften (Attribute) und Fähigkeiten (Methoden) von Objekten ist eine Art Schablone für Objekte Ein Objekt verhält sich entsprechend der Klassendefinition hat einen Zustand ( = seine Attributwerte) radius: int xpos: int; ypos: int; Klasse Kreis setzeposition(x:int,y:int) darstellen() Objekt meinkreis:kreis radius=1 xpos = 100 ypos = 200 15.12.2005, Seite 9
Klassen und Objekte Verspäteter Leitspruch: Das beste Modell für eine Katze ist eine Katze. Möglichst dieselbe Katze. Norbert Wiener, 1945 15.12.2005, Seite 10
Klassen und Objekte Substantive = Klassen Grammatische Untersuchung des Pflichtenhefts Aufgabenstellung: Zu entwickeln ist ein einfacher Grafischer Editor Problemstellung (Vorstudie / Grobkonzept): Mit Hilfe eines grafischen Editors können Zeichnungen angefertigt werden. Es werden verschiedene Grafiksymbole wie Linie, Rechteck, Kreis usw. zur Verfügung gestellt, die selektiert und in die Zeichnung kopiert werden können. Der Editor erlaubt das Abspeichern und Laden erstellter Zeichnungen. 15.12.2005, Seite 11
Klassen und Objekte Verben = Methoden / Operationen Grammatische Untersuchung des Pflichtenhefts Aufgabenstellung: Zu entwickeln ist ein einfacher Grafischer Editor Problemstellung (Vorstudie / Grobkonzept): Mit Hilfe eines grafischen Editors können Zeichnungen angefertigt werden. Es werden verschiedene Grafiksymbole wie Linie, Rechteck, Kreis usw. zur Verfügung gestellt, die selektiert und in die Zeichnung kopiert werden können. Der Editor erlaubt das Abspeichern und Laden erstellter Zeichnungen. 15.12.2005, Seite 12
Klassen und Objekte Klassen in UML Klassenname Booch, Rumbaugh, Jacobson Attributname Attributtyp Methoden Kreis radius: int {radius > 0} xpos: int = 0; ypos: int = 0; setzeposition(x: int, y: int) darstellen() Zusicherung Initialwerte Parameter Software wie gemalt 15.12.2005, Seite 13
Klassen und Objekte Klassen und Objekte in Java // Klasse public class Kreis { } private int x; private int y; private int radius; public Kreis (int x, int y, int radius) { } public void setzeposition(int x, int y) { } public void darstellen() { } // Objekt Kreis k = new Kreis(100,200,1); Attribute Konstruktor Methoden 15.12.2005, Seite 14
Agenda Agenda Programmiersprachen Klassen und Objekte Assoziationen und Vererbung Kontrollfragen 15.12.2005, Seite 15
Assoziationen und Vererbung Assoziationen in UML Kardinalität Mensch 1 besitzt n Buch Name 15.12.2005, Seite 16
Assoziationen und Vererbung Assoziationen in Java Klassen müssen sich kennen class Mensch { Collection buecher; void lesen(); }; 15.12.2005, Seite 17
Vererbung Beispiel aus der Biologie: Taxonomie (Klassifikation) Assoziationen und Vererbung Insekten Flug-Insekten Ur-Insekten Ein Flügelpaar Zwei Flügelpaare Springschänze Borstenschwänze Libelle Beintastler Aus Österreich: Objektorientierte Software-Entwicklung Oldenbourg 15.12.2005, Seite 18
Assoziationen und Vererbung Was ist Vererbung? Wichtiges Merkmal der OO (Prinzip der Hierarchie) ist die Verwirklichung der is-a-beziehung Beispiel: Hund is-a Tier, Katze is-a Tier Varianten in OO-Sprachen: Implementierungsvererbung (man bekommt was geschenkt) Interfacevererbung (man muss was tun) Wird verwendet zur: Abstraktion (OO-Modellierung) Erweiterung von vorhandenem Code Restrukturierung, Zusammenfassung von vorhandenem Code 15.12.2005, Seite 19
Assoziationen und Vererbung Vererbung in UML Vererbung Kunde - name: Name + print() Oberklasse / Elternklasse / Basisklasse Unterklasse/ Kindklasse AuslandsKunde - land: Land + print() InlandsKunde - kontonr: String + print() - private # protected + public 15.12.2005, Seite 20
Vererbung in Java Assoziationen und Vererbung Kunde AuslandsKunde public class Kunde { public Kunde(String vorname, String nachnahme) { } // } public class AuslandsKunde extends Kunde { public AuslandsKunde(String vorname, String nachname,string land) { super(vorname, nachname); // } // } 15.12.2005, Seite 21
Agenda Agenda Programmiersprachen Klassen und Objekte Assoziationen und Vererbung Kontrollfragen 15.12.2005, Seite 22
Kontrollfragen Kontrollfragen Welche Familien von Programmiersprachen gibt es? Nennen Sie Beispiele für einzelne Programmiersprachen Was ist der Unterschied zwischen einer Klasse und einem Objekt? Was sind die wesentlichen Bestandteile einer Klasse? Was ist eine Assoziation? Wie wird sie in einer objektorientierten Sprache umgesetzt? Geben Sie ein Beispiel Was ist Vererbung? Wie wird sie in einer objektorientierten Sprache umgesetzt? Geben Sie ein Beispiel 15.12.2005, Seite 23