Einführung in das objektorientierte Programmieren



Ähnliche Dokumente
Objektorientierte Programmierung OOP

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Grundlagen von Python

Klassenbeziehungen & Vererbung

3. Konzepte der objektorientierten Programmierung

Vererbung & Schnittstellen in C#

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

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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Objektorientiertes JavaScript

OO Softwareentwicklung

Objektorientierte Programmierung. Kapitel 12: Interfaces

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Objektorientierte Programmierung

Programmieren in Java

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Prinzipien Objektorientierter Programmierung

3 Objektorientierte Konzepte in Java

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Funktionale Programmierung (in Clojure)

Kapitel 12: Übersetzung objektorienter Konzepte

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Was ist Logische Programmierung?

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Kapitel 6. Vererbung

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Grundlagen der Informatik für Ingenieure I

5. Abstrakte Klassen

Kapitel 6. Vererbung

Client-Server-Beziehungen

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Robot Karol für Delphi

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

VBA-Programmierung: Zusammenfassung

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Kapitel 6. Vererbung

Einführung in Eclipse und Java

Einführung in die Programmierung

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Vorkurs C++ Programmierung

Objektorientierte Programmiersprachen

Client-Server Beziehungen

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

SEP 114. Design by Contract

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Übungen zur Softwaretechnik

4 Vererbung, Polymorphie

Java lernen mit BlueJ

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Assoziation und Aggregation

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Factory Method (Virtual Constructor)

Objektorientierte Programmierung

Datenbankmodelle 1. Das Entity-Relationship-Modell

WhiteStarUML Tutorial

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

1 Mathematische Grundlagen

5.6 Vererbung. Vererbung

Arbeiten mit UMLed und Delphi

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Objektorientierte Programmierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Whitebox-Vererbung vs. Blackbox-Vererbung. - Begriffsbestimmung - Vererbung öffentliche Vererbung private Vererbung - Zusammenfassung

Algorithmen und Programmieren II Einführung in Python

Programmiersprachen und Übersetzer

3. Stored Procedures und PL/SQL

Java Kurs für Anfänger Einheit 5 Methoden

Einführung in PHP. (mit Aufgaben)

Java: Vererbung. Teil 3: super()

III.1 Prinzipien der funktionalen Programmierung - 1 -

Objektorientierte Programmierung

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Kompilieren und Linken

Vererbung und Polymorphismus

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Einführung in die Java- Programmierung

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Graphic Coding. Klausur. 9. Februar Kurs A

Vererbung in der OOP

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Objektorientierung: Klassen und Objekte

Formale Sprachen und Grammatiken

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Abschnitt 9: Schnittstellen: Interfaces

Software Engineering Klassendiagramme Assoziationen

C/C++-Programmierung

Datenbankmodelle 1. Das Entity-Relationship-Modell. Prof. Dr. Bernhard Schiefer 2-1

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Transkript:

Einführung in das objektorientierte Programmieren Nils Schmeißer Forschungszentrum Rossendorf e.v. Objektorientiertes Programmieren - Nils Schmeißer 1 Inhalt Programmiersprachen Der objektorientierte Programmierstil Begriffsbestimmung, Theorie, Anwendung OO Sprachen C++ und Standardbibliotheken (STL, MFC) Turbo-PASCAL, Java, Smalltalk, Eiffel, Oberon andere OO Systeme Objektorientiertes Programmieren - Nils Schmeißer 2 1

Literatur A Theory of Objects ; M. Abadi, L. Cardelli Eiffel: The Language ; B. Meyer Programming in Oberon: Steps beyond Pascal and Modula ; M. Reiser, N. Wirth The C++ Programming Language ; B. Stroustrup Java - Die Programmiersprache ; K. Arnold, J. Gosling Objektorientierte Datenbanken ; A. Heuer Objektorientiertes Programmieren - Nils Schmeißer 3 Andere Quellen Unterlagen zum OOP/C++-Kurs: http://www.fz-rossendorf.de/fvtk/mitarb/schmei/doc/cpp-kurs Unterlagen zum C-Kurs: http://www.fz-rossendorf.de/fvtk/mitarb/schmei/doc/c-kurs Objektorientiertes Programmieren - Nils Schmeißer 4 2

