Objektorientierte (OO) Programmierung Einführung Einführung Objektorientierte (OO) Programmierung
Objektorientierte Softwareentwicklung Einführung Quellen: Objektorientierte Softwareentwicklung Von Bern Oestereich, Oldenburg Verlag ISBN 3-486-25573-8 System-Entwicklung in der Wirtschaftsinformatik Von R.Böhm & E.Fuchs, vdf Verlag ISBN 3-7281-2762-0
Sie kennen nach dem Kurs die Begriffe: Objektorientierung UML Klasse Einführung Ziele: Sie kennen nach dem Kurs die Begriffe: Objektorientierung UML Klasse Objekt Eigenschaft Methode Attribut Vererbung
Sie können nach dem Kurs im Delphi Klassen definieren Einführung Ziele: Sie können nach dem Kurs im Delphi Klassen definieren und Objekte einsetzen und verwenden.
Unstrukturierte Programmierung Einführung Unstrukturierte Programmierung 100 dim a 110 a = 45 120 a = a * 13 130 Gosub 400 140 if a < 9999 GOTO 120 … 400 a = a – 5 410 gosub 200 420 if a < 1200 goto 120 430 return Vertreter: Fortran, Cobol, Basic etc.
Unstrukturierte Programmierung Einführung Unstrukturierte Programmierung Vorteile: Schnelle „Resultate“ Nachteile: Unübersichtlich Fehleranfällig Schlecht wartbar Globale Variablen Code kann nicht wiederverwendet werden Sehr technisch
Strukturierte Programmierung Einführung Strukturierte Programmierung Procedure Schreibe(zahl:integer); Var i:integer; Begin for i := 1 to 10 do begin writeln(zahl*i); end; End; Schreibe(13); End. Vertreter: Pascal, Modula-2, C, etc.
Strukturierte Programmierung Einführung Strukturierte Programmierung Vorteile: Übersichtlich Lokale Variablen besser wartbar Vom Groben ins Detail (Prozeduren) Nachteile: Methoden und Notation nicht einheitlich Schlecht wiederverwendbarer Code Konzept Funktionen und Daten entspricht nicht der realen Welt
Abstammung der Programmiersprachen Einführung Abstammung der Programmiersprachen
OO Notation: Unified Modeling Language Einführung OO Notation: Unified Modeling Language
Ziele der Objektorientierung Einführung Ziele der Objektorientierung Erweiterbarkeit und Wiederverwendbarkeit Komplexe Systeme methodisch in kleinere Teilsysteme zerlegen, damit die Programmierung und Wartung möglich wird Gute Wartbarkeit der vorhandenen Programme Programmlösung als vereinfachtes Abbild der Realität Sicherheit
Vom Groben ins Detail, und zurück Einführung Vom Groben ins Detail, und zurück
Einführung Begriffe Klasse und Objekt
Einführung Klasse
Einführung Objekt
Einführung Klasse und Objekte
Einführung Klasse und Objekte
Objekte: gleich, aber nicht identisch Einführung Objekte: gleich, aber nicht identisch
Einführung Vererbung
Generalisierung & Spezialisierung Einführung Generalisierung & Spezialisierung
Generalisierung & Spezialisierung Einführung Generalisierung & Spezialisierung
Objektorientierte Programmierung Einführung Objektorientierte Programmierung Vorteile: Sicher durch Kapselung Flexibel und Erweiterbar durch Vererbung Nahe an der Realität durch System- und Objektsicht Nachteile: Hoher Planungsaufwand Es wird sehr viel Code generiert Nicht immer performant
Einführung Fahrzeuge, Autos, LKW Fahrzeug Auto LKW Bus
Abstrakte Klasse TFahrzeug Einführung Abstrakte Klasse TFahrzeug unit jheFahrzeug; interface type TFahrzeug = class(TObject) protected function berechneV:integer; virtual; abstract; public property v: integer read berechneV; procedure beschleunigen; virtual; abstract; procedure bremsen; virtual; abstract; end; // TFahrzeug implementation end.
Klasse TAuto; Interface (Schnittstelle) Einführung Klasse TAuto; Interface (Schnittstelle) unit jheAuto; interface uses jheFahrzeug; type TAuto = class(TFahrzeug) private Fv : integer; protected function berechneV:integer; override; public property v: integer read berechneV; procedure beschleunigen; override; procedure bremsen; override; end; // TAuto
Klasse TAuto; Implementation (Realisierung) Einführung Klasse TAuto; Implementation (Realisierung) … implementation procedure TAuto.bremsen; begin Fv := Fv - 5; end; procedure TAuto.beschleunigen; Fv := Fv + 5; function TAuto.berechneV:integer; result := Fv;