Hallo Welt (4)

Java-Vokabeln

Die traditionelle Vorstellung ist: Ein Programm ist eine Folge von Befehlen, mit denen man Daten bearbeitet.

Bei Java ist - wie in anderen objektorientierten Sprachen - die Trennung zwischen Programm und Daten aufgehoben. Im Mittelpunkt steht das Objekt. Ein Objekt kann alles sein: ein Haus, ein Mensch, eine Maschine oder auch ein Computerprogramm, etwa der  höchst individuell konfigurierte Windows-Desktop auf dem Computer vor Ihnen.

Da man bei individueller Betrachtung aller einzelnen Objekte schnell den Überblick verliert, fasst man sie in Klassen zusammen. Das Objekt RÜD MB-312 gehört zur S-Klasse. Diese ist eine Unterklasse aller Daimler-PKWs, diese eine spezielle Klasse aller Autos, die wiederum eine bestimmte Klasse von Fortbewegungsmitteln darstellen. Fritzchen Meier teilt (als Schüler betrachtet) etliche Eigenschaften mit seinen Mitschülern 8aR. Das Bild links oben auf dieser Seite gehört mathematisch betrachtet zur Klasse der Rechtecke, die wiederum eine Unterklasse der Parallelogramme darstellt, und diese eine der Vierecke. Man könnte also sagen: Eine Klasse beschreibt die gemeinsamen Merkmale einer Reihe von Objekten.

Anders herum ausgedrückt heißt das: Eine Klasse ist ein Bauplan, eine Vorschrift, aus der sich Objekte erzeugen lassen. Mit dem Bauplan eines Rechtecks lassen sich Rechtecke konstruieren, mit dem Bauplan einer S-Klasse Autos. Und aus der Klasse HalloWelt produziert der Java-Compiler konkrete Objekte in Form von lauffähigen HalloWelt-Programmen. Ein Java-Programmierer programmiert neue Klassen, und er bedient sich dabei der Klassen des JDK und eigener Klassen, die er vielleicht bei früherer Gelegenheit programmiert hat. Heißt es in der Mathematik: "Alles ist Zahl", so kann man in der Java-Denkweise sagen: "Alles ist Klasse". Ein komplexes Programm besteht aus einer Vielzahl von Klassen, und die "main class" (Startklasse) zeichnet sich nur dadurch aus, dass sie dem Ganzen den Namen gibt.

Sehen wir uns die Klasse HalloWelt noch einmal Zeile für Zeile genauer an:


class HalloWelt {

  public static void main(String[] args) {

    System.out.println("Hallo Welt!");

  }

}


Normalerweise besitzt eine Klasse die Möglichkeit, bestimmte variable Eigenschaften ihrer Objekte festzulegen. Bei der S-Klasse ist dies etwa die Farbe, beim Rechteck ist dies die Länge und die Breite. Diese Möglichkeit wurde in der Klasse HalloWelt verschenkt.

Darüber hinaus können Objekte über Methoden verfügen. Das sind Anweisungen, auf die sie reagieren. Ein Auto besitzt Methoden zum Bremsen, zum Blinken oder zum Scheibenwischen, ein Rechteck-Objekt besitzt vielleicht die Fähigkeit, sich auf eine angegebene Stelle des Bildschirms zu zeichnen. Objekte der Klasse HalloWelt besitzen nur eine einzige Methode mit dem Namen main(). Jedes Programm, das ohne Hilfe etwa eines anderen Programms als normale Anwendung ausgeführt werden soll, benötigt die Startmethode main(). Von dieser Methode aus werden andere Objekte erzeugt und aufgerufen.

Die Methode main() ist immer als public static void erklärt:

public: Die Methode kann von außerhalb der Klasse aufgerufen werden, in unserem Fall also von der Konsole aus,
static
: Die Methode gehört zur Klasse als Ganzem, sie bezieht sich zu auf ein bestimmtes Objekt dieser Klasse,
void
: Die Methode gibt keinen Wert zurück, sie ist also im klassischen Jargon eine "Prozedur" und keine "Funktion".

Namen von Methoden enden stets mit einem Paar runder Klammern. Die Methode main() kann bei Bedarf mit Parametern  aufgerufen werden, die mit dem Programmaufruf zusammen eingegeben werden und dem Programm zur Verfügung gestellt werden.

An den eckigen Klammern erkennt man, dass gleich ein ganzes Feld von Strings eingegeben werden kann.
Das werden wir demnächst einmal ausprobieren. In unserem Fall wird die Methode ohne Parameter aufgerufen.

Die einzige Anweisung der vorliegenden main()-Methode besteht im Aufruf der Methode println(). Sie schreibt ihre Parameter (die Wörter "Hallo Welt"), die man ihr übergibt, in das Feld out der Klasse System des JDK, von wo aus sie gedruckt werden.

Im Java-Code sind Zeilenwechsel normalerweise ohne Bedeutung.
Dass ein Befehl zu Ende ist und der nächste beginnt, erkennt der Compiler an einem Semikolon.

In der Klasse HalloWelt finden sich zwei Paare geschweifter Klammern. Diese begrenzen einen Anweisungsblock. Bei uns gehört der äußere Block zur Klasse HalloWelt und der innere Block zur Methode main(). Der Programmtext wird nach jeder öffnenden Klammer um zwei Positionen weiter eingerückt, mit der schließenden Klammer rückt er dann wieder um zwei Positionen nach links.

Schließlich noch ein Wort zur Namensgebung: In Java erkennt man die Namen von Klassen daran, dass sie mit einem Großbuchstaben beginnen. Die Namen von Variablen und Methoden beginnen dagegen immer mit Kleinbuchstaben. Namen dürfen keine Leerzeichen enthalten,  Zusammensetzungen bildet man mit großen Buchstaben im Inneren:
    HalloWelt ist also der Name einer Klasse,
    halloWelt der Name einer Variablen (mehr darüber später) und
    halloWelt() der Name einer Methode.

Java überwacht zwar nicht die Einhaltung dieser Konvention, es verlangt aber konsistente Schreibung und wird die Klasse HalloWelt nicht finden, wenn Sie sie mit java Hallowelt aufrufen wollen.

Uff, das war eine ganze Menge neuer Vokabeln. Sie müssen sie nicht alle gleich verstehen. Vielleicht kommen Sie später gelegentlich einmal zu dieser Seite zurück. Jetzt ist es Zeit für ein paar einfache Experimente.

Aufgaben:

  1. Kopieren Sie das Programm noch einmal in den Java-Editor und führen es aus.
    Ersetzen Sie das Wort "Welt" durch Ihren Vornamen.
    Ändern Sie den Namen der Klasse in Hallo2.
    Speichern Sie die Klasse in der veränderten Form ab . Der Dateiname lautet jetzt Hallo2.java.
    Starten Sie das Programm erneut.
  2. Schließen Sie alle Fenster im Java-Editor.
    Schreiben Sie ein Programm auf, das auf dem Bildschirm den Satz "Ich habs geschafft." ausgibt.
    Versuchen Sie weder Programmteile zu kopieren noch irgendwo nachzuschlagen.

Wenn Sie mit Aufgabe 2 fertig sind, verraten wir Ihnen zur Belohnung, dass Sie mit einem Klick auf den Java-Editor anweisen können, den kompletten Programmrahmen für ein Konsolenprogramm automatisch zu erstellen. Auch die Anweisung System.out.println(); braucht man nicht immer wieder zu tippen. Sie lässt sich fix mit der Tastenkombination <Strg>u eingeben.