Objektorientierte Programmierung: Unterschied zwischen den Versionen
main>Ugh |
main>Ugh (Grundlegend überarbeitet) |
||
Zeile 1: | Zeile 1: | ||
== Einstieg: Einfache Theorie der Objektorientierten Programmierung == | |||
Zunächst klären wir am Beispiel Vogel, was eine Klasse ist: Ähnlich wie in der [[Biologie]] gruppiert man in der OOP (Objektorientierten Programmierung) Objekte und fasst sie in Klassen zusammen. | |||
[[Bild:Cyanocitta-cristata-004.jpg|thumb|Ein "Blue Jay" (deutsch Blauhäher) ist der Namensgeber von BlueJ, der Einsteiger-Java-IDE]] | |||
Dabei stellt sich die Frage, was einen Vogel auszeichnet: | |||
* Ein Vogel hat bestimmte '''Eigenschaften''' (oder Attribute). Er hat zum Beispiel eine bestimmte Farbe, ein Geschlecht und man kann seine Flügelspannweite messen. | |||
* Ein Vogel kann bestimmte Dinge tun. Er kann etwa singen oder ein Ei legen. Das sind die so genannten '''Methoden''' (Operationen) des Vogels wie singe() oder legeEi(). | |||
Methoden teilt man in zwei Gruppen ein | |||
* | * Es gibt zum einen '''beobachtende oder auch sondierende Methoden'''. Diese beantworten z.B. die Frage: Welche Farbe hast du? Im Programm werden sie gibFarbe() oder getFarbe() genannt. | ||
* Zum anderen gibt es Methoden, die Eigenschaften ändern können ('''verändernde Methode'''). Ein Beispiel wäre setFarbe(“gruen“), welche die Farbe eines Objektes ändern könnte. | |||
* | |||
Aus der Klasse Vogel lassen sich konkrete '''Objekte''' bilden: z.B. vogel1, vogel2, vogel3. Jedes Objekt hat einen bestimmten Zustand. So kann z.B. vogel1 die Farbe gelb haben, weiblich sein und 40 cm Spannweite haben. der Zustand von vogel2 könnte sein: gelb, 30 cm Spannweite, männlich. Während die Klasse Vogel etwas abstraktes ist (eine Art Bauplan für Objekte) ist ein Objekt konkret. | |||
{{Übung| | |||
* Nennen Sie weitere Eigenschaften und Methoden einer Klasse Vogel. | |||
* Je nachdem, ob man für ein Zoogeschäft oder ein Lexikon ein Verwaltungsprogramm schreibt, bekommt eine Klasse Vogel ganz andere Eigenschaften. Nennen Sie Eigenschaften, die jeweils nur für einen der beiden Auftraggeber (Zoogeschäft, Lexikon) wichtig sind. | |||
* Beschreiben Sie den Zustand des Objektes bluejay1, das den Vogel aus dem Bild zeigt. | |||
* Nennen Sie Eigenschaften und Methoden eines Haushaltsgerätes (z.B. einer Uhr). | |||
}} | |||
===Quellen und Links=== | |||
* Ausschnitt aus [http://informatik.zum.de/pieper/blog/index.php?entry=entry060527-080240 Kapitel 1 Java-Reader] von Uli Pieper | |||
* Genauere Einsteigererläuterung: [http://www.u-helmich.de/inf/BlueJ/kurs11/seite01/theorie.html Klassen und Objekte] von Ulrich Helmich | |||
* Warum OOP? {{ll|http://www.learnline.de/angebote/oop/medio/didaktik/grundlagen/warum.html|Warum Objektorientierte Programmierung?}} | |||
==Wissenschaftliche Herangehensweise== | |||
Das folgende Zitat eigenet sich, um einen Überblick über die OOP zu erlangen. | |||
{{Zitat wpde| | |||
Die '''objektorientierte Programmierung''', kurz '''OOP''', ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma, welches Flexibilität und Wiederverwendbarkeit von Programmen fördert. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewendet werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, sodass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können. Im Gegensatz dazu beschreibt das vor der OOP vorherrschende Paradigma eine strikte Trennung von Funktionen (Programmcode) und Daten, dafür aber eine schwächere Strukturierung der Daten selbst. Befürworter der OOP vertreten die These, dass der OOP Ansatz für Computerneulinge leichter zu erlernen ist als bisherige Ansätze. | |||
Im Folgenden werden wichtige Begriffe der objektorientierten Programmierung kurz umrissen. Für nähere Details sei auf die jeweiligen Einzelabschnitte und -artikel verwiesen. | |||
Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden als Objekte bezeichnet. Die Konzeption dieser Objekte erfolgt dabei in der Regel auf Basis der folgenden Paradigmen: | |||
;Klasse | |||
Die Struktur eines Objekts wird durch die Attribute (auch Eigenschaften) seiner Klassendefinition festgelegt. Das Verhalten des Objekts wird von den Methoden der Klasse bestimmt. Klassen können von anderen Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse die Datenstruktur (Attribute) und die Methoden von der vererbenden Klasse (Basisklasse). | |||
;Abstraktion | |||
Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offenlegen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. abstrakter Datentyp (ADT)). | |||
;Datenkapselung | |||
Als Datenkapselung bezeichnet man in der Programmierung das Verbergen von Implementierungsdetails. Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt statt dessen über definierte Schnittstellen. Objekte können den internen Zustand anderer Objekte nicht in unerwarteter Weise lesen oder ändern. Ein Objekt hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit dem Objekt interagiert werden kann. Dies verhindert das Umgehen von Invarianten des Programms. | |||
;Polymorphie | |||
Verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren. Wird die Zuordnung einer Nachricht zur Reaktion auf die Nachricht erst zur Laufzeit aufgelöst, dann wird dies auch späte Bindung genannt. | |||
;Feedback | |||
Verschiedene Objekte kommunizieren über ein Nachricht-Antwort-Mechanismus, der zu Veränderungen in den Objekten führt und neue Nachrichtenaufrufe erzeugt. Dafür steht die Kopplung als Index für den Grad des Feedback. | |||
;Vererbung | |||
Vererbung heißt vereinfacht, dass eine abgeleitete Klasse die Methoden und Objekte der Basisklasse ebenfalls besitzt, also „erbt“. Somit kann die abgeleitete Klasse auch darauf zugreifen. Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden. Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung. | |||
|Objektorientierte Programmierung|(Zusammenstellung 29.11.2006}} | |||
== Weblinks == | == Weblinks == |
Version vom 29. November 2006, 08:40 Uhr
Einstieg: Einfache Theorie der Objektorientierten Programmierung
Zunächst klären wir am Beispiel Vogel, was eine Klasse ist: Ähnlich wie in der Biologie gruppiert man in der OOP (Objektorientierten Programmierung) Objekte und fasst sie in Klassen zusammen.
Dabei stellt sich die Frage, was einen Vogel auszeichnet:
- Ein Vogel hat bestimmte Eigenschaften (oder Attribute). Er hat zum Beispiel eine bestimmte Farbe, ein Geschlecht und man kann seine Flügelspannweite messen.
- Ein Vogel kann bestimmte Dinge tun. Er kann etwa singen oder ein Ei legen. Das sind die so genannten Methoden (Operationen) des Vogels wie singe() oder legeEi().
Methoden teilt man in zwei Gruppen ein
- Es gibt zum einen beobachtende oder auch sondierende Methoden. Diese beantworten z.B. die Frage: Welche Farbe hast du? Im Programm werden sie gibFarbe() oder getFarbe() genannt.
- Zum anderen gibt es Methoden, die Eigenschaften ändern können (verändernde Methode). Ein Beispiel wäre setFarbe(“gruen“), welche die Farbe eines Objektes ändern könnte.
Aus der Klasse Vogel lassen sich konkrete Objekte bilden: z.B. vogel1, vogel2, vogel3. Jedes Objekt hat einen bestimmten Zustand. So kann z.B. vogel1 die Farbe gelb haben, weiblich sein und 40 cm Spannweite haben. der Zustand von vogel2 könnte sein: gelb, 30 cm Spannweite, männlich. Während die Klasse Vogel etwas abstraktes ist (eine Art Bauplan für Objekte) ist ein Objekt konkret.
- Nennen Sie weitere Eigenschaften und Methoden einer Klasse Vogel.
- Je nachdem, ob man für ein Zoogeschäft oder ein Lexikon ein Verwaltungsprogramm schreibt, bekommt eine Klasse Vogel ganz andere Eigenschaften. Nennen Sie Eigenschaften, die jeweils nur für einen der beiden Auftraggeber (Zoogeschäft, Lexikon) wichtig sind.
- Beschreiben Sie den Zustand des Objektes bluejay1, das den Vogel aus dem Bild zeigt.
- Nennen Sie Eigenschaften und Methoden eines Haushaltsgerätes (z.B. einer Uhr).
Quellen und Links
- Ausschnitt aus Kapitel 1 Java-Reader von Uli Pieper
- Genauere Einsteigererläuterung: Klassen und Objekte von Ulrich Helmich
- Warum OOP? Vorlage:Ll
Wissenschaftliche Herangehensweise
Das folgende Zitat eigenet sich, um einen Überblick über die OOP zu erlangen.
Die objektorientierte Programmierung, kurz OOP, ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma, welches Flexibilität und Wiederverwendbarkeit von Programmen fördert. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewendet werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, sodass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können. Im Gegensatz dazu beschreibt das vor der OOP vorherrschende Paradigma eine strikte Trennung von Funktionen (Programmcode) und Daten, dafür aber eine schwächere Strukturierung der Daten selbst. Befürworter der OOP vertreten die These, dass der OOP Ansatz für Computerneulinge leichter zu erlernen ist als bisherige Ansätze. Im Folgenden werden wichtige Begriffe der objektorientierten Programmierung kurz umrissen. Für nähere Details sei auf die jeweiligen Einzelabschnitte und -artikel verwiesen. Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden als Objekte bezeichnet. Die Konzeption dieser Objekte erfolgt dabei in der Regel auf Basis der folgenden Paradigmen:
Die Struktur eines Objekts wird durch die Attribute (auch Eigenschaften) seiner Klassendefinition festgelegt. Das Verhalten des Objekts wird von den Methoden der Klasse bestimmt. Klassen können von anderen Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse die Datenstruktur (Attribute) und die Methoden von der vererbenden Klasse (Basisklasse).
Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offenlegen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. abstrakter Datentyp (ADT)).
Als Datenkapselung bezeichnet man in der Programmierung das Verbergen von Implementierungsdetails. Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt statt dessen über definierte Schnittstellen. Objekte können den internen Zustand anderer Objekte nicht in unerwarteter Weise lesen oder ändern. Ein Objekt hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit dem Objekt interagiert werden kann. Dies verhindert das Umgehen von Invarianten des Programms.
Verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren. Wird die Zuordnung einer Nachricht zur Reaktion auf die Nachricht erst zur Laufzeit aufgelöst, dann wird dies auch späte Bindung genannt.
Verschiedene Objekte kommunizieren über ein Nachricht-Antwort-Mechanismus, der zu Veränderungen in den Objekten führt und neue Nachrichtenaufrufe erzeugt. Dafür steht die Kopplung als Index für den Grad des Feedback.
Vererbung heißt vereinfacht, dass eine abgeleitete Klasse die Methoden und Objekte der Basisklasse ebenfalls besitzt, also „erbt“. Somit kann die abgeleitete Klasse auch darauf zugreifen. Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden. Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung.
Programmierung Objektorientierte Programmierung, Wikipedia – Die freie Enzyklopädie, (Zusammenstellung 29.11.2006 - Der Text ist unter der Lizenz „Creative Commons Attribution/Share Alike“ verfügbar; zusätzliche Bedingungen können anwendbar sein. Siehe die Nutzungsbedingungen für Einzelheiten. In der Wikipedia ist eine Liste der Autoren verfügbar. |
Weblinks
- Einführung in die Objektorientierung im Informatik-Anfangsunterricht, 3. August 2005
- http://www.educeth.ch/informatik/javastep/oop/begriffe.html - OOP Begriffe (Bspl. in Java)
- Definitionen und Grundkonzepte (OSZ Handel I)
- Unterrichtsmaterialien zu OOA - OOD - OOP (OSZ Handel I)
- OOP mit DELPHI - Hinweise zur Implementierung (OSZ Handel I)
Siehe auch
- UML - Unified Modeling Language
- Programmiersprachen