„Hi, Amigo!“

„Hi, Ellie!“

„Heute werde ich dir viel über Klassen in Java erzählen.“

Erklärung Nr. 1. Ich beginne mit einer Analogie. Alle Dinge in der materiellen Welt bestehen aus Atomen. Es gibt verschiedene Arten von Atomen: Wasserstoff, Sauerstoff, Eisen, Uran… Verbindungen dieser Atome bilden verschiedene Moleküle, Substanzen und Objekte.“

„Diese Atome haben verschiedene innere Strukturen, wie Elektronen und einen Kern aus Protonen und Neutronen.“

„Ja, ich weiß ein bisschen was über die Struktur von Atomen. Ich bin schließlich ein Roboter!“

„Die Welt von Java ist ähnlich aufgebaut. Programme bestehen aus verschiedenen Arten von Objekten (Klassen). Verschiedene Klassen wiederum enthalten unterschiedliche innere Strukturen (Variablen und Methoden).“

„Wenn wir ein Programm als Ganzes betrachten, dann sind seine Grundbausteine Objekte. Klassen sind die Arten dieser Bausteine. Mit anderen Worten: Verschiedene Arten von Bausteinen sind Objekte verschiedener Klassen.

„Ich glaube, das verstehe ich.“

Erklärung Nr. 2. Wenn wir eine neue Objektart benötigen, erstellen wir eine neue Klasse und definieren das Verhalten ihrer inneren Objekte.

„Das klingt etwas zu allgemein. Es scheint klar zu sein, aber du hast nichts Konkretes gesagt.“

„In Bezug auf die innere Struktur besteht eine Klasse aus Methoden, die etwas tun, und Variablen, die von den Methoden zum Speichern von Daten verwendet werden.

„Also könnte man auch einfacher sagen, dass eine Klasse eine Reihe von Methoden ist?“

„Fast. Genauer gesagt ist eine Klasse eine Gruppe von verwandten Methoden und gemeinsamen Variablen, die von diesen Methoden verwendet werden, um verschiedene Werte zu speichern.“

„Ach so. Um eine neue Klasse zu erstellen, müssen wir zuerst diese Methoden schreiben…“

„Ja. Und wir müssen außerdem entscheiden, welche Variablen verschiedene Methoden gemeinsam nutzen sollen. Wir ziehen diese Variablen aus den Methoden heraus und setzen sie in die Klasse, d.h. wir verwandeln lokale Variablen in Instanzvariablen (Member-Variablen).“

„Grundsätzlich wird eine Klasse wie folgt erstellt:

1. Die Programmiererin entscheidet, welche anderen Objekte sie benötigt.

2. Die Programmiererin unterteilt diese Objekte in verschiedene Typen, je nachdem, was sie tun sollen.

3. Die Programmiererin schreibt für jeden Typ eine eigene Klasse.

4. In einer Klasse deklariert sie die benötigten Methoden und Variablen.

5. In jeder Methode schreibt sie Befehle, damit die Methode das tut, was sie tun soll.

6. Die Klasse ist bereit. Jetzt kannst du Objekte dieser Klasse anlegen.“

„Cool! Was für ein interessantes Muster! Das darf ich nicht vergessen.“

„Merke es dir gut. Es wird sehr nützlich sein. Die Programmierphilosophie, nach der ein Programm in Objekte unterteilt wird, wird als objektorientierte Programmierung (OOP) bezeichnet.“

„Java ist ein klassisches Beispiel für eine OOP-Sprache: In Java ist alles ein Objekt.“

„Das Erlernen von Java besteht aus zwei wesentlichen Aufgaben: lernen, wie man eigene Klassen schreibt, und lernen, wie man die Klassen anderer Leute benutzt. Heute beginnen wir mit dem einfacheren. Wir werden lernen, wie man die einfachsten Klassen schreibt, und natürlich, wie man Objekte dieser Klassen erstellt. Objekte werden auch oft als „Instanzen“ einer Klasse bezeichnet. Das sind Synonyme; beide Ausdrücke sind korrekt.“

„Alles klar.“

„Zusammenfassend können wir sagen, dass eine Klasse ein Mini-Programm ist: ein paar Daten sowie Funktionen, die diese Daten nutzen, um etwas zu tun. Klassen werden verwendet, um Instanzen von Klassen zu erzeugen, die auch als Objekte bezeichnet werden.

„Wenn du ein Objekt erstellen willst, schreibe ‚new class_name()‘ in den Code. Hier ein paar Beispiele:“

Beispiele
Cat cat = new Cat();
Reader reader = new BufferedReader(new InputStreamReader(System.in));
InputStream is = new FileInputStream(path);

„Ein Objekt hat zwei interessante Eigenschaften:“

Erstens: Jedes Objekt speichert seine eigene Kopie der Instanzvariablen. Das bedeutet, wenn die Instanzvariablen x und y in einer Klasse deklariert wurden und 10 Objekte dieser Klasse angelegt wurden, dann besitzt jedes Objekt seine eigenen Variablen. Das Verändern der Variablen in einem Objekt hat keinen Einfluss auf die Variablen in einem anderen Objekt.

Zweitens: Beim Erstellen von Objekten kannst du verschiedene Parameter übergeben. Diese Werte werden dann zur Initialisierung des Objekts verwendet. Das ist ein bisschen wie bei der Benennung eines Neugeborenen. Viele Klassen setzen solche Parameter voraus, wenn du Instanzen (Objekte) der Klasse anlegen möchtest.

„Das verstehe ich. Was hast du über Instanzvariablen gesagt?“

„Jedes Objekt besitzt seine eigenen Daten. Das sind die Instanzvariablen.“

Java-Code Bildschirmausgabe:
Cat cat1 = new Cat();
cat1.name =  "Oscar";

Cat cat2 = new Cat();
cat2.name = "Smudge";

System.out.println(cat1.name);
System.out.println(cat2.name);
Oscar
Mailo