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.
Klassen- u. Objektdiagramm
Konto stand: int
void einzahlen(int betrag) void abheben(int betrag) int abfrage()
kon1:Konto stand: int = 12
kon2:Konto stand: int = -5
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.
Die Klasse Konto
public class Konto {
int stand = 0; // Attribut der Klasse
public void einzahlen(int betrag) { // Methode zum Einzahlen stand = stand + betrag;
}
public void abheben(int betrag) { // Methode zum Abheben stand = stand - betrag;
}
public int abfrage() { // Methode zur Abfrage return stand;
}
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());
Abstraktion und Modellbildung
Nennen Sie einige Aspekte, die bei dieser Modellbildung nicht berücksichtigt wurden!
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.
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.
Klassen- u. Objektdiagramm
Klassenname Attribut1
. . .
Attributn Methode1 . . .
Methodem
objektname:Klassenname Attribut1 = . . .
. . .
Attributn = . . .
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.
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.
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
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 { ...
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;
}
Dokumentationskommentare
/**
* Diese Methode liefert den Kontostand.
*
* @return Kontostand
*
*/
public int abfrage() { return stand;
}
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));
}
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.
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“.
Entwicklung von Java
1992–1995 Java-Vorläufer, zuerst unter dem Namen „Oak“.
Oak: Object Application Kernel, Eiche.
Neu: Applets (little applications) Jan. 1996 JDK 1.0 (Java Development Kit) Anfang 1997 JDK 1.1
Dez. 1998 JDK 1.2, wurde
Jan. 1999 umbenannt in „Java 2 Plattform“
Mai 2000 Java 2, JDK 1.3 Februar 2002 Java 2, JDK 1.4
Ende 2004 Java 2, JDK 5.0 (interne Versionsnummer: 1.5.0) „Tiger“
Dezember 2006 Java Standard Edition 6 „Mustang“
Juli 2011 Java Standard Edition 7 „Dolphin“
Erwartung: Sommer 2013 Java Standard Edition 8
Einige Java-Konzepte
• Nebenläufigkeit (Multithreading),
• strukturierte Fehlerbehandlung (Exception Handling, assertions),
• Unterstützung von Applets,
• große Grafik- und Multimediafähigkeiten,
• umfangreiche Klassenbibliothek.
Die Programme des JDK
• javac – der Compiler,
• java – der Interpreter,
• javadoc – der Dokumentationsgenerator,
• jdb – der Debugger,
• jar – das Archivierungswerkzeug,
• appletviewer – der Appletviewer,
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.