26
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

Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Embed Size (px)

Citation preview

Page 1: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Erste Schritte in Java

• Im einführenden Kapitel haben wir die Grundbegriffe der imperativenProgrammierung an einem Beispiel (Algorithmus von Euklid) kennengelernt.

• In diesem Kapitel sehen wir uns an einem kleinen Beispiel wichtige Grundbegriffeder 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 zurKontostandsabfrage programmieren.

2. Erste Schritte in Java 2-1

Page 2: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Klassen- u. Objektdiagramm

Kontostand: intvoid einzahlen(int betrag)void abheben(int betrag)int abfrage()

kon1:Kontostand: int = 12

kon2:Kontostand: int = -5

2. Erste Schritte in Java 2-2

Page 3: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Abstraktion und Modellbildung

• Die Erstellung eines Algorithmus oder Programms erfordert die Abstraktion vonder Realität. Das heißt, es werden die zur Lösung des Problems irrelevantenBestandteile weggelassen.

• Das Ergebnis der Abstraktion ist ein Modell, das dem Computer in geeigneterForm zur Bearbeitung übergeben wird.

• Diesen Aspekt sehen wir uns im nächsten Kapitel ausführlich an.

2. Erste Schritte in Java 2-3

Page 4: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Die Klasse Kontopublic class Konto {

int stand = 0; // Attribut der Klassepublic void einzahlen(int betrag) { // Methode zum Einzahlen

stand = stand + betrag; // Ist betrag positiv?}

public void abheben(int betrag) { // Methode zum Abhebenstand = stand - betrag; // Ist betrag positiv?

}

public int abfrage() { // Methode zur Abfragereturn stand;

}}

2. Erste Schritte in Java 2-4

Page 5: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Die Klasse KontoTestpublic 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

Page 6: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 7: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Klassen und Objekte

• Unter einer Klasse versteht man die Zusammenfassung von Objekten gleicherStruktur 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 bearbeitetwerden können.

• Es ist guter Stil, aber nicht zwingend erforderlich, jede Klassendefinition in einereigenen 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 Objektegebunden sind. Sie werden statisch genannt.

2. Erste Schritte in Java 2-7

Page 8: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Methoden und Konstruktoren

• Methoden definieren das Verhalten der Objekte. Sie werden innerhalb einerKlassendefinition 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 Klassedeklariert und ihr mithilfe des new-Operators ein neu erzeugtes Objekt zugewiesenwerden. Es könnten – zumindest im Prinzip – beliebig viele Objekte angelegtwerden. Das kann man aber verhindern.

• Konstruktoren sind Methoden zum Erzeugen von Objekten einer Klasse. Siebesitzen den Namen der Klasse.

2. Erste Schritte in Java 2-8

Page 9: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Klassen- u. Objektdiagramm

KlassennameAttribut1. . .AttributnMethode1. . .Methodem

objektname:KlassennameAttribut1 = . . .. . .Attributn = . . .

2. Erste Schritte in Java 2-9

Page 10: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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 sonstigeHilfsprogramme 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 diemain-Methode gestartet. Sie können aus einer Html-Seite mit einem Web-Browseraufgerufen werden. Applets können aber auch mit dem Programm appletviewervon JDK gestartet werden. Dies sehen wir uns natürlich auch an.

2. Erste Schritte in Java 2-10

Page 11: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Regeln zur Code-FormatierungBeispiele:

• 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 miteinem Kleinbuchstaben. Setzen sich Namen aus mehr als einem Wort zusammen,fängt jedes weitere mit einem Großbuchstaben an. Paketnamen bestehen nur ausKleinbuchstaben.

Die Regeln für Ihre Hausaufgaben stellen wir in den Übungen vor.

2. Erste Schritte in Java 2-11

Page 12: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

javadoc – Der Java-Dokumentationsgenerator

• Mit dem Programm javadoc können aus einem Java-Programm Html-Seitengeneriert werden. Dabei wird spezieller Programmkommentar zur Dokumentationverwendet.

• javadoc Konto.java KontoTest.javajavadoc *.java

• javadoc -version -author *.java

2. Erste Schritte in Java 2-12

Page 13: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 14: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 15: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Dokumentationskommentare

/*** Diese Methode liefert den Kontostand.** @return Kontostand**/public int abfrage() {

return stand;}

2. Erste Schritte in Java 2-15

Page 16: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Der Algorithmus von Euklidclass Euklid {

static int ggt(int a, int b) { // eine statische Methodeint r; // eine lokale Variablewhile (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

Page 17: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Objektorientierte Programmiersprachen

• Programmiersprachen, die in erster Linie für die Formulierung objektorientierterAlgorithmen 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 – auchimperative Elemente: hybrides Paradigma.

• Java 8 verbesserte auch etwas die Schritte zum funktionalen Paradigma.Beispiel: Lambda-Ausdrücke.

2. Erste Schritte in Java 2-17

Page 18: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 19: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Entwicklung von Java1992–1995 Java-Vorläufer, zuerst unter dem Namen „Oak“.

Oak: Object Application Kernel, Eiche.Neu: Applets (little applications)

Januar 1996 JDK 1.0 (Java Development Kit)Anfang 1997 JDK 1.1

Dezember 1998 JDK 1.2, wurdeJanuar 1999 umbenannt in „Java 2 Plattform“

Mai 2000 Java 2, JDK 1.3Februar 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“März 2014 Java Standard Edition 8

Juli 2017 ??? Java Standard Edition 9

Die installierte Version kann mit java -version ermittelt werden.

2. Erste Schritte in Java 2-19

Page 20: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 21: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 22: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Zusammenfassung: Objektorientierung

• Eine Anwendung besteht aus einer Menge von Klassen. Anwendungen müssen einemain-Methode enthalten.

• Eine Klasse beschreibt Objekte. Die Objekte modellieren reale oder abstrakteGegenstände. Von einer Klasse können beliebig viele Objekte erzeugt werden. EinObjekt 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 beeinflusstwerden.

2. Erste Schritte in Java 2-22

Page 23: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 24: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

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

Page 25: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Warum haben wir so etwas in der Einführung gesehen?

Frage: Warum müssen in einführenden Veranstaltungen die grundlegendentheoretischen Aspekte mit betrachtet werden? Gibt es dafür später keineSpezialveranstaltungen?

Natürlich gibt es dafür Spezialveranstaltungen. Aber trotzdem erhält man die folgendeAntwort.

Inhaltliche Antwort von Didaktikern: Dinge, die immer zusammengehören, müssen beider Einführung zusammenvorgestellt werden. Sonst bleiben sie auf Dauer im Kopfgetrennt.

2. Erste Schritte in Java 2-25

Page 26: Erste Schritte in Java - web.ifis.cs.tu-bs.deweb.ifis.cs.tu-bs.de/ips/struckmann/prog17/schritte.pdf · ErsteSchritteinJava • ImeinführendenKapitelhabenwirdieGrundbegriffederimperativen

Was gehört zusammen?

Programm ↔ Algorithmus↔ Algorithmus ↔ Korrektheit↔ Algorithmus ↔ Komplexität↔ Algorithmus ↔ Paradigma↔ Algorithmus ↔ Datenstrukturen↔ Algorithmus ↔ Abstraktion/Modellierung↔ . . .

Siehe Materialien: Algorithmen und Programme

2. Erste Schritte in Java 2-26