31
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D¨ uffel Alina St¨ urck WS2016/17 11. Oktober 2016 Vorkurs Informatik - WS2013/14

Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

  • Upload
    vobao

  • View
    229

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP

Objektorientierte ProgrammierungOOP

Ronja DuffelAlina SturckWS2016/17

11. Oktober 2016

Vorkurs Informatik - WS2013/14

Page 2: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP

1 Was ist das?

2 Wie geht das?

3 Warum gibt es das?

4 Wie geht das in Python?

Vorkurs Informatik - WS2013/14

Page 3: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Was ist das?

Was ist das?

ein Programmierparadigma

(Programmierstil)

Art und Weise ein Problem zu modellieren

Beschreibung eines Systems anhand des Zusammenspielskooperierender Objekte

Vorkurs Informatik - WS2013/14

Page 4: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Was ist das?

Was ist das?

ein Programmierparadigma (Programmierstil)

Art und Weise ein Problem zu modellieren

Beschreibung eines Systems anhand des Zusammenspielskooperierender Objekte

Vorkurs Informatik - WS2013/14

Page 5: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Was ist das?

Was sind Objekte?

Objekte sind uberall

werden von uns als solche wahrgenommen

Begriff eher unscharf ⇒ kann auch abstrakter sein

In der realen Welt OO-Programmierung

Zustand AttributeVerhalten Methoden

Vorkurs Informatik - WS2013/14

Page 6: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Was ist das?

Datenkapselung

Zustand gespeichert in Attributwerten

Verhalten festgelegt durch Methoden

Interaktion mit anderen Objekten durch Methoden

Zustand ist versteckt, nur uber Methoden erreichbar

Methoden definieren Schnittstelle, uber die andere Objekte mitObjekt interagieren

Vorkurs Informatik - WS2013/14

Page 7: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Was ist das?

Datenkapselung

Zustand gespeichert in Attributwerten

Verhalten festgelegt durch Methoden

Interaktion mit anderen Objekten durch Methoden

Zustand ist versteckt, nur uber Methoden erreichbar

Methoden definieren Schnittstelle, uber die andere Objekte mitObjekt interagieren

Vorkurs Informatik - WS2013/14

Page 8: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Uberblick

1 Was ist das?

2 Wie geht das?

3 Warum gibt es das?

4 Wie geht das in Python?

Vorkurs Informatik - WS2013/14

Page 9: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Klassen und Objekte

Klasse

definiert fur eine Menge von Objekten deren Struktur (Attribute),Verhalten(Methoden) und BeziehungenBauplan fur ObjektDefinition aller Attribute und MethodenBesitzt Mechanismus zur Erzeugung eines Objekts

Klasse allein macht noch nichts

Objekt → ist konkrete Auspragung (Instanz) der Klasse

Jedem Objekt ist genau eine Klasse zugeordnet

Vorkurs Informatik - WS2013/14

Page 10: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Klassen und Objekte

Klasse

definiert fur eine Menge von Objekten deren Struktur (Attribute),Verhalten(Methoden) und BeziehungenBauplan fur ObjektDefinition aller Attribute und MethodenBesitzt Mechanismus zur Erzeugung eines Objekts

Klasse allein macht noch nichts

Objekt → ist konkrete Auspragung (Instanz) der Klasse

Jedem Objekt ist genau eine Klasse zugeordnet

Vorkurs Informatik - WS2013/14

Page 11: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Klassen und Objekte

Klasse

definiert fur eine Menge von Objekten deren Struktur (Attribute),Verhalten(Methoden) und BeziehungenBauplan fur ObjektDefinition aller Attribute und MethodenBesitzt Mechanismus zur Erzeugung eines Objekts

Klasse allein macht noch nichts

Objekt → ist konkrete Auspragung (Instanz) der Klasse

Jedem Objekt ist genau eine Klasse zugeordnet

Vorkurs Informatik - WS2013/14

Page 12: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Objekte der Klasse Kuh

Klasse”Kuh“ Objekt

”Kuh Elsa“

Name ElsaGeburtsdatum 01.05.2012Milchleistung 20 Liter/Tag

Vorkurs Informatik - WS2013/14

Page 13: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Klassenhierarchie

Verschiedene Arten von Objekten haben haben Gemeinsamkeiten

Zusammenfassung verschieder Klassen moglich

”ist ein“-Beziehung

Beispiel:

Vorkurs Informatik - WS2013/14

Page 14: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Klassenhierarchie

Verschiedene Arten von Objekten haben haben Gemeinsamkeiten

Zusammenfassung verschieder Klassen moglich

”ist ein“-Beziehung

Beispiel:

Vorkurs Informatik - WS2013/14

Page 15: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Klassenhierarchie

Ubergeordnete Klasse:

Superklasse = Elternklasse = Oberklasse = Basisklasse

Untergeordnete Klasse:

Subklasse = Kindklasse = Unterklasse = abgeleitete Klasse

Vorkurs Informatik - WS2013/14

Page 16: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Vererbung

Umsetzung der Klassenhierarchie

Kindklassen erben alle Attribute und Methoden von Elternklassenhaben zusatzlich eigene Attribute und Methoden

konnen Attribute und Methoden der Elternklasse uberschreiben

Vorkurs Informatik - WS2013/14

Page 17: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das?

Vererbung

Umsetzung der Klassenhierarchie

Kindklassen erben alle Attribute und Methoden von Elternklassenhaben zusatzlich eigene Attribute und Methoden

konnen Attribute und Methoden der Elternklasse uberschreiben

Vorkurs Informatik - WS2013/14

Page 18: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Uberblick

1 Was ist das?

2 Wie geht das?