Geschichte der Programmierspr. Assembler 1955 1960 FORTRAN Algol68 BC PL Sketchpad 1970 Pascal C Simula Smalltalk 1980 1985 Modula Turbo-Pascal 5.5 Ada C++ Eiffel Smalltalk 80 1990 Oberon Ada95 Java Objektorientiertes Programmieren - Nils Schmeißer 5 Programmiersprachen imperative Sprachen Ada, ALGOL, BASIC, C, COBOL, FORTRAN, Modula-2, PL/1, Pascal, Simula, Snobol funktionale und applikative Sprachen Lisp, Logo prädikative Sprachen Prolog objektorientierte Sprachen Smalltalk, Eiffel, Oberon, Java, Turbo-Pascal, C++, Fortran2000 Objektorientiertes Programmieren - Nils Schmeißer 6 3

imperative Sprachen 1 ein Programm besteht aus einer Menge von Befehlen BASIC: 10 let n=... 20 gosub 50 30 nf=nfak 40 end 50 let nfak=1 60 for ifak=1 to n 70 nfak=nfak*i 80 next i 90 return Objektorientiertes Programmieren - Nils Schmeißer 7 imperative Sprachen 2 prozedurale Sprachen gruppieren Befehle in Unterprogrammen C: int fac(int n) { if (n==0) return 1; return n*fac(n-2); }... nf=fac(n); Objektorientiertes Programmieren - Nils Schmeißer 8 4

funktionale und applikative Sp. ein Programm besteht aus einer Menge von Funktionen und deren Anwendung Lisp: (fac (n) (cond ((equal n 0) 1) (times n (fac (difference n 1) ) ) ) )... (fac n) Objektorientiertes Programmieren - Nils Schmeißer 9 prädikative Sprachen in prädikativen Sprachen wird eine Menge von Fakten und Regeln vorgegeben Prolog: fac(0,1). fac(n,f) -> fac(n-1,n*f). Objektorientiertes Programmieren - Nils Schmeißer 10 5

objektorientierte Sprachen 1 alle zum Lösen eines Problems nötigen Informationen werden als Objekte aufgefaßt Objekte empfangen und versenden Nachrichten Integer a Integer a,b; a * b value * Integer b value * Objektorientiertes Programmieren - Nils Schmeißer 11 objektorientierte Sprachen 2 Smalltalk: Object subclass: #Integer instancevariablenames: value fac nfak:=integer new. [0=value] iftrue: [ nfak set: 1. ] iffalse: [ nfak set: (((self minus: 1) fac: ) times: value ). ] ^nfak.! n:=(integer new) set:... n fac. Objektorientiertes Programmieren - Nils Schmeißer 12 6

Der objektorientierte P.-Stil Basiskonzept (abstrakter Datentyp) Begriffsbestimmung Objekt, Klasse, Instanz, Attribut, Methode Vererbung Polymorphie OOD (object oriented development) Kriterien für OO Sprachen Objektorientiertes Programmieren - Nils Schmeißer 13 abstrakter Datentyp 1 das Basiskonzept der objektorientierten Programmierung bildet der abstrakte Datentyp (ADT) ein ADT wird definiert durch: seinen Wertebereich (Sorte) die, über dem Wertebereich erklärten Operationen eine Menge von Vorbedingungen eine Menge von Axiomen Objektorientiertes Programmieren - Nils Schmeißer 14 7

