LOG IN Leitseite

[2000]

 


[LOG IN]


LOG IN: 17 (1997) Heft 5

JAVA -- Stimulans für den Informatikunterricht

von Rüdeger Baumann

 

In dem Zuge, wie Computer allenthalben Verwendung finden,insbesondere vernetzt sind, werden sie zum Bestandteil der Kultur.

N. Nakedey

 

JAVA ist eine Programmiersprache, die es ermöglicht, das World Wide Web (kurz: Web) von einem statischen Informationsspeicher in eine lebhafte Anwendungswelt zu verwandeln. Neue Protokolle, neue Datentypen und die Möglichkeiten objektorientierter Programmierung machen JAVA zu einem Werkzeug kreativer Gestaltung. JAVA erlaubt nicht nur – wie bisher – Daten, sondern auch Programme aus dem Web zu laden, die lokal ausgeführt werden können. JAVA-Programme können auf unterschiedlichen Computersystemen ausgeführt werden, ohne daß sie speziell angepaßt werden müssen.

Nach Einschätzung vieler Experten löst JAVA – zusammen mit anderen Internet-Technologien – die zweite informatische Revolution nach Einführung der Personal-Computer (PCs) aus. Wir befinden uns heute, u.a. auch angeregt durch die Initiative „Schulen ans Netz“, in einer neuen Pionierphase der Informatik in der Schule, an deren Ende der Informatikunterricht ein grundlegend verändertes Gesicht zeigen wird. In diesem Beitrag soll versucht werden, die Lehrkräfte auf diese Entwicklung aufmerksam zu machen und ihnen – hinsichtlich der Internet-Programmierung – erste fachlichliche Informationen zu vermitteln.

 

Die Idee der Vernetzung

Der Informatik liegen drei fundamentale Ideen zugrunde: die Idee der Formalisierung, der Automatisierung und der Vernetzung (Baumann, 21996, Kapitel 5). Bisher stützte sich der Informatikunterricht im wesentlichen auf die ersten beiden Ideen; nunmehr ist die Zeit reif für die dritte.
Rechnen und Denken lassen sich als Kommunikation verstehen; der Geist ist im Gehirn netzförmig verteilt, und aus vergleichsweise simplen Bestandteilen können durch Interaktion hochkomplexe Verhaltensweisen entstehen: Das ist die Idee der Vernetzung. Sie hat vielerlei Gesichter: vom neuronalen Netz und der Society of Mind (Minsky) über semantische Netze und Hypertext bis zum erdumspannenden Internet.

„Many visions of humanity working in groups suggest the analogy that people within the Web are organized like neurons in a brain. They ask the question as to whether, when connected appropriately (with the right rules of interconnection) the human race, with the entirety of its computers, will in fact be capable of significantly greater things than today. As Marvin Minsky looks at the mind as society, we should also consider viewing society as a mind“ (Berners-Lee, 1997).
„Computer sind neue Medien mit gekapselten Rechnerfunktionen. Als solche formen sie eine industrielle Massentechnik, welche die Praxis menschlicher Wahrnehmung neu bestimmt. Diese Anwendungen der Informatik machen sie im umfassenden Sinne zu einer Kulturtechnik. Weder das Leitbild ,Automat` noch das Leitbild ,Werkzeug` kann diese kulturellen Wirkungen als vernetzte Elemente in einer Medienwelt hinreichen erklären“ (Coy, 1995, S.37; vgl. auch Brauer/Brauer, 1995, S.28).

Diese Sicht wird der Informatik in der Schule neue Impulse verleihen und ihre Etablierung als reguläres und gleichberechtigtes Unterrichtsfach weiter voranbringen. Nur die Informatik mit ihrem theoretischen Begriffsgerüst und den Methoden zur Bewältigung von Komplexität wird in der Lage sein, im Dschungel der Medien und Netze geistige Orientierung zu geben. Übrigens dürfte damit auch endgültig klargestellt sein, wie absurd Bemühungen sind, die Informatik in andere Unterrichtsfächer (z.B. die Mathematik) „integrieren“ zu wollen – und es zeigt sich, daß ein ausschließlich algorithmenorientierter Informatikunterricht zum Scheitern verurteilt ist.


JAVA-Entstehungsgeschichte