3 Warum gibt es das?

4 Wie geht das in Python?

Vorkurs Informatik - WS2013/14

Page 19: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Zunahme der Rechnerleistung

großere Programme

komplexere Software

große Projekte

Mehr Ubersicht notig

⇒ Modularitat (Aufteilung in kleinere Komponenten)

Vorkurs Informatik - WS2013/14

Page 20: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Vorteile

Abstraktion: Betrachtung der Objekte und ihrer Eigenschaftenund Fahigkeiten, ohne Festlegung auf Implementierung

Datenkapselung: Objekt interagiert nur uber vordefinierteMethoden. Implementierung kann verandert werden, ohne dassandere Teile des Programms geandert werden mussen

Vererbung: klarere Struktur und weniger Redundanz

Wiederverwendbarkeit: Programme konnen einfacher erweitertund modifiziert werden. Klassen konnen auch in anderenProgrammen verwendet werden.

Vorkurs Informatik - WS2013/14

Page 21: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Vorteile

Abstraktion: Betrachtung der Objekte und ihrer Eigenschaftenund Fahigkeiten, ohne Festlegung auf Implementierung

Datenkapselung: Objekt interagiert nur uber vordefinierteMethoden. Implementierung kann verandert werden, ohne dassandere Teile des Programms geandert werden mussen

Vererbung: klarere Struktur und weniger Redundanz

Wiederverwendbarkeit: Programme konnen einfacher erweitertund modifiziert werden. Klassen konnen auch in anderenProgrammen verwendet werden.

Vorkurs Informatik - WS2013/14

Page 22: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Vorteile

Abstraktion: Betrachtung der Objekte und ihrer Eigenschaftenund Fahigkeiten, ohne Festlegung auf Implementierung

Datenkapselung: Objekt interagiert nur uber vordefinierteMethoden. Implementierung kann verandert werden, ohne dassandere Teile des Programms geandert werden mussen

Vererbung: klarere Struktur und weniger Redundanz

Wiederverwendbarkeit: Programme konnen einfacher erweitertund modifiziert werden. Klassen konnen auch in anderenProgrammen verwendet werden.

Vorkurs Informatik - WS2013/14

Page 23: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Vorteile

Abstraktion: Betrachtung der Objekte und ihrer Eigenschaftenund Fahigkeiten, ohne Festlegung auf Implementierung

Datenkapselung: Objekt interagiert nur uber vordefinierteMethoden. Implementierung kann verandert werden, ohne dassandere Teile des Programms geandert werden mussen

Vererbung: klarere Struktur und weniger Redundanz

Wiederverwendbarkeit: Programme konnen einfacher erweitertund modifiziert werden. Klassen konnen auch in anderenProgrammen verwendet werden.

Vorkurs Informatik - WS2013/14

Page 24: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Nachteile

Formulierung: naturliche Sprache hat keine feste Bindung vonSubstantiv (Objekt) und Verb (Methode).

Klassenhierarchie: ist in der realen Welt nicht immer so klar(Kreis-Ellipse-Problem)

Transparenz: Kontrollfluss nicht im Quelltext

Laufzeit- und Energieeffizienz: OOP-Anwendungen benotigenhaufig mehr Energie und langere Laufzeit

Vorkurs Informatik - WS2013/14

Page 25: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Warum gibt es das?

Nachteile

Formulierung: naturliche Sprache hat keine feste Bindung vonSubstantiv (Objekt) und Verb (Methode).

Klassenhierarchie: ist in der realen Welt nicht immer so klar(Kreis-Ellipse-Problem)

Transparenz: Kontrollfluss nicht im Quelltext

Laufzeit- und Energieeffizienz: OOP-Anwendungen benotigenhaufig mehr Energie und langere Laufzeit

Vorkurs Informatik - WS2013/14

Page 26: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das in Python?

Uberblick

1 Was ist das?

2 Wie geht das?

3 Warum gibt es das?

4 Wie geht das in Python?

Vorkurs Informatik - WS2013/14

Page 27: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das in Python?

Ubersicht

1 Was ist das?

2 Wie geht das?

3 Warum gibt es das?

4 Wie geht das in Python?

Vorkurs Informatik - WS2013/14

Page 28: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das in Python?

Klassen in Python

Klasse:

class KlassenName:

def method1(self, ):

def method2(self, ):

Konstruktor:

erzeugt ein Objekt (Instanz) der Klasse

def init (self, ):

...

Verwendung:

obj1 = KlassenName( )

obj1.method1( )

Vorkurs Informatik - WS2013/14

Page 29: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das in Python?

Variablen/Attribute

Klassenvariablen:

wird von allen Instanzen einer Klasse geteilt

mit <KlassenName>.<VariablenName> innerhalb und außerhalbder Klasse erreichbar

Objektvariable:

existiert allein fur dieses Objekt (Instanz der Klasse)

mit <ObjektName>.<VariablenName> innerhalb der Klasseerreichbar (evtl. auch außerhalb).

Vorkurs Informatik - WS2013/14

Page 30: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das in Python?

public, protected, private

Name Bezeichnung Bedeutung

name public sowohl innerhalb einer Klasse, als auch vonaußen les- und schreibbar

name protected von außen les- und schreibbar, Attributeund Methoden sollten nicht benutzt wer-den

name private von außen weder sichtbar, noch nutzbar

Vorkurs Informatik - WS2013/14

Page 31: Objektorientierte Programmierung OOPlz_inf/Vorkurs/WS1617/Material/python-oop.pdf · Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja D u el Alina St

Objektorientierte Programmierung OOP > Wie geht das in Python?

Beispiel

Vorkurs Informatik - WS2013/14