abstrakter Datentyp 2 eine Sorte kann formal als Struktur dargestellt Beispiel: bzw. koord=sort Integer x; Integer y; koord=x:integer+y:integer Komponenten Objektorientiertes Programmieren - Nils Schmeißer 15 abstrakter Datentyp 3 einem ADT werden Operationen (die nicht notwendig nur Operanden vom Sortentyp enthalten) zugeordnet Beispiel: vec=adt(koord) SetX:(vec,Integer); +:(vec,vec)->vec; norm:(vec)->integer; Objektorientiertes Programmieren - Nils Schmeißer 16 8

abstrakter Datentyp 4 zur vollständigen Beschreibung eines ADT s gehören zusätzlich die Vorbedingungen pre: x=0; y=0; eine Menge von Axiomen (Spezifikationen), die das Verhalten der Operationen festlegen + (vec a,vec b) =(x=a.x+b.x,y=a.y+b.y) Objektorientiertes Programmieren - Nils Schmeißer 17 abstrakter Datentyp 5 Beschreibung nach Meyer: TYPE vec[koord] FUNCTIONS SetX: vec[koord] x Integer->vec[koord] +: vec[koord] x vec[koord] -> vec[koord] norm: vec[koord] -> Integer CONDITIONS AXIOMS FOR ALL i:integer,a,b,c:vec[koord]: SetX(a,i) = a.x := i +(a,b) = c: ( c.x:=a.x+b.x, c.y:=a.y+b.y ) norm(a) = max(a.x, a.y) Objektorientiertes Programmieren - Nils Schmeißer 18 9

abstrakter Datentyp 6 abstrakte Datentypen werden als Klassen implementiert Beispiel: class vec is Integer x,y; vec + (vec a,vec b) is return vec(a.x+b.x,a.y+b.y); Objektorientiertes Programmieren - Nils Schmeißer 19 Begriffsbestimmung 1 Objekt: eigenständiges Individuum mit charakteristischen Eigenschaften einem inneren Zustand Attributen Methoden Objektorientiertes Programmieren - Nils Schmeißer 20 10

Beispiel Kreis : charakteristische Eigenschaften: alle Punkte des Kreises habe den gleichen Abstand zum Mittelpunkt innerer Zustand: sichtbar/unsichtbar Attribute: Position, Radius, Farbe Methoden Darstellen (Zeichnen), Verschieben Objektorientiertes Programmieren - Nils Schmeißer 21 Begriffsbestimmung 2 Klasse: ist die Vereinigung und formale Beschreibung aller Objekte mit gleichen Eigenschaften Klassen können als Implementation abstrakter Datentypen aufgefaßt werden Klassen werden auch als Objektfabriken bezeichnet Objektorientiertes Programmieren - Nils Schmeißer 22 11

Beispiel class Kreisklasse is Punkt Mittelpunkt; Real Radius; Color Farbe; Kreis New(Punkt M0,Real R0,Color C0); Zeichnen(); Verschieben(Punkt NeuerMittelpunkt); Objektorientiertes Programmieren - Nils Schmeißer 23 Begriffsbestimmung 3 eine Instanz ist die konkrete Realisierung eines Objektes einer Klasse eine Instanz ist genau ein Objekt Instanzen haben einen Gültigkeitsbereich (Lebensbereich) Instanzen werden durch einen Konstruktor erzeugt und einen Destruktor zerstört Objektorientiertes Programmieren - Nils Schmeißer 24 12

Beispiel program p1 is Kreis k3=kreisklasse::new((4,5),3,grün); subprogram ps1 is Kreis k1=kreisklasse::new((1,2),3,rot); Kreis k2=kreisklasse::new((1,2),3,rot);...... obwohl k1 und k2 die gleichen Attributwerte haben, sind es voneinander verschiedene Objekte Objektorientiertes Programmieren - Nils Schmeißer 25 Begriffsbestimmung 4 Attribute sind die Variablen, die den inneren Zustand eines Objektes beschreiben Attribute korrespondieren in ihrer Bedeutung mit den Sorten des abstrakten Datentyps die zugehörige Klasse heißt Komponentenklasse Objektorientiertes Programmieren - Nils Schmeißer 26 13