Die Entwicklung von JAVA begann ums Jahr 1990 bei der Firma Sun Microsystems in Mountain View (Kalifornien). Damals beschäftigte sich ein Team unter Leitung von James Gosling mit der Entwicklung einer neuen Programmiersprache für den Einsatz im Bereich der Steuerungstechnik. Man wollte eine Sprache schaffen, die klein, schnell und in jedem gebräuchlichen und zukünftigen elektronischen Steuergerät gleichermaßen einsetzbar sein sollte. Die systemspezifische Compilierung des Quelltextes sollte bei dem – unter dem Codename Oak („Eiche“) laufenden – Projekt entfallen.

Das Projekt Oak änderte jedoch nach kurzer Zeit seine Zielrichtung und seinen Namen. Letzterer war schon anderweitig vergeben, und das Aufgabengebiet für die neue Programmiersprache wurde durch die rasche Entwicklung in der Medienlandschaft um weitere Punkte ergänzt. Das neue Einsatzgebiet war nun die Haushaltgeräte-Elektronik: Man wollte Wege aufzeigen, wie Telefonen, Fernsehgeräten, Videorekordern und Waschmaschinen Leben einzuhauchen sei. Im Vordergrund stand dabei die Benutzerführung, d.h. die Interaktion des Benutzers mit dem Gerät. Auch einen griffigen Namen ließen die Autoren sich einfallen: So stimulierend wie das braune Getränk im Stammcafé sollte ihr Softwareprodukt sein. (In der amerikanischen Umgangssprache steht „JAVA“ einfach für „Kaffee“.)
Nach kurzer Zeit stellte das Gosling-Team einen ersten Prototypen vor. Es handelte sich um einen tragbaren Computer mit der Bezeichnung *7 (star seven), der über eine grafische Benutzeroberfläche gesteuert wurde. Kleine animierte Figuren, unter anderem das heutige JAVA-Maskottchen („Tumbling Duke“), begleiteten den Benutzer bei der Bedienung des Geräts. Bald darauf wurde das Konzept für JAVA erneut erweitert: „Video on Demand“ sollte die zukünftige Innovation fürs heimische Wohnzimmer werden, und JAVA sollte die Interaktion mit dem Konsumenten ermöglichen. Die Programme hätten problemlos übers Fernseh-Kabelnetz übertragen werden können, und die dabei im Einsatz befindlichen verschiedenen Hardware-Plattformen wären für JAVA kein Problem gewesen.

Nachdem sich jedoch dafür kein rechter Bedarf eingestellt hatte, suchte man (im Frühjahr 1994) eine neue Verwendung für das überflüssig gewordene Produkt – und fand sie im Internet. JAVA bot die Chance, Programme für den Einsatz im Internet zu entwickeln, da JAVAs Portabilität die Möglichkeit bot, die Anwendungen ohne explizite Kompilierung auf jeder Hardware-Plattform und jedem Betriebssystem (Windows, UNIX, MacOS oder Solaris) laufen zu lassen. Im Mai 1995 stellte Sun eine erste Beta-Version des vollständig in JAVA entwickelten Browsers HotJAVA in San Francisco der Öffentlichkeit vor.

Der Erfolg ließ nicht lange auf sich warten. Innerhalb kürzester Zeit erklärten verschiedene Softwareproduzenten ihre Unterstützung für JAVA. Der wichtigste Partner zu Beginn war wohl die Firma Netscape, die mit ihrem Navigator eine Vormachtstellung im Internet innehatte. Das inzwischen in Palo Alto (Kalifornien) arbeitende Entwicklungsteam legte in der Rekordzeit von weniger als einem Jahr (im Frühjahr 1996) eine erste Beta-Version des JAVADeveloper’sKit (JDK) vor: Dabei handelte es sich zwar nicht um eine grafische Entwicklungsoberfläche, sondern um einen kommandogesteuerten Compiler (und Interpreter). Mittlerweile sind Versionen für Windows95, Windows NT und viele andere Systeme verfügbar.

JAVA ist ein Kind des Internet: Alles, was man zum Programmieren benötigt, steht im Netz zum Abholen bereit. Diskussionen, neue Programme, Konstruktionsfehler, Sicherheitslücken und deren Behebung werden ebenfalls über das Netz verbreitet. Weil es so einfach ist, an das Material zu gelangen, haben bereits sehr viele mit dem System gespielt. Wahrscheinlich ist die Software dadurch in wenigen Monaten intensiver getestet worden als andere Programmiersprachen in mehreren Jahren. Schließlich erfährt man – aufgrund der im Internet üblichen Geschwätzigkeit – Dinge, die sonst über den kleinen Kreis der Eingeweihten nicht hinausgedrungen wären. So bekennen die Autoren von JAVA freimütig, daß sie unter anderem auch die Absicht verfolgten, die Marktstrategie eines Quasi-Monopolisten wie Microsoft zu unterlaufen. Ironischerweise kann dies nur gelingen, wenn JAVA selbst eine monopolartige Stellung auf dem Softwaremarkt erlangt (Pöppe, 1996).


