Erste Schritte in Java

Werbung
Erste Schritte in Java
• Im einführenden Kapitel haben wir die Grundbegriffe der imperativen
Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt.
• In diesem Kapitel sehen wir uns an einem kleinen Beispiel wichtige Grundbegriffe
der objektorientierten Programmierung an.
• 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 irrelevanten
Bestandteile weggelassen.
• Das Ergebnis der Abstraktion ist ein Modell, das dem Computer in geeigneter
Form zur Bearbeitung übergeben wird.
• Diesen Aspekt sehen wir uns im nächsten Kapitel ausführlich an.
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
// Ist betrag positiv?
public void abheben(int betrag) {
stand = stand - betrag;
}
// Methode zum Abheben
// Ist betrag positiv?
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!
Wie schon erwähnt:
Abstraktion und Modellbildung sehen wir uns im nächsten Kapitel ausführlich an.
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 (Muster zur Herstellung gleichgestaltiger Dinge)
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.
• Es gibt evtl. auch Attribute und Methoden einer Klasse, die nicht an Objekte
gebunden sind. Sie werden statisch genannt.
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önnten – zumindest im Prinzip – beliebig viele Objekte angelegt
werden. Das kann man aber verhindern.
• 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. Applets werde nicht durch die
main-Methode gestartet. Sie können aus einer Html-Seite mit einem Web-Browser
aufgerufen werden. Applets können aber auch mit dem Programm appletviewer
von JDK gestartet werden. Dies sehen wir uns natürlich auch an.
2. Erste Schritte in Java
2-10
Regeln zur Code-Formatierung
Beispiele:
• 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.
Die Regeln für Ihre Hausaufgaben 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: hybrides Paradigma.
• Java 8 verbesserte auch etwas die Schritte zum funktionalen Paradigma.
Beispiel: Lambda-Ausdrücke.
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“.
Jetzt ist Oracle für Java zuständig.
2. Erste Schritte in Java
2-18
Entwicklung von Java
1992–1995
Januar 1996
Anfang 1997
Dezember 1998
Januar 1999
Mai 2000
Februar 2002
Ende 2004
Dezember 2006
Juli 2011
März 2014
Juli 2017 ???
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
Java Standard Edition 9
Die installierte Version kann mit java -version ermittelt werden.
2. Erste Schritte in Java
2-19
Einige Java-Konzepte
• strukturierte Fehlerbehandlung (Exception Handling, assertions),
• Nebenläufigkeit (Multithreading),
• Unterstützung von Applets,
• große Grafik- und Multimediafähigkeiten,
• Java 8: Etwas Funktionalität,
• umfangreiche Klassenbibliothek: API.
2. Erste Schritte in Java
2-20
Einige 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: Objektorientierung
• 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.
• Attribute und Methoden können statisch sein.
• Klassen lassen sich durch Pakete hierarchisch strukturieren.
• Mit Modifikatoren können Zugriffsrechte und andere Eigenschaften beeinflusst
werden.
2. Erste Schritte in Java
2-22
Was haben wir in der Einführung einführend gesehen?
• Intuitiver Algorithmusbegriff
• Paradigma: Formulierung von Algorithmen
• partielle/totale Korrektheit: Spezifikation, Verifikation
• Komplexität: Landau-Symbole
• Formaler Algorithmusbegriff: Berechenbarkeit, Entscheidbarkeit
• Datenstrukturen: Abstrakte Datentypen
• Entwurf von Algorithmen, Standardalgorithmen
• Abstraktion, Modellierung: Erstellung von Algorithmen
• Variationen des Algorithmusbegriffs
2. Erste Schritte in Java
2-23
Was haben wir in der Einführung einführend gesehen?
• Programm
• Programmiersprache: Lexik, Syntax, Semantik
• Paradigma: imperativ, funktional, oo, logisch, prozedural, deklarativ, hybrid
• Typsystem, Datenstrukturen
• Ausführung: Compiler, Interpreter, Mischverfahren
• Software: Systemsoftware, Anwendungssoftware, Softwarewerkzeuge
• Imperatives Beispielprogramm: Algorithmus von Euklid
• Objektorientiertes Beispielprogramm: Konto
• Sprachen der Informatik: GPL, DSL
2. Erste Schritte in Java
2-24
Warum haben wir so etwas in der Einführung gesehen?
Frage: Warum müssen in einführenden Veranstaltungen die grundlegenden
theoretischen Aspekte mit betrachtet werden? Gibt es dafür später keine
Spezialveranstaltungen?
Natürlich gibt es dafür Spezialveranstaltungen. Aber trotzdem erhält man die folgende
Antwort.
Inhaltliche Antwort von Didaktikern: Dinge, die immer zusammengehören, müssen bei
der Einführung zusammenvorgestellt werden. Sonst bleiben sie auf Dauer im Kopf
getrennt.
2. Erste Schritte in Java
2-25
Was gehört zusammen?
Programm
↔
↔
↔
↔
↔
↔
↔
Algorithmus
Algorithmus
Algorithmus
Algorithmus
Algorithmus
Algorithmus
...
↔
↔
↔
↔
↔
Korrektheit
Komplexität
Paradigma
Datenstrukturen
Abstraktion/Modellierung
Siehe Materialien: Algorithmen und Programme
2. Erste Schritte in Java
2-26
Herunterladen