Beispiel class Punktklasse is... class Kreisklasse is Punkt Mittelpunkt; Real Radius;... die Klasse Punktklasse ist eine Komponentenklasse von Kreisklasse Objektorientiertes Programmieren - Nils Schmeißer 27 Begriffsbestimmung 5 Methoden sind die über einer Klasse erklärten und ihr zugeordneten Operationen zwei spezielle Methoden Konstruktor: generiert eine Instanz Destruktor: zerstört eine Instanz ein Methodenaufruf ist Teil einer Nachricht, die an ein Objekt versandt wird Objektorientiertes Programmieren - Nils Schmeißer 28 14

Beispiel program p1 is Kreis k3=kreisklasse::new((4,5),3,grün);... k3. Verschieben((7,8)) ; die gesamte, an k3 versendete Nachricht lautet: k3: Verschiebe (dich) nach (7,8) Objektorientiertes Programmieren - Nils Schmeißer 29 Vererbung 1 Vererbung ist die Weitergabe von Eigenschaften (Attributen und Methoden) einer Basisklasse an eine abgeleitete Klasse die Weitergabe von Werten ist ebenfalls möglich (Klonen) Objektorientiertes Programmieren - Nils Schmeißer 30 15

Vererbung 2 Vererbung gibt es in verschiedenen Ausprägungen: Spezialisierung: Objektmenge der Unterklasse ist Teilmenge der Objektmenge der Oberklasse Is-a Hierarchie: wie Spezialisierung Typhierarchie: jedes Objekt des Untertyps verhält sich wie ein Objekt des Obertyps Klassenhierarchie: Vererbung der Implementation Objektorientiertes Programmieren - Nils Schmeißer 31 Beispiel class Ellipsenklasse is Punkt Mittelpunkt; Real a,b; Ellipse New(Punkt M0,Real a0,real b0); Verschieben(Punkt NeuerMittelpunkt); subclass Kreisklasse of Ellipsenklasse is Punkt Mittelpunkt; Real a,b; // a=b Kreis New(Punkt M0,Real R0); Verschieben(Punkt NeuerMittelpunkt); Objektorientiertes Programmieren - Nils Schmeißer 32 16

Vererbung 3 es wird ebenfalls zwischen einfacher und mehrfacher Vererbung unterschieden Basisklasse Basisklasse1 Basisklasse2 x x x x x Objektorientiertes Programmieren - Nils Schmeißer 33 Vererbung 4 speziell auf die Weitergabe von Methoden bezogen ist Ersetzung: das vollständige Überschreiben einer Methode Verfeinerung: die ererbte Methode wird innerhalb der neuen Methode gerufen Delegation: die Ausführung einer Methode wird an ein Objekt der Oberklasse (Prototyp) weitergereicht Objektorientiertes Programmieren - Nils Schmeißer 34 17

Beispiel Ellipsenklasse::Skalieren(Real fa,real fb)is a=a*fa; b=b*fb; Ersetzung: Kreisklasse::Skalieren(Real f) is a=a*f; b=b*f; Verfeinerung: Kreisklasse::Skalieren(Real f) is Ellipsenklasse::(f,1.0); b=b*f; Delegation: Kreisklasse::Skalieren(Real f) is Ellipsenklasse::(f,f); Objektorientiertes Programmieren - Nils Schmeißer 35 Vererbung 5 manchmal kann es sinnvoll sein, die Erzeugung von Instanzen bestimmter Klassen zu verbieten (Festlegung eines Konzeptes); solche Klassen werden abstrakte (Basis-)Klassen genannt Objektorientiertes Programmieren - Nils Schmeißer 36 18

Beziehungen zwischen Klassen 1 erbt eine Klasse B von einer Klasse A, so heißt A Basisklasse oder Superklasse von B, B heißt Subklasse B genügt der is-a Relation (B is-a A) B A Objektorientiertes Programmieren - Nils Schmeißer 37 Beziehungen zwischen Klassen 2 besitzt eine Klasse A ein Attribut vom Typ der Klasse C, so heißt C Komponentenklasse von A A genügt der has-a Relation (A has-a C) A C Objektorientiertes Programmieren - Nils Schmeißer 38 19