Eigenschaften

Im offiziellen Referenzwerk wird JAVA als universelle, Nebenläufigkeit ermöglichende, klassenbasierte, objektorientierte Programmiersprache gekennzeichnet, deren Entwurf so wenig Implementierungsabhängigkeit wie möglich enthält. „JAVA erlaubt Anwendungsentwicklern, ein Programm einmal zu schreiben und es dann beliebig im Internet ablaufen zu lassen“ (Gosling u.a., 1997, Vorwort).

Portierbarkeit

Unter Portierbarkeit (oder: Portabilität, Plattformunabhängigkeit) versteht man die Eigenschaft einer Programmiersprache, ohne große Änderungen auf unterschiedlichen Rechenanlagen ausgeführt werden zu können. Zu diesem Zweck wurde bei der JAVA-Entwicklung auf ein bewährtes Prinzip zurückgegriffen, das beispielsweise bereits im UCSD-PASCAL (P-Code) verwendet worden war: Man definiert eine gedachte Maschine (hier: die sogenannte virtuelle JAVA-Maschine) und implementiert jeweils einen auf die Hardware-Plattformen zugeschnittenen Interpreter.

Ein Quelltext wird zunächst vom JAVA-Compiler in die Sprache der virtuellen Maschine, den sogenannten Bytecode, übersetzt (und gegebenenfalls übers Netz versandt). Auf dem lokalen Rechner (mit seinem speziellen Betriebssystem und Prozessor) wird dann dieser Bytecode zur Laufzeit in die Maschinensprache des Prozessors umgesetzt und ausgeführt. Ein solcher Bytecode-Interpreter ist Bestandteil aller JAVA-fähigen Browser (wie z.B. HotJAVA von Sun, Navigator ab Version 2.0 von Netscape oder Internet-Explorer von Microsoft). Ein in JAVA programmiertes Applet (Internet-Programm, s. unten) ist damit auf allen gängigen 32-Bit-Plattformen und Betriebssystemen einsatzfähig.

Typisierung und Objektorientierung

JAVA ist eine streng typisierte Sprache. Das heißt: jede Variable und jeder Ausdruck besitzt einen zur Übersetzungszeit bekannten Typ. Die Werte, die eine Variable oder ein Ausdruck annehmen kann, werden durch den jeweiligen Datentyp vorgeschrieben; er schränkt die Operationen auf diese Werte ein und bestimmt damit deren Bedeutung. Strenge Typisierung hilft bei der Aufdeckung von Fehlern zur Übersetzungszeit.

Es gibt in JAVA zweierlei Typen: einfache Typen und Verweistypen. Die einfachen Typen sind numerische Typen (ganze Zahlen und Gleitkommazahlen), Zeichen und Wahrheitswerte. Die Verweistypen sind Klassentypen, Schnittstellentypen und Typen von Reihungen (arrays). Ein Objekt in JAVA ist ein dynamisch erzeugtes Exemplar eines Klassentyps oder eine dynamisch erzeugte Reihung.

JAVA ist konzeptionell mit anderen Hochsprachen (wie z.B. EIFFEL, C++ oder OBERON) verwandt. Die JAVA-Klassen sind Bestandteil des o.a. JAVADeveloper’sKit (JDK), das zusätzlich über Klassen verfügt, die Vernetzungsfunktionen, Internet-Protokolle und Benutzeroberflächen unterstützen.

Nebenläufigkeit

Zwei Prozesse („Programmfäden“, threads) heißen nebenläufig, wenn sie unabhängig voneinander – parallel oder in einer beliebigen sequentiellen Reihenfolge – bearbeitet werden können. Gerade in Netzen sollten viele Prozesse gleichzeitig laufen: Damit kann sich ein Prozeß um die Aktualisierung der Bildschirmausgabe kümmern, während ein anderer mit einem Server kommuniziert und wieder einer Datenstrukturen manipuliert. Dies setzt voraus, daß die bekannten Methoden zur Interprozeß-Kommunikation und Synchronisation implementiert sind.

Sicherheit

