HS: Fachdidaktik Informatik Sommersemester 2002
Dozent: S. Spolwig
Referent: G. König
21.05.2002
Objektorientierte
Programmierung (OOP)
Bei Computerprogrammen im Sinn der bereits vorgestellten Programmierstile handelte es sich um die Vorstellung als Listen von Anweisungen, die dem Computer mitteilen, was er zu tun hat (imperativ-prozedural); oder eine Menge von kleinen Programmen, die auf bestimmte Ereignisse, die der Benutzer auslöst, reagieren (funktional-applikativ); oder um eine isolierte Welt, bestehend aus Fakten und Regeln (prädikativ). Alle Ansätze haben Modellierung gemein. Um ein Problem zu lösen, wird versucht die Realität in fassbare Lösungsschritte, beherrschbare Algorithmen zu zerlegen oder einen Ausschnitt der Welt zu modellieren.
Diesem Grundprinzip, der Abbildung der uns umgebenden Realität, kommt der objektorientierte Programmierstil durch seine Grundidee sehr nah..
„Organisieren Sie Ihre Programme auf eine Art, die die Art widerspiegelt, mit der Objekte in der realen Welt organisiert sind“
Wie also funktioniert OOP grundsätzlich?
Wie Lego oder ein Computer oder ein Betrieb oder...
Dahinter steckt die Idee Computerprogramme anders zu strukturieren. Im Mittelpunkt stehen Komponenten mit Datenstrukturen und die zur Lösung Ihrer Aufgaben nötigen Algorithmen und die Interaktionen zwischen diesen Komponenten.
Elemente um objektorientiert zu programmieren:
Klassen – Abstraktion
Eine Klasse ist eine Vorlage, die zur Erzeugung vieler Objekte mit gleichen Eigenschaften und Methoden verwendet wird. Diese beinhaltet Variablen zur Beschreibung des Objektes und Methoden um das Verhalten zu steuern.
Objekte (Instanzen) – Modularität
Ein Objekt ist ein abgeschlossenes Element eines Computerprogramms, die Instanz einer Klasse (abgeleitet). Es ist dafür ausgelegt, bestimmte Aufgaben zu erfüllen. Alle Objekte können auf eine definierte Art in einem Programm zusammenarbeiten. Sie haben Zugriff auf die Methoden ihrer Klassen.
Methoden – Kapselung
Erzeugen, Entfernen eines Objektes durch Konstruktoren und Zugriff auf die Attribute eines Objektes
Statische Methoden – immer denselben Code und dieselben Methoden
Virtuelle Methoden – können in abgeleiteten Klassen überschrieben werden
Verfahren um objektorientiert zu programmieren:
Vererbung – Hierarchie
Vererbung ist ein Mechanismus, der es einer Klasse (Subklasse) ermöglicht, all ihre Verhaltensweisen und Attribute von einer anderen Klasse (Superklasse) zu erben.
Überschreiben
Überschreiben von Methoden einer Superklasse durch verwenden der gleichen Parameter in einer Subklasse. Überladen,
Botschaften
Eine Message ist ein Auftrag oder eine Anfrage von einem Objekt an ein anderes Objekt, um eine Dienstleistung zu erbringen.
Polymorphie
Dieselbe Botschaft kann an unterschiedliche Objekte verschiedener Klassen gesendet werden, wobei die Objekte selbst wissen, wie sie sie auszuführen haben.
Schnittstellen
Ist eine Sammlung von Methoden, die gemeinsam genutzte Verhaltensweisen beinhalten, die benannt aber nicht implementiert sind. So können Klassen neben ihrem geerbten noch zusätzliches Verhalten aufzeigen..
Aufgabe des Programmierers ist es also eine Klasse zu erstellen, die die Objekte der Standardklassen oder neuer Klassen erzeugt und deren Interaktionen koordiniert. Dafür sind Klassenbibliotheken vorhanden und können neu erstellt werden. So ist die Wiederverwendbarkeit garantiert.
Das Gerüst des Systems bilden Objekte und Objekttypen, die Eigenschaften und eigene Operationen besitzen. Diese stehen miteinander in Verbindung und können sich gegenseitig Aufträge zusenden. Jedes Objekt erledigt damit einen Teil der Aufgaben für den es verantwortlich ist. Das Zusammenwirken aller beteiligten Objekte löst die Gesamtaufgabe.
Bei OOP handelt es sich um eine sehr komplexe Abbildung der Realität, wie man sie als Einzelperson sicherlich nie wahrnehmen würde. Insofern kann ich mir die Überforderung von Schülern gut vorstellen. Andererseits besteht die Möglichkeit zu erörtern wie Prozesse um einen herum auch Außerhalb unserer subjektiven Wahrnehmung ablaufen und Problemlösungsstrategien funktionieren.
Die Benutzung von Klassenbibliotheken ist eine große Errungenschaft der objektorientierten Programmierung. Der Wiederverwendbarkeit von eigenen und vorgegebenen Klassen steht so nichts im Wege. Das ist eine hervorragende Sache für die Motivation der Schüler, wenn sie nicht mehr endlose bekannte Quelltexte für den Mülleimer produzieren müssen. Es bedarf aber einer aufmerksamen Archivierung und einer eindeutigen Dokumentation, um in der Breite, wie auch der Tiefe der Bibliotheken, die Übersicht nicht zu verlieren.
Dies sind nur zwei Aspekte.
Ich glaube um OOP befriedigend vermitteln zu können braucht man weit mehr Zeit als der Rahmenplan zur Verfügung stellt. Zusätzlich gibt es die anderen natürlichen Barrieren im Schulbetrieb, über die wir aber schon zum Ende fast jeden Seminars diskutierten.
Das ist aber der ganz normale Kampf gegen die Widrigkeiten im Schulalltag. Und so sollten wir schon versuchen dieses Konzept zu vermitteln, steckt doch so viel Lebensweisheit drin.
In sehr enger Anlehnung an
Laura Lemay, Rogers Cadenhead; Java2, Markt und Technik Verlag, 1999
und der Internetseite des OSZHandel; OOP Autor S. Spolwig