Beziehungen zwischen Klassen 3 benutzt eine Klasse A eine Instanz der Klasse D, so genügt A der use-a Relation (A use-a D) A D die Relationen sind vererbbar, also B has-a C und B use-a D Objektorientiertes Programmieren - Nils Schmeißer 39 Polymorphie 1 class Gear is SwitchUp() is... subclass ManualGear of Gear is SwitchUp() is... subclass AutomaticGear of Gear is SwitchUp() is... die Methode SwitchUp() kann in vielen verschiedenen Formen auftreten, sie heißt polymorph Objektorientiertes Programmieren - Nils Schmeißer 40 20

Polymorphie 2 neben dem universellen Polymorphismus (vorhergehende Folie) gibt es den ad-hoc Polymorphismus Integer Trunc(Integer x); Integer Trunc(Real x); ad-hoc P. basiert auf dem Konzept der impliziten Typkonversion Objektorientiertes Programmieren - Nils Schmeißer 41 Polymorphie 3 das Konzept der Polymorphie erlaubt somit unterschiedliche Sichtweisen auf Objekte Beispiel: eine Instanz der Klasse ManualGear ist ebenfalls mit den Eigenschaften der Klasse Gear ausgestattet, kann also wie eine solche agieren Objektorientiertes Programmieren - Nils Schmeißer 42 21

Polymorphie 4 eine Variable vom Typ einer Superklasse kann somit auch eine Instanz vom Typ einer Subklasse aufnehmen Beispiel: Gear g; g=new ManualGear; Objektorientiertes Programmieren - Nils Schmeißer 43 Bindung 1 der Bindungsmechanismus beschreibt, wie eine Methode einer Klasse aufgerufen wird verschiedene Bindungskonzepte erlauben eine effiziente Wiederverwendung bzw. gemeinsame Nutzung von Code auf sehr elegante Art und Weise Objektorientiertes Programmieren - Nils Schmeißer 44 22

!!!! Bindung 2 statische Bindung: während der Übersetzung wird die Klassenzugehörigkeit der Instanz bestimmt und daraus die zu rufende Methode ermittelt Beispiel: ManualGear g=new ManualGear; g.switchup(); ruft die Methode der Klasse ManualGear Gear g=new ManualGear; g.switchup(); die der Klasse Gear Objektorientiertes Programmieren - Nils Schmeißer 45 Bindung 3 dynamische (späte) Bindung: die Klassenzugehörigkeit der Instanz wird erst zur Laufzeit bestimmt Beispiel: ManualGear g=new ManualGear; g.switchup(); ruft die Methode der Klasse ManualGear Gear g=new ManualGear; g.switchup(); ruft ebenfalls die der Klasse ManualGear Objektorientiertes Programmieren - Nils Schmeißer 46 23

" " " Bindung 4 späte Bindung wird nicht von allen Sprachen unterstützt standardmäßig wird eine Methode statisch gebunden dynamisch zu bindende Methoden werden durch ein spezielles Schlüsselwort (meist virtual ) gekennzeichnet virtuelle Methoden Objektorientiertes Programmieren - Nils Schmeißer 47 Bindung 5 class Gear is Init(); virtual SwitchUp() is... subclass ManualGear of Gear is Init(); virtual SwitchUp() is... Gear g = new ManualGear; g.init(); // Gear::Init g.switchup(); // ManualGear::SwitchUp Objektorientiertes Programmieren - Nils Schmeißer 48 24

