Objektorientierte Programmierung - PowerPoint PPT Presentation

About This Presentation
Title:

Objektorientierte Programmierung

Description:

Title: Objektorientierte Programmierung Smalltalk & Java Author: Philipp Brendel Last modified by: Philipp Brendel Created Date: 3/26/2004 2:39:05 PM – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 28
Provided by: PhilippB150
Category:

less

Transcript and Presenter's Notes

Title: Objektorientierte Programmierung


1
Objektorientierte Programmierung
  • Proseminar Programmiersysteme 31.03.2004
  • Lehrstuhl für Programmiersysteme Prof. Gert
    Smolka
  • Vortragender Philipp Brendel
  • Tutor Andreas Rossberg

2
Gliederung
  • Konzepte objektorientierter Programmierung (OOP)
  • Java
  • Smalltalk
  • Diskussion

3
Konzepte der OOP- Objektbegriff -
  • Erste OOP Simula 67
  • entwickelt am Norwegian Computing Center um 1960
  • dient zur Programmierung ereignisbasierter
    Simulationen
  • erfordet Datenstruktur zur Repräsentation
    unterschiedlicher Ereignisse

4
Konzepte der OOP- Objektbegriff -
  • Ein Objekt vereint Daten und Prozeduren, die auf
    diesen Daten operieren, in einem Wert
  • Eigenschaften, die den meisten klassenbasierten
    objektorientierten Programmiersprachen gemein
    sind
  • Enkapsulierung
  • Vererbung
  • dynamische Bindung
  • Subtyping

5
Konzepte der OOP- Ein Beispiel in ML -
  • Implementierung eines Zählers mit Prozeduren zur
    Abfrage (get) und Erhöhung (inc)
  • Realisierung durch ProzedurnewCounter unit -gt
    counterzur Erzeugung neuer Objekte des Typs
    counter

6
Konzepte der OOP- Ein Beispiel in ML -
  • type counter getunit -gt int, incunit -gt
    unit
  • fun newCounter () let
  • val n ref 0
  • in
  • get fn () gt !n,
  • inc fn () gt n !n 1
  • end
  • gt newCounter fn unit -gt counter

7
Konzepte der OOP- Ein Beispiel in ML -
  • Enkapsulierung
  • Verbergung der Referenz n, die den Zählerstand
    enthält
  • Zugriff auf Zählerstand nur durch offengelegte
    Prozeduren- val c newCounter ()gt val c
    ... counter- val i get(c) ()gt val i 0
    int- inc(c) ()gt val it () unit- val j
    get(c) ()gt val j 1 int

8
Konzepte der OOP- Ein Beispiel in ML -
  • Erweiterung des Zählers um eine Reset-Prozedur
  • type reset_counter getunit -gt int,
  • incunit -gt unit,
  • resetunit -gt unit
  • fun newResetCounter () let
  • val n ref 0
  • in
  • get fn () gt !n,
  • inc fn () gt n !n 1,
  • reset fn () gt n 0
  • end

9
Konzepte der OOP- Ein Beispiel in ML -
  • Subtyping Werte vom Typ reset_counter sind
    gültige Argumente für Prozeduren, die Werte vom
    Typ counter erwarten (in idealisiertem
    ML-Dialekt).
  • Dynamische Bindung Der in einer solchen Prozedur
    ausgeführte Code hängt von der Implementierung
    des Arguments ab.
  • - fun f (ccounter) inc(c) () get(c) ()
  • gt val f fn counter -gt int
  • - val (c, c) (newCounter (),
    newResetCounter())
  • gt val c ... counter
  • val c ... reset_counter
  • - f c
  • gt val it 1 int
  • - f c
  • gt val it 1 int

10
Konzepte der OOP- Subtyping -
  • Ein Typ s ist ein Subtyp eines Typs t (s t),
    wenn in jedem Kontext, der einen Wert des Typs t
    erwartet, ein Wert des Typs s verwendet werden
    kann
  • Subtyping definiert eine Relation Í Typ Typ,
    die folgende Eigenschaften aufweist
  • Reflexivität
  • Transitivität
  • Antisymmetrie
  • Die Subtypingrelation ist also eine Teilordnung.

11
Konzepte der OOP- Subtyping -
  • Erweiterung des Typsystems mit Typrelation R um
    eine Subsumtionsregel, die Subtyping ermöglicht

12
Konzepte der OOP- Subtyping -
Regeln für Subtyping von Records
Regel für Subtyping von Prozeduren
13
Java
  • Entwickelt von SUN Microsystems um 1990
  • Designziele
  • Offenheit Klassen werden nach Bedarf zur
    Laufzeit geladen (dynamisches Linking),
    Objekttypen können zur Laufzeit im- und
    exportiert werden
  • Portabilität Programme werden zu Bytecode
    kompiliert und laufen auf einer virtuellen
    Maschine
  • Sicherheit Mechanismen zur Verhinderung von
    Sicherheitsverletzungen sind Bestandteil von Java