Ein per Internet übermitteltes Programm muß hohen Sicherheitsansprüchen genügen: Die Anwender müssen darauf vertrauen können, daß es weder ihre Daten ruiniert noch sie anderen preisgibt oder gar einen Virus in ihr Gerät einschleust. Gosling und Mitarbeiter modifizierten daher ihre Programmiersprache mit dem Ziel, das Schreiben schädlicher Programme unmöglich zu machen. Ihre Idee war, daß jede potentiell gefährliche Anwendung einem Syntaxfehler gleichkommen sollte. Somit könnte bereits eine formale Überprüfung auf syntaktische Korrektheit die Unschädlichkeit eines Programms erweisen. Dazu mußte das übliche Sortiment zulässiger Befehle auf eines aus garantiert harmlosen reduziert werden.

Einfachheit

Die JAVA-Syntax lehnt sich eng an die Programmiersprache C++ an. Das dort nur als Möglichkeit enthaltene objektorientierte Programmieren ist allerdings obligatorisch (siehe oben); einige Sprachelemente, die diesem Prinzip zuwiderlaufen und ohnehin eine Quelle schwer zu findender Fehler bilden, wurden gestrichen. Die wichtigsten davon sind: Typedefs, Defines und der Präprozessor; Strukturen und Unions; Funktionen außerhalb von Klassen; multiple Vererbung; Goto-Anweisungen; automatische Typumwandlungen; Zeiger und explizite Speicherverwaltung. Anstelle von Speicherverwaltungsfunktionen bietet JAVA eine eingebaute Speicherbereinigung (garbage collector), wie man sie z.B. von LISP her kennt. Der Programmierer braucht sich damit gar nicht um die Speicherverwaltung zu kümmern und hat auch keine Möglichkeit dazu. Statt seiner kümmert das System sich automatisch um die Anforderung und Freigabe von Speicherplatz.
C und C++ galten, gerade wegen der o.a. Mängel, für den Informatikunterricht bisher als völlig undiskutabel. Leider haben sich einige absurde Sprachelemente in JAVA erhalten (z.B. die Bezeichnung für Wertzuweisung bzw. Gleichheit). Das sind Eigenschaften, die den Unterricht schwer belasten und an das didaktisch-methodische Geschick der Lehrenden höchste Ansprüche stellen werden.

HotJAVA

Während JAVA eine Programmiersprache und damit unabhängig von Anwendungen und auch vom Internet selbst ist, ist HotJAVA ein Web-Browser, der selbst in JAVA geschrieben ist und damit auch die Ausführung von JAVA-Applets (siehe unten) erlaubt.

JAVAScript

Ursprünglich wurde JAVAScript von der Firma Netscape als Makrosprache (Erweiterung von HTML zur grafischen Aufwertung) für deren Browser entwickelt. Im Zuge der Kooperation mit Sun (siehe oben) wurde die Syntax an JAVA angelehnt. Der Sprachumfang ist geringer, aber immerhin handelt es sich um eine universelle Programmiersprache.

Für zahlreiche Aufgaben, die eine Netzapplikation benötigt, ist nur wenig Rechenmacht bzw. Intelligenz erforderlich – z.B. zur Überprüfung einer Eingabe auf Plausibilität. Derartige Eingabeprüfungen können mittels JAVAScript auf der Kundenseite der Verbindung direkt im Browser vorgenommen werden, d.h. sie brauchen nicht – wie bisher bei den in HTML ausgeführten Formularen – an den Anbieter (Server) geschickt zu werden: Erst wenn der Eingabesatz komplett ist, werden die Daten an den Server verschickt. Damit werden Server und Netz entlastet.

Ein JAVAScript-Programm wird nicht kompiliert, sondern direkt als ASCII-Text in das HTML-Dokument eingefügt. Jeder, der diese Datei abruft, hat den Quelltext zur Verfügung und kann ihn lesen. Aus didaktischer Sicht ist dies natürlich ein Vorteil. Es gibt Hinweise darauf, daß sich JAVAScript als Ergänzung bzw. Erweiterung der Einführung in die Textverarbeitung bereits im Rahmen der Informationstechnischen Grundbildung (SekundarstufeI) eignen könnte.


Systemanforderungen