# # Beispiel 1 ein Verfahren zum Lösen von Gleichungssystemen A x = b wird implementiert $ ist A dünn besetzt, so werden die nicht-0 Elemente normalerweise als Liste abgelegt, um Speicherplatz zu sparen der Löser müßte neu implementiert werden Objektorientiertes Programmieren - Nils Schmeißer 49 Beispiel 2 die Neuimplementation ist nicht nötig, wenn der Löser über class Matrix is int n,m; Datastruct data; virtual real Get(int z,int s); virtual void Set(int z,int s,real v); erklärt wird Matrix Solver(Matrix A,Matrix b); Objektorientiertes Programmieren - Nils Schmeißer 50 25

% Beispiel 3 Matrix Solver(Matrix A,Matrix b) is int i,j,k; real f; Matrix x = new Matrix; for k = 0 to A.n do begin if abs(a.get(k,k))<eps then swap(); for i = k+1 to A.n do begin f=a.get(i,k)/a.get(k,k); for j = k+1 to A.m do A.Set(i,j,A.Get(i,j)-f*A.Get(k,j)); b.set(i,b.get(i)-f*b.get(k)); return x; Objektorientiertes Programmieren - Nils Schmeißer 51 Beispiel 4 eine dünn besetzte Matrix kann dann z.b. als subclass SparseMatrix of Matrix is int n,m; Datalist data; virtual real Get(int z,int s); virtual void Set(int z,int s,real v); erklärt werden Objektorientiertes Programmieren - Nils Schmeißer 52 26

& Beispiel 5 der Löser kann auch dann auf SparseMatrix Objekte angewandt werden, wenn sein Quelltext nicht verfügbar ist (Bibliothek) Matrix A = new SparseMatrix; Matrix b = new Matrix; Matrix x;... x=solver(a,b); Objektorientiertes Programmieren - Nils Schmeißer 53 Zusammenfassung abstrakter Datentyp Klassenkonzept ' Klasse, Instanz, Objekt Vererbung ' einfach, mehrfach Polymorphie Bindung ' statische und späte Bindung, virtuelle Methode Objektorientiertes Programmieren - Nils Schmeißer 54 27

( ( ( ) ) ) Und warum das Ganze? Programme sollen: sicher sauber wiederverwendbar lesbar schnell sein Objektorientiertes Programmieren - Nils Schmeißer 55 Softwareentwurf 1 Modularisierung ) nach Funktionen:» Funktionensammlungen, Bibliotheken nach Daten bzw. Objekten:» Klassenpool Top-down Entwurf Anwendung abstrakte Funktion Zerlegung festgelegter Systementwurf Objektorientiertes Programmieren - Nils Schmeißer 56 28

* * Softwareentwurf 2 Object Oriented Design + Identifiziere Objekte + Beschreibe Objekte + Beziehungen und Gemeinsamkeiten zwischen Objekten + Klassenbildung + Beziehungen zwischen Klassen + Klassenhierarchie + Methodenimplementation + Programm aus Objektbeschreibung Objektorientiertes Programmieren - Nils Schmeißer 57 Kriterien für OO-Sprachen 1 nach Meyer + Modularisierung nach Objekten + Abstrakte Datentypen + Freispeicherverwaltung (! C++) + Module, Klassen und Standardtypen + Vererbung + Polymorphismus und dynamische Bindung + Mehrfachvererbung (! Smalltalk) Objektorientiertes Programmieren - Nils Schmeißer 58 29

,,, - - - - Kriterien für OO-Sprachen 2 nach Wegner - Objekte - Klassen - Vererbung Strenge Typisierung Abstrakte Datentypen Nebenläufigkeit Persistenz Objektorientiertes Programmieren - Nils Schmeißer 59 OO-Sprachen bedeutend Turbo-Pascal, Delphi, C++, Java, Smalltalk-80, Oberon-2, Eiffel, Ada 95 weniger bedeutend CLOS, Modula-3, Objective-C, Python, Sather, Simula, Tcl/Tk, VBScript, Visual Basic, Objective-Pascal Objektorientiertes Programmieren - Nils Schmeißer 60 30

Objektorientiertes Programmieren - Nils Schmeißer 61 31