Erste Schritte in Java • In diesem Kapitel werden wir an einem kleinen Beispiel wichtige Grundbegriffe der objektorientierten Programmierung kennenlernen. • Wir wollen ein Programm schreiben, das in der Lage ist, Bankkonten zu verwalten. • Ein Konto wird durch einen Wert, den Kontostand, gekennzeichnet. • Außerdem werden wir Methoden zum Einzahlen und Abheben sowie zur Kontostandsabfrage programmieren. 2. Erste Schritte in Java 2-1 Klassen- u. Objektdiagramm Konto stand: int void einzahlen(int betrag) void abheben(int betrag) int abfrage() kon1:Konto kon2:Konto stand: int = 12 stand: int = -5 2. Erste Schritte in Java 2-2 Abstraktion und Modellbildung • Die Erstellung eines Algorithmus oder Programms erfordert die Abstraktion von der Realität. Das heißt, es werden die zur Lösung des Problems uninteressanten Bestandteile weggelassen. • Das Ergebnis der Abstraktion ist ein Modell, das dem Computer in geeigneter Form zur Bearbeitung übergeben wird. 2. Erste Schritte in Java 2-3 Die Klasse Konto public class Konto { int stand = 0; public void einzahlen(int betrag) { stand = stand + betrag; } // Attribut der Klasse // Methode zum Einzahlen public void abheben(int betrag) { stand = stand - betrag; } // Methode zum Abheben public int abfrage() { return stand; } // Methode zur Abfrage } 2. Erste Schritte in Java 2-4 Die Klasse KontoTest public class KontoTest { public static void main(String[] args) { Konto kon1 = new Konto(); Konto kon2 = new Konto(); kon2.abheben(5); kon1.einzahlen(12); kon2.einzahlen(2); kon1.einzahlen(18); kon2.einzahlen(8); kon1.abheben(15); System.out.println("Kontostand kon1: " + kon1.abfrage()); System.out.println("Kontostand kon2: " + kon2.abfrage()); } } 2. Erste Schritte in Java 2-5 Abstraktion und Modellbildung Nennen Sie einige Aspekte, die bei dieser Modellbildung nicht berücksichtigt wurden! 2. Erste Schritte in Java 2-6 Klassen und Objekte • Unter einer Klasse versteht man die Zusammenfassung von Objekten gleicher Struktur und gleichen Verhaltens. Die Struktur der Objekte wird durch Attribute, ihr Verhalten durch Methoden definiert. • Eine Klasse kann als Schablone gesehen werden, die beschreibt, wie Objekte aufgebaut und wie sie bearbeitet werden können. • Es ist guter Stil, aber nicht zwingend erforderlich, jede Klassendefinition in einer eigenen Datei zu speichern. Die Datei trägt den Namen der Klasse: Konto.java, KontoTest.java. 2. Erste Schritte in Java 2-7 Methoden und Konstruktoren • Methoden definieren das Verhalten der Objekte. Sie werden innerhalb einer Klassendefinition angelegt und haben auf alle Attribute des Objekts Zugriff. • Methoden können Parameter besitzen und einen Rückgabewert liefern. • Um von einer Klasse ein Objekt anzulegen, kann eine Variable vom Typ der Klasse deklariert und ihr mithilfe des new-Operators ein neu erzeugtes Objekt zugewiesen werden. Es können – zumindest im Prinzip – beliebig viele Objekte angelegt werden. • Konstruktoren sind Methoden zum Erzeugen von Objekten einer Klasse. Sie besitzen den Namen der Klasse. 2. Erste Schritte in Java 2-8 Klassen- u. Objektdiagramm Klassenname Attribut1 ... Attributn Methode1 ... Methodem 2. Erste Schritte in Java objektname:Klassenname Attribut1 = . . . ... Attributn = . . . 2-9 Applikationen und die main-Methode • Eine Applikation oder auch Anwendung ist ein eigenständiges Programm, das zu seiner Ausführung nur den Java-Interpreter, aber keinen Browser oder sonstige Hilfsprogramme benötigt. • Eine Klasse wird durch eine main-Methode zu einer Applikation. public static void main(String[] args) { ... } • Applets sind ebenfalls lauffähige Java-Programme, werden aber aus einer Html-Seite heraus aufgerufen und benötigen zur Ausführung einen Web-Browser. Applets werde nicht durch die main-Methode gestartet. 2. Erste Schritte in Java 2-10 Regeln zur Code-Formatierung • Untergeordnete Teile werden hier um zwei Leerzeichen eingerückt. In den Hausaufgaben sollen sie die Teile um vier Leerzeichen einrücken. • Es steht niemals mehr als ein Befehl in einer Zeile. • Sich öffnende geschweifte Klammern stehen am Ende des vorangehenden Befehls, sich schließende in einer eigenen Zeile. • Klassennamen beginnen mit einem Groß-, Variablen- und Methodennamen mit einem Kleinbuchstaben. Setzen sich Namen aus mehr als einem Wort zusammen, fängt jedes weitere mit einem Großbuchstaben an. Paketnamen bestehen nur aus Kleinbuchstaben. • Details zur Code-Formatierung stellen wir in den Übungen vor. 2. Erste Schritte in Java 2-11 javadoc – Der Java-Dokumentationsgenerator • Mit dem Programm javadoc können aus einem Java-Programm Html-Seiten generiert werden. Dabei wird spezieller Programmkommentar zur Dokumentation verwendet. • javadoc Konto.java KontoTest.java javadoc *.java • javadoc -version -author *.java 2. Erste Schritte in Java 2-12 Dokumentationskommentare /** * Diese Klasse realisert Konten. Jedes Konto wird * durch den aktuellen Kontostand dargestellt. Außerdem * werden Methoden zum Einzahlen und Abheben sowie * zur Kontostandsabfrage zur Verfügung gestellt. * * @author Werner Struckmann * @version 1.0 vom 17. Oktober 1702 * */ public class Konto { ... } 2. Erste Schritte in Java 2-13 Dokumentationskommentare /** * Diese Methode erhöht den Betrag auf dem * Konto um den Wert des Parameters. * * @param betrag eingezahlter Betrag * */ public void einzahlen(int betrag) { stand = stand + betrag; } 2. Erste Schritte in Java 2-14 Dokumentationskommentare /** * Diese Methode liefert den Kontostand. * * @return Kontostand * */ public int abfrage() { return stand; } 2. Erste Schritte in Java 2-15 Der Algorithmus von Euklid class Euklid { static int ggt(int a, int b) { // eine statische Methode int r; // eine lokale Variable while (b != 0) { r = a % b; a = b; b = r; } return a; } public static void main(String[] args) { System.out.println("ggt(36,52) = " + ggt(36,52)); } } 2. Erste Schritte in Java 2-16 Objektorientierte Programmiersprachen • Programmiersprachen, die in erster Linie für die Formulierung objektorientierter Algorithmen gedacht sind, heißen objektorientiert. • Objektorientierte Programmiersprachen sind beispielsweise Simula (1967), Smalltalk, C++, Oberon, Java, C# und Eiffel. • Java enthält – im Gegensatz zu einigen anderen objektorientierten Sprachen – auch imperative Elemente. 2. Erste Schritte in Java 2-17 Sprachmerkmale Java wurde vollständig neu entworfen. Die Syntax lehnt sich an C und C++ an. Laut Sun ist Java eine einfache, objektorientierte, verteilte, interpretierte, robuste, sichere, architekturneutrale, portable, performante, nebenläufige, dynamische Programmiersprache, kurz die „Eier legende Wollmilchsau“. 2. Erste Schritte in Java 2-18 Entwicklung von Java 1992–1995 Jan. Anfang Dez. Jan. Mai Februar Ende Dezember Juli Erwartung: Sommer 1996 1997 1998 1999 2000 2002 2004 2006 2011 2013 Java-Vorläufer, zuerst unter dem Namen „Oak“. Oak: Object Application Kernel, Eiche. Neu: Applets (little applications) JDK 1.0 (Java Development Kit) JDK 1.1 JDK 1.2, wurde umbenannt in „Java 2 Plattform“ Java 2, JDK 1.3 Java 2, JDK 1.4 Java 2, JDK 5.0 (interne Versionsnummer: 1.5.0) „Tiger“ Java Standard Edition 6 „Mustang“ Java Standard Edition 7 „Dolphin“ Java Standard Edition 8 Die installierte Version kann mit java -version ermittelt werden. 2. Erste Schritte in Java 2-19 Einige Java-Konzepte • Nebenläufigkeit (Multithreading), • strukturierte Fehlerbehandlung (Exception Handling, assertions), • Unterstützung von Applets, • große Grafik- und Multimediafähigkeiten, • umfangreiche Klassenbibliothek. 2. Erste Schritte in Java 2-20 Die Programme des JDK • javac – der Compiler, • java – der Interpreter, • javadoc – der Dokumentationsgenerator, • jdb – der Debugger, • jar – das Archivierungswerkzeug, • appletviewer – der Appletviewer, • javap – der Disassembler. 2. Erste Schritte in Java 2-21 Zusammenfassung • Eine Anwendung besteht aus einer Menge von Klassen. Anwendungen müssen eine main-Methode enthalten. • Eine Klasse beschreibt Objekte. Die Objekte modellieren reale oder abstrakte Gegenstände. Von einer Klasse können beliebig viele Objekte erzeugt werden. Ein Objekt ist also eine konkrete Ausprägung einer Klasse. • Die Objekte werden durch Attribute beschrieben und mit Methoden bearbeitet. • Klassen lassen sich durch Pakete hierarchisch strukturieren. • Mit Modifikatoren können Zugriffsrechte und andere Eigenschaften beeinflusst werden. 2. Erste Schritte in Java 2-22