Die folgenden Beispiele wurden mit der Entwicklungsumgebung VisualJ++ von Microsoft erstellt, die den „Schulen im Netz“ kostenfrei zur Verfügung steht (sonst 79,- DM, z.B. mit dem Buch von Davis). Ebenso gut geeignet sind etwa die Werkzeuge SymantecCafé oder JAVAWorkshop (siehe Piemont, 1996). Der Betrieb von VisualJ++ (Version 1.1) setzt folgendes voraus: PC mit 486er, besser Pentium-Prozessor, mindestens 8 Mbyte Hauptspeicher (empfohlen: 12 Mbyte), Betriebssystem Windows95 oder NT4.0. Auf der Festplatte werden für die „typische“ Installation 43 Mbyte benötigt. Dem Buch von Dobereit (1996) ist eine CD-ROM mit etwas bescheideneren, für die Schule jedoch ausreichenden, Werkzeugen beigelegt. Da JAVA als normale Programmiersprache verwendet werden kann, ist ein Internet-Anschluß zunächst nicht nötig. In der Schule kann daher die Frage der Netzanbindung hiervon unabhängig behandelt werden.


Erste Schritte

Mit JAVA lassen sich zwei unterschiedliche Programmtypen erstellen: Anwendungen und Applets. Eine Anwendung (engl.: application) ist ein eigenständiges Programm, das in der Sprache JAVA geschrieben ist und vom JAVA-Compiler bzw. Interpreter übersetzt und ausgeführt wird. Ein Applet (Diminutiv von „Application“) dagegen ist stets in eine HTML-Seite eingebettet und kann daher nur von einem JAVA-fähigen Browser ausgeführt werden.

Der vorliegende Beitrag befaßt sich zunächst mit eigenständigen JAVA-Anwendungen, da sie syntaktisch und in der Handhabung einfacher sind. Wir scheuen uns nicht, die Erkundung von JAVA mit einem trivialen „Wegwerf-Programm“ zu beginnen; trotz seiner armseligen Funktionalität verlangt es einen erheblichen Erklärungs- und Bedienungsaufwand. Im Lauf der didaktischen Entwicklung werden sich später bessere Einstiegsbeispiele bzw. Projekte (vgl. Hermes, 1996) ergeben – aber soweit sind wir derzeit noch nicht.

  • Beispiel 1: Neben einem Begrüßungstext sollen die Zahlen von 1 bis 10 000 ausgegeben werden.

Mit dem Texteditor wird folgender Programmtext erzeugt:

class Zaehler1 {
    public static void main (String args[]) {
        System.out.println(“Guten Tag, Java-Freunde!”);
        for (int i = 1; i <= 10000; i++) {
            System.out.print(i + “ ”);}
        }
    }

Der Text wird zunächst unter dem Dateinamen Zaehler1.java abgespeichert. Es ist wichtig, daß der Name der Datei mit dem Namen der Klasse übereinstimmt und daß die Erweiterung java lautet. Nachdem das Programm kompiliert und das Kommando Execute aktiviert wurde, erscheinen die Zahlen auf dem Bildschirm.

Eine vorläufige Erläuterung, die nicht auf zu viele – jetzt noch nicht verständliche – Einzelheiten eingeht, könnte wie folgt lauten: Im Programm wird eine Klasse mit dem Namen Zaehler1 vereinbart. So wie in PASCAL zu Beginn eines Programms das Schlüsselwort PROGRAM steht, heißt es hier eben class. Da JAVA mit dem Unicode-Zeichensatz (siehe Witten, 1996) arbeitet, dürfen in Bezeichnern sogar Umlaute und nationale Sonderzeichen verwendet werden.

Die Klasse Zaehler1 enthält eine einzige Operation namens main (das „Hauptprogramm“). Sie liefert keinen Ergebniswert und wird daher als void (d.h. leer) gekennzeichnet; sie ist klassenbezogen (static) und öffentlich (public), d.h. es kann von überall her auf sie zugegriffen werden. Der einzige Parameter von main ist eine Reihung (array, erkennbar an den eckigen Klammern []), die aus Zeichenketten (string) besteht und den Namen args (d.h. Argumente) trägt. Es handelt sich um sogenannte Programmargumente, welche beim Programmaufruf vom Benutzer an das Programm übergeben werden können.

Der – zwischen geschweiften Klammern {} stehende – Anweisungsteil der Operation main besteht einfach darin, eine Zeichenkette mit anschließendem Zeilenvorschub auf dem Bildschirm auszugeben (println). Es folgt – in leicht verständlicher Syntax – eine Zählschleife. Die geschweiften Klammern können sich PASCAL-Programmierer als BEGIN und END vorstellen; sie begrenzen den jeweiligen Klassen- oder Methodenrumpf.