14
Java
  • Java ist klassenbasiert Schemata, die die
    Implementierung von Objekten definieren, heißen
    Klassen
  • Klassen definieren Prozeduren (Methoden) und
    Daten (Felder oder Instanzvariablen)

15
Java
  • jedes Objekt ist eine Instanz einer Klasse
  • instanzerzeugende Prozeduren heißen Konstruktoren
  • Enkapsulierung erfolgt durch Zugriffsmodifizierer
    (public, private, protected und package), die für
    jede Methode und jedes Feld wählbar sind

16
Java
  • Vererbung Jede Klasse erbt von genau von einer
    Oberklasse, deren Code sie weiterverwenden oder
    spezialisieren kann
  • Die Subtypingrelation ist durch die
    Vererbungshierarchie gegeben ein Objekt wird als
    Instanz aller seiner Oberklassen
    betrachtet(Nominelles Subtyping im Gegensatz zum
    strukturellen Subtyping des ML-Beispiels)

17
Java- Codebeispiel -
  • Definition einer Zählerklasse in Java
  • class Counter extends Object
  • private int n
  • public Counter() n 0
  • public int get() return n
  • public void inc() n n 1
  • Verwendung der Klasse
  • Counter c new Counter()
  • int i c.get()
  • c.inc()
  • int j c.get()
  • Am Ende des Beispiels hat i den Wert 0 und j den
    Wert 1.

18
Smalltalk
  • entwickelt von Xerox PARC in den 1970er Jahren
  • Designziele
  • simples Konzept
  • Flexibilität
  • Betriebssystem des DYNABOOK
  • von Nichtprogrammierern verwendbar

19
Smalltalk
  • äußerst einfaches und elegantes Konzept Alles
    ist ein Objekt
  • Programme werden ausgeführt, indem sogenannte
    Nachrichten an Objekte geschickt werden, die
    diese behandeln
  • äußerst einfache Syntax

20
Smalltalk
  • Komplexität durch umfangreiche Klassenbibliothek
  • Beispiel für konsequente Einhaltung der
    Objektmetapher
  • Klassen sind Objekte, Instantiierung durch Senden
    einer Nachricht an Klassenobjekt
  • Klassen werden durch Senden einer Nachricht an
    ein Metaclass-Objekt erzeugt

21
Smalltalk
  • Enkapsulierung ist fest vorgegeben Methoden sind
    öffentlich, Instanzvariablen sind geschützt
  • Dynamische Typisierung
  • Objekte haben die Möglichkeit, individuell auf
    unbekannte Nachrichten zu reagieren, indem sie
    die Nachricht doesNotUnderstand implementieren

22
Smalltalk- Codebeispiel -
  • Definition einer Zählerklasse in Smalltalk
  • Object subclass Counter
  • instanceVariableNames 'n'
  • initialise
  • (n nil) ifTrue n 0
  • inc
  • self initialise.
  • n (n 1)
  • get
  • self initialise.
  • n

23
Smalltalk- Codebeispiel -
  • Verwendung der Klasse
  • c Counter new.
  • i c get.
  • c inc.
  • j c get.
  • Am Ende des Beispiels hat i den Wert 0 und j den
    Wert 1.

24
Diskussion- Interessante Aspekte
objektorientierter Programmierung -
  • Objektmetapher erleichtert Enkapsulierung
  • Zerlegung von Problemen ist in OOP natürlich
  • Wiederverwendbarkeit von Code in verschiedenen
    Szenarien

25
Diskussion- Probleme der OOP -
  • Mehrfachvererbung
  • Was geschieht, wenn dieselbe Methode von mehreren
    Oberklassen geerbt werden soll?
  • Wie geht man vor, wenn zweimal von derselben
    Klasse geerbt wird?
  • Inheritance is not subtyping Subklassen sind
    oft keine Subtypen, Beispiel
  • Klasse Point2D besitzt Methodeboolean equal
    (Point2D q)
  • Klasse Point3D erbt von Point2D und
    implementiertboolean equal (Point3D q)
  • Þ Point3D ist kein Subtyp von Point2D

26
Diskussion
  • Binary-Methods-Problem Im Gegensatz zu
    prozeduraler Programmierung fällt der
    Objektzugriff bei OOP einseitig
    ausPoint.add(Point q) return new Point
    (this.x q.x, this.y q.y)

27
Literatur
  • John C. Mitchell Concepts in Programming
    Languages. Cambridge University Press 2003
  • Kim Bruce, Luca Cardelli, Giuseppe Castagna,
    Hopkins Objects Group, Gary T. Leavens, Benjamin
    Pierce On Binary Methods, Theory And Practice of
    Object Systems.
  • Richard P. Gabriel, Objects Have Failed, OOPSLA
    Debate 2002
  • William Cook, Walter Hill, Peter Canning,
    Inheritance Is Not Subtyping. Principles of
    Programming Languages (POPL) 1990
Write a Comment
User Comments (0)
About PowerShow.com