Auf diese Weise kann allerdings noch nicht einmal der einfachste Dialog programmiert werden. Was sich in BASIC in vier und in PASCAL in acht Programmzeilen erledigen läßt, erfordert hier einen gewaltigen programmtechnischen Aufwand (siehe unten).


Ablaufsteuerung

Die Sprachelemente zur Ablaufsteuerung (Sequenz, Verzweigung, Schleife) ähneln denen prozeduraler Programmiersprachen

  • Beispiel 2: Ein Programm ist zu entwickeln, das die Fibonacci-Zahlen 1, 1, 2, 3, 5, 8, ... bis zu einer gegebenen Grenze aufzählt.

Der Programmtext lautet:

class Fibonacci {
    public static void main (String args[]) {
        int a = 1;
        int b = 1;
        System.out.println(a);
        while (b < 20) {
            System.out.println(b);
            b = a + b;
            a = b – a;}
        }
}

An diesem Beispiel wird unter anderem deutlich, daß für die prozedurale Programmierung immer der gleiche Programmrahmen verwendet werden kann, der bei Akzeptanz der o.a. Konventionen ohne die Begrifflichkeit der objektorientierten Programmierung auskommt.


Objektorientierte Programmierung

In einem vernünftig konzipierten Informatikunterricht wird möglichst früh in objektorientiertes Denken und Modellieren eingeführt. So kann bereits im Anfangsunterricht – etwa innerhalb eines Kurses „Informationssysteme und Datenbanken“ (vgl. Baumann, 1996, 349 ff) – folgende Terminologie eingeführt werden (siehe Goos, 1996, 146ff.):

  • Jedes Objekt repräsentiert einen Gegenstand (Person, Ding, Sachverhalt, Ereignis) der realen Welt.

  • Ein Attribut ist ein charakteristisches Merkmal des Objekts; es wird durch einen Namen und einen Wertebereich (= Menge der Attributwerte) spezifiziert. Ein Attributwert ist der dem Objekt durch ein Attribut zugeordnete Wert, der einer Eigenschaft des Objekts entspricht.

  • Der Zustand eines Objekts ist durch die aktuellen Werte aller seiner Attribute bestimmt; in diesem Sinne lassen sich die Attribute als Zustandsvariablen auffassen.

  • Ein Objekt kann an seiner Schnittstelle eine Nachricht empfangen und daraufhin eine gewisse Aktion ausführen. Diese Aktion heißt Dienst; die Handlungsvorschrift zum Erbringen des Dienstes heißt Methode.

  • Das Objekt ist eingekapselt in dem Sinne, daß sein Zustand ausschließlich über Nachrichten ermittelt oder geändert werden kann.

Greift man nun zu den im Buchhandel angebotenen JAVA-Einführungen (oder z.B. zu Publikationen über C++), so stellt sich rasch der Eindruck begrifflicher Unklarheit und Verwirrung ein. Dazu einige Beispiele:

  • In Arnold (1996) wird „member“ mit „Attribut“ übersetzt, Dobereit spricht von „Mitglied“ und Middendorf von „Element“; korrekt wäre „Bestandteil“ oder „Komponente“.

  • Davis (1996) spricht von Datenelementen und Elementfunktionen.

  • Dobereit nennt „Attribut“, was bei Arnold „Datenfeld“ heißt.

  • Dobereit spricht von „Typ“ anstelle von „Klasse“.

  • Alle nennen fälschlich „Instanz“, was im Deutschen „Exemplar“ heißen muß.

Auf keinem Gebiet herrschen so unklare Vorstellungen und wird soviel Unsinn produziert wie auf dem der objektorientierten Programmierung. LOG-IN-Leser finden bei Eirund (1993) eine vergleichsweise klare Darstellung, während der Aufsatz von Hermes (1996) zur Begrifflichkeit leider nichts beiträgt. Eine klare und konsequente Sprechweise ist aber unabdingbare Voraussetzung zum Verstehen dieses nicht einfachen Themas.

Jedes JAVA-Programm ist aus Klassen aufgebaut. Aus einer Klassenvereinbarung lassen sich beliebige Objekte (Exemplare dieser Klasse) erzeugen. Eine Klasse enthält zweierlei Komponenten, nämlich Attribute und Methoden. Ein Attribut (Datenfeld) beschreibt die entweder zur Klasse selbst oder zu den Objekten der Klasse gehörenden Daten. Sein aktueller Wert (Attributwert) kennzeichnet den aktuellen Zustand des Objekts bzw. der Klasse. Methoden dagegen sind die Anweisungen, die auf den Datenfeldern operieren, um den jeweiligen Zustand mitzuteilen oder zu modifizieren. Kurz: Attribute beschreiben die Eigenschaften bzw. den Zustand eines Objekt, die Methoden sein Verhalten.

Ein wichtiges Prinzip der objektorientierten Programmierung, nämlich die Fähigkeit der Objekte, ihren Zustand selbst zu verwalten, wird durch Datenkapselung unterstützt, die dafür sorgt, daß auf die Attributwerte eines Objekts von außen (lesend oder schreibend) nicht zugegriffen werden kann. Es gibt nun drei Zugriffsmöglichkeiten auf die Klassen oder deren Komponenten.

  • Ist eine Klasse als public deklariert, so kann jedes JAVA-Programm, das Zugriff auf das jeweilige Paket (Klassenbibliothek) hat, darauf zugreifen. Andernfalls kann nur von innerhalb des Pakets auf die Klasse zugegriffen werden. Beispiel:

class Punkt {
    public int x, y, farbe;
    public void moveTo (int neuX, int neuY) {
        x = neuX;
        y = neuY}
    public void moveRel (int dx, int dy) {
        x = x + dx;
        y = x + dy}
    }

Eine Klassenvereinbarung besteht aus dem Kopf und dem Rumpf der Klasse. Ersterer wird vom Schlüsselwort class eingeleitet; es folgt der Name der Klasse (hier: Punkt). Der Klassenkopf kann sogenannte Klassenmodifikatoren (public, abstract oder final) enthalten.

In geschweiften Klammern folgt der Klassenrumpf (engl.: class body), der aus der Vereinbarung von Attributen und Methoden besteht. Im obigen Beispiel gibt es drei Attribute x, y und farbe vom Typ int (Ganzzahl) sowie zwei Methoden moveTo und MoveRel. Als public deklarierte Attribute werden von deren Unterklassen außerhalb des Paketes (Klassenbibliothek), in dem die betreffende Klasse vereinbart ist, ererbt. Als private deklarierte Attribute dagegen werden nicht von deren Unterklassen ererbt.

Eine Methodenvereinbarung besteht aus Kopf (Signatur) und Rumpf. Ersterer enthält den Namen der Methode (hier: moveRel). Davor steht der Ergebnistyp; liefert die Methode kein Ergebnis, ist er void (d.h. leer). Hinter dem Namen folgt (zwischen runden Klammern) die Parameterliste; ggf. die leere Parameterliste (). Der Kopf einer Methode kann zusätzlich Methodenmodifikatoren enthalten, und zwar einen der Zugriffsregler (public, protected oder private) sowie abstract und static.
In geschweiften Klammern folgt der Methodenrumpf (engl.: method body), also deren Anweisungsteil.


Abschließende Bemerkungen

„Fraglos müssen wir uns der objektorientierten Programmierung im Unterricht widmen, auch wenn die Curricula dieser Entwicklung bisher kaum Rechnung tragen. Auf uns selbst angewiesen, bleibt wohl nichts anderes übrig, als die aktuelle Literatur zu sichten und eine Linie, einen roten Faden, in das Thema zu bringen“ (Hermes, 1996, S.29). Dies gilt natürlich nicht nur für die objektorientierte Programmierung.

Es konnte hier nur ein allererster und höchst unvollkommener Einblick geboten werden. Folgendes dürfte jedoch vielleicht klargeworden sein:

  • Programmierung in JAVA bietet Gelegenheit, Konzepte und Methoden der Informatik im Unterricht zu realisieren, welche die Didaktik in den letzten Jahren als wichtig herausgearbeitet hat, die aber bisher nicht oder nur unvollkommen realisiert werden konnten. Dazu gehören Objektorientierung, Nebenläufigkeit, Verwendung von Bausteinen, Programmierung im Großen.

  • Im zukünftigen Informatikunterricht werden Algorithmik und prozedurale Programmierung (z.B. in Pascal) in der SekundarstufeI angesiedelt werden; Systementwicklung (z.B. mittels JAVA) dagegen in der SekundarstufeII.

In vorstehendem Beitrag sollten die Informatik Lehrenden dazu angeregt werden, sich mit den genannten neuen Ideen auseinanderzusetzen und deren didaktisches Potential zu erkunden. Selbst wenn JAVA sich in dieser Form nicht durchsetzen sollte, werden die grundlegende Ideen, auf der das Sprachkonzept von JAVA beruht, Bestand haben. Sie wird die Informatik in der Schule gewaltig stimulieren und eine neue Phase des Informatikunterrichts einleiten. Streifzüge durchs Schulnetz zeigen, daß etliche Lehrer schon über Kenntnisse dieser neuen Werkzeuge verfügen. Sie seien aufgefordert, ihre Erfahrungen mitzuteilen, um eine Diskussion um deren didaktischen Möglichkeiten in Gang zu setzen.

Zur Einführung scheint das Buch von Dobereit (1996) gut geeignet; brauchbar ist auch Davis (1996); das Buch enthält eine CD-Rom mit VisualJ++ und dem InternetExplorer von Microsoft. Das m.E. mit Abstand beste JAVA-Lehrbuch stammt von N. Hendrich (1997).

Rüdeger BaumannGymnasium ErnestinumBurgstraße 2129221 Celle

E-Mail: baumann-celle@t-online.de


Links

Das folgende Forum wird von den JAVA-Erfindern betrieben und enthält jede Menge allgemeine Informationen zu JAVA (JDK, HotJAVA, JAVA Workshop und die zugehörigen Dokumentation direkt von Sun):

http://www.javasoft.com

Gamelan ist die Sammelstelle für Informationen zu JAVA. Die Betreiber warten eine Liste von Verweisen zu anderen JAVA-Web-Sites und liefern eine Übersicht über die wichtigsten JAVA-Ressourcen im Netz:

http://www.gamelan.com

Dieses Forum wird von den Entwicklern von Visual J++ betreut und ist die beste Quelle für Informationen zu Visual J++:

http://www.microsoft.com/visualj/


Literatur

  • Arnold, K.; Gosling, J.: Java. Die Programmiersprache. Bonn: Addison-Wesley, 1996.

  • Baufeldt, K.; Mäurers, R.: Java. Düsseldorf: Data-Becker, 1996.

  • Baumann, R.: Didaktik der Informatik. Stuttgart: Klett 21996.

  • Berners-Lee, T.: World-Wide Computer. In: Comm. ACM 40 (1997), H. 2, S. 57-58.

  • Brauer, W.; Brauer, U.: Informatik – das neue Paradigma. In: LOG IN, 15 (1995), H. 4, S. 25-29.

  • Coy, W.: Automat – Werkzeug – Medium. In: Informatik-Spektrum, 18 (1995), H. 1, S. 31-38.

  • Davis, S. R.: Java jetzt! Unterschleißheim: Microsoft Press, 1996.

  • Doberenz, W.: Java. München: Hanser, 1996.

  • Eirund, H.: Objektorientierte Programmierung. In: LOG IN, 13 (1993), H. 4, S. 40-48.

  • Goos, G.: Vorlesungen über Informatik. Band 2: Objektorientiertes Programmieren und Algorithmen. Berlin u.a.: Springer, 1996.

  • Gosling, J. u.a.: Java. Die Sprachspezifikation. Bonn: Addison-Wesley, 1997.

  • Gudenberg, J.W. von: Objektorientiert Programmieren von Anfang an – Eine Einführung mit C++. Mannheim: BI-Wissenschaftsverlag, 1993.

  • Hendrich, N.: Java für Fortgeschrittene. Berlin u.a.: Springer, 1997.

    Hermes, A.: OOP im Unterricht. In: LOG IN, 16 (1996), H. 4, S. 29-33.

  • Jamsa, K. u.a.: Web-Programmierung. München: Franzis, 1996.

  • Kind, A.: Bytecode-Interpretierung. In: Informatik-Spektrum 20 (1997), H.2, S. 109-110.

  • Middendorf, S. u.a.: Java – Programmierhandbuch und Referenz. Heidelberg: dPunkt, 1996.

  • Piemont, C.: Kaffee mit Schuß – Entwicklungswerkzeuge für Java-Profis. In: c’t, 15 (1997), H. 3, S. 306-321.

  • Pöppe, C.: Blitzkarriere im Worldwide Web – die Programmiersprache Java. In: Spektrum der Wissenschaft, 19 (1996), H. 7, S. 17-22.

  • Witten, H.: Wege aus dem 8-Bit-Chaos, Teil 8. In: LOG IN, 16 (1996), H. 5/6, S. 80-84.