Ch. Wolff Digitale Informationsverarbeitung, Kap. 261 Entwicklung von Java zForschungsprojekt zur Entwicklung einer Programmiersprache für vernetzte und.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
Einführung in die Programmierung Zusammenfassung
der Universität Oldenburg
Verteilte Software - Java - Prozedurale Programmierung 1
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Java und Eclipse.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Variablenkonzept Klassisch, in Java Basistyp
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP 5.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
PI Burgenland Java und JavaScript 1. Teil
Mittwoch Informatik II, 1. Teil
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Datenbanken
C++ FÜR cOMPUTERSPIELENTWICKLER
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
Implementieren von Klassen
 Präsentation transkript:

Ch. Wolff Digitale Informationsverarbeitung, Kap. 261 Entwicklung von Java zForschungsprojekt zur Entwicklung einer Programmiersprache für vernetzte und eingebettete Anwendungen (OAK) zkonzeptuelle Basis: OOP-Sprachen (C++, SmallTalk, Eiffel) zJava Development Kit 1.2: ca vordefinierte Klassen zJDK 1.0: 1995, 1.1: 1996, 1.2: 1999 (Java 2-Plattform) zkiller application: Java Applets im WWW zNachteile höherer Programmiersprachen: yHardwareinkompatibiliät, mangelnde Portabilität yunzureichende oder nicht implementierte Standards yBedeutung des Internet über den akademischen Bereich hinaus

Ch. Wolff Digitale Informationsverarbeitung, Kap. 262 Grundkonzepte zEinfachheit zObjektorientierung zRobustheit zPortabilität und Architekturneutralität: yplattformneutraler Bytecode yvirtuelle Java-Maschine (JVM) als Interpreter auf jeder Plattform zInterpretierte Sprache zMultithreading (nebenläufige Programmierung als genuines Sprachkonstrukt) zLeistungsfähigkeit (?) zautomatische Speicherverwaltung zSicherheit

Ch. Wolff Digitale Informationsverarbeitung, Kap. 263 Einfachheit zWesentlicher Anspruch: Einfachheit verglichen mit den Nachteilen von C++. zReduzierte Sprachdefinition gegenüber C++, typische Charakteristika von C++ fehlen zEinfache Migration, da syntaktisch eng an C++ angelehnt: class HelloWorld { public static void main(String args[]) { System.out.println(Hello, world!"); } zDeklaration der Klasse HelloWorld zVerwenden einer Methode main(), die wiederum eine vordefinierte Methode der System-Klasse (Eigenschaft out der Klasse System vom Typ Printwriter - Ausgabe an die Konsole)

Ch. Wolff Digitale Informationsverarbeitung, Kap. 264 Objektorientierung in Java zUmsetzung der Objektorientierung analog zu C++ mit Vereinfachungen yDatenkapselung (Modularität, data hiding and abstraction) yPolymorphismus yVererbung ydynamisches Binden von Klassen nach Bedarf yObjekte: Zustand definiert durch Instanzenvariablen, Instanzenvariablen und Methoden werden in einer Klassendefinition festgelegt; Objekte werden unter Verwendung des Klassennamens instantiiert.

Ch. Wolff Digitale Informationsverarbeitung, Kap. 265 Objektorientierung in Java II zWie in C++: unterschiedliche Konstruktoren für eine Klasse zBildung von Unterklassen (subclassing) im wesentlichen wie in C++ zWie in C++ Bildung abstrakter Superklassen, die nicht unmittelbar zu Objekten instantiiert werden: Effizienzsteigerung durch einmalige Definition abstrakter Methoden in der abstrakten Oberklasse, die dann von allen konkreten" Objekten der Unterklassen benutzt werden können (Beispiel: Graphical - Rectangle, Circle etc)

Ch. Wolff Digitale Informationsverarbeitung, Kap. 266 Besonderheiten von Java im Vergleich zu C++ zSyntax: eng an C/C++ angelehnt (Operatoren, Aufbau von Ausdrücken, Datentypen...) zUnterschiede: ykein Präprozessor ykein Typedef ykein Define ykeine Records und Unions (nur Klassen !) ykeine Funktionen ( Methoden !) ykeine Mehrfachvererbung ykein Goto

Ch. Wolff Digitale Informationsverarbeitung, Kap. 267 Besonderheiten von Java im Vergleich zu C++, II zkein Überladen von Operatoren zkeine Templates zkeine automatische Typumwandlung zkeine Zeiger/Pointer zSpeicherung in Unicode zPackages (Pakete zusammengehörender Klassen) für den Import von Klassen statt #include über Headerdateien zverschiedene Typen von Kommentaren zautomatische Speicherverwaltung zsynchronisierte Threads werden unterstützt

Ch. Wolff Digitale Informationsverarbeitung, Kap. 268 Sprachbeschreibung von Java zlexikalische Struktur zDatentypen zProgrammstruktur zObjektorientierung zSyntax (Ausdrücke, Anweisungen, Operatoren)

Ch. Wolff Digitale Informationsverarbeitung, Kap. 269 Zeichenkodierung zZeichenkodierung yKodierung von Zeichen in UNICODE yÜbersetzung eines Unicode-Zeichenstroms in Java-Tokens yZusätzlich Mapping von ASCII nach UNICODE, um auch Source-Code auf nicht-UNICODE-Systemen zu unterstützen (UNICODE als Obermenge von ASCII)

Ch. Wolff Digitale Informationsverarbeitung, Kap Lexikalische Struktur von Java II Quelltext ::== { Kommentar | Leerzeichen | Sprachelement } Leerzeichen ::== ASCII-SP | ASCII-HT | ASCII-FF | Zeilenendezeichen Sprachelement::== Schlüsselwort | Identifikator | Literal | Separator | Operator

Ch. Wolff Digitale Informationsverarbeitung, Kap Schlüsselwörter von Java abstract boolean break byte case cast catch char class const continue default do native new null operator outer package private protected public rest return short static super switch sychronized this throw throws transient try var void while double else extends final finally float for if implements import instanceof int interface long

Ch. Wolff Digitale Informationsverarbeitung, Kap Programmstruktur Quelltextdatei ::== [Paketfestlegung] {Import} {Typdeklaration} Paketfestlegung ::== package Paketname; Import = Typimport | Paketimport; Typdeklaration = Klassendeklaration | Schnittstellendeklaration

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel Programmaufbau package NeuesPaket; import java.applet.Applet; class Test extends Applet { int EineEigenschaft = 0; int EineMethode(int EinFormalerParameter) { return (EinFormalerParameter + EineEigenschaft) * 5; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Datentypen zeinfache/primitive Datentypen yZeichen: char yGanzzahlen: byte short int long yGleitkommazahlen: float double yWahrheitswerte: boolean zReferenzdatentypen yArrays yKlassen-Datentypen yInterface-Datentypen (Schnittstellen)

Ch. Wolff Digitale Informationsverarbeitung, Kap Klassen- und Interface-Typdeklarationen zEine Klassendeklaration führt einen Referenztyp ein, dessen Implementierung von der Implementierung einer anderen Klassen abgeleitet sein kann (Vererbung) zEine Klasse kann unmittelbare oder mittelbare Superklasse einer anderen sein zinterface-Deklaration: neuer Referenztyp, der eine Menge von Methoden und/oder Namen spezifiziert, ohne unmittelbare Implementierung

Ch. Wolff Digitale Informationsverarbeitung, Kap Klassendeklarationen zAufbau: [public] [Klassenmodifikator (abstract, final)] class Bezeichner[extends Klassentyp] [implements Schnittstellentyp {, Schnittstellentyp}] Klassenrumpf Beispiele: public class Test {...} abstract class Test2 {...} public final class Test3 implements InterfaceExmpl {...}

Ch. Wolff Digitale Informationsverarbeitung, Kap Klassenrumpf zKlassenrumpf = { Komponentendeklaration | Initialisierung } zDer Klassenrumpf besteht aus einer oder mehrerer Komponentendeklarationen, d.h. Variablen- und Methodenvereinbarungen sowie aus Initialisierungen public class test { int test; //Deklaration int test2 = 0 //Deklaration und Initialisierung {test = 5; } // Initialisierung in speparatem Block int quadriere(int einWert)// Methodendeklaration { return einWert * einWert; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Sichtbarkeit zDas Schlüsselwort public in der Klassendeklaration einer (Toplevel-)Klasse regelt deren Sichtbarkeit: yIst die Klasse public, ist sie auch außerhalb ihres Paketes sichtbar, yansonsten ist sie nur in dem Paket sichtbar, in dem sie deklariert wurde.

Ch. Wolff Digitale Informationsverarbeitung, Kap Vererbung: Grundprinzipien zIn Java existiert zwischen Klassen nur die Einfachvererbung, d.h. eine Klasse kann immer nur von einer Oberklasse abgeleitet sein: class Unterklasse extends Oberklasse { //... } zDamit ist die sog. diamond inheritance ausgeschlossen

Ch. Wolff Digitale Informationsverarbeitung, Kap Vererbung: Sonderfälle zVon einer Klasse, die als final gekennzeichnet ist, kann man keine Unterklasse ableiten: zfinal class Unterklasse extends Oberklasse z// geht nicht: class Unterklasse2 extends Unterklasse zUmgekehrt muß man von einer als abstract gekennzeichenten Klasse eine Unterklasse ableiten, um sie verwenden zu können zMehrfachvererbung ist nur indirekt, d.h. über die einmalige oder mehrfache Implementierung von Schnittstellen durch eine Klasse möglich (zusätzlich zur Einfachvererbung)

Ch. Wolff Digitale Informationsverarbeitung, Kap Methodendeklaration zVollständige Syntax der Methodendeklaration: [public | protected | private] Sichtbarkeit der Methode [static] Zuordnung Klasse/Objekt [abstract | final] Vererbbarkeit/Abstraktionsgrad [native]Zugriff auf Plattformspezifisches [synchronized] Synchronisation von threads Resulttattyp Methodenname {[]} ([ÜbergabeParameter]) [Ausnahmen] Methodenrumpf

Ch. Wolff Digitale Informationsverarbeitung, Kap Methodendeklaration zDie Methodendeklaration mußwenigstens folgende Bestandteile aufweisen: zResulttattyp MethodenName() { //Rumpf } zz.B. void eineMethode() { int x = 5; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Sichtbarkeit von Methoden und Eigenschaften zpublic: Methode kann von anderen Klassen benutzt werden, auch außerhalb ihres Pakets bzw. der Klassenhierarchie zprotected: Methode kann nur innerhalb der Klassenhierarchie und des Pakets der Klasse benutzt werden zdefault (kein Modifikator): Methode ist nur im gleichen Paket sichtbar zprivate: Methode kann nur von Objekten der Klasse, in der sie definiert ist, benutzt werden

Ch. Wolff Digitale Informationsverarbeitung, Kap Konstruktoren zKonstrukten die dienen der Initialisierung von Objekten zEin Konstruktor einer Klasse hat denselben Bezeichner wie die Klasse selbst, aber keinen Rückgabewert zFür eine Klasse kann es mehrere Konstruktoren mit unterschiedlichen Parametern geben (Polymorphismus) class Konstrukt { int einWert; Konstrukt(int W) { einWert = W; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Konstruktoren: Beispiel z Für die vordefinierte Klasse String existieren zahlreiche verschiedene Konstruktoren, u. a.: ypublic String() ypublic String(String value) ypublic String(char[] value) ypublic String(char[] value, int offset, int count) ypublic String(byte[] ascii, int hibyte, int offset, int count) ypublic String(byte[] ascii, int hibyte) ypublic String(StringBuffer, buffer)

Ch. Wolff Digitale Informationsverarbeitung, Kap Schnittstellen zMit einer Schnittstelle gibt eine man Menge von Methoden und Eigenschaften vor, die von einer Klasse implementiert werden sollen. Alle Methoden einer Schnittstelle sind abstrakt, d.h. ohne Implementierung zEine Schnittstelle liefert eine Funktionsschablone, die von unterschiedlichen Klassen implementiert werden kann

Ch. Wolff Digitale Informationsverarbeitung, Kap Aufbau von Schnittstellen z Syntax: [public] [abstract] interface Schnittstellenname [extends Schnittstellenname {, Schnittstellenname}] Schnittstellenrumpf

Ch. Wolff Digitale Informationsverarbeitung, Kap Schnittstellen: Beispiel public interface Darstellbar { int Groesse = 2000; int Flaeche = 500; void stelleDar(); }

Ch. Wolff Digitale Informationsverarbeitung, Kap Methoden und Variablen in Schnittstellen zAlle Methoden einer Schnittstelle sind abstrakt; sie sind öffentlich (public), falls die Schnittstelle öffentlich ist zDie Variablen (Eigenschaften) einer Schnittstelle dienen zur Bestimmung von Konstantenwerten, d.h. sie müssen im Schnittstellenrumpf initialisiert werden; ihr Wert kann nicht mehr geändert werde.

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Modellierung mit Java: Klassen

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Modellierung mit Java: Objekte

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Modellierung mit Java: Vererbung

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Modellierung mit Java: Schnittstellen

Ch. Wolff Digitale Informationsverarbeitung, Kap Fazit: OO-Konzepte in Java zEntstehung der Sprache: zJava ist syntaktisch eng an C++ angelehnt, aber anders als C++ eine streng an den Prinzipien der Objektorientierung orientierte Sprache. zAusnahme: Primitiven Datentypen, die keine Objekte eines Klassentyps sind. zTypisierung: zJava realisiert eine strenge Typprüfung – sowohl zur compile time als auch zur Laufzeit eines Programms.

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Konzepte in Java (Forts.) zVererbung yFür Klassen existiert nur Einfachvererbung, Mehrfachvererbung nur für Schnittstellen zPolymorphismus: ydas Überladen von Methoden und Konstruktoren, yEntscheidung für die passende Methodenimplementierung zur Laufzeit (late binding) und yZuweisung von Objektreferenzen zu Objektreferenzen anderen Typs (im gleichen Teilbaum der Klassenhierarchie) yKein Überladen von Operatoren (z. B. Neudefinition von + oder * für eine Klasse)

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Konzepte in Java III zInitialisierung und Konstruktoren yEigenschaften von Klassen werden automatisch instantiiert und mit Default-Werten belegt (0 bei Integer-Werten, false bei boolean...) yFür jede Klasse existiert ein (parameterloser) Defaultkonstruktor yunterschiedliche Konstruktoren (Parametertyp und -anzahl) können deklariert werden yDie Dekonstruktion von Klassen geschieht automatisch durch die Speicherverwaltung

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Konzepte in Java IV zAbstrakte Klassen yDie Bildung abstrakter Klassen wird von Java unterstützt. Zusätzlich können in Schnittstellen abstrakte Methoden zusammengestellt werden, die einen semantisch zusammengehörenden Funktionalitätsbereich spezifizieren. zMetaklassen und Klassenobjekte Durch die Klasse Class und die im Paket java.lang.reflect unterstützt Java die Bildung von Klassen und Objekten und das dynamische Laden von Klassen, deren Instantiierung und Verwendung zur Laufzeit eines Programms.

Ch. Wolff Digitale Informationsverarbeitung, Kap OO-Konzepte in Java V Generische Klassen Mit Hilfe der Basisklasse Object und der Mechanismen der class reflection lassen sich generische Klassen (z. B. abstrakte Datentypen) definieren, die je nach Bedarf mit Objekten unterschiedlichen Typs gefüllt werden können, vgl. unten Kap. und. Zuweisung von Objektreferenzen Die Zuweisung von Objektreferenzen erfolgt auf der Basis der Referenzsemantik (d. h. die Referenz auf das Objekt, nicht seine Werte werden übergeben). Für primitive Datentypen gilt die Wertsemantik.

Ch. Wolff Digitale Informationsverarbeitung, Kap Anweisungen und Anweisungsblöcke zBlockaufbau und Variablendeklarationen erfolgen im wesentlichen nach den von C++ bekannten Regeln. zFolgende Typen von Anweisungen sind in Java vorhanden: yLeere Anweisung yAnweisung mit Label yAusdruck; yAuswahl yIteration ySprunganweisung ySychronisationsanweisung yAusnahmeanweisung

Ch. Wolff Digitale Informationsverarbeitung, Kap Anweisungsblöcke zEin Anweisungsblock besteht aus einer einzenlen, durch Semikolon abgeschlossenen Anweisung oder einer in geschweiften Klammern eingefassten Folge von Anweisungen: Anweisung; { Anweisung1; Anweisung2; //... Anweisungn; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Methoden- und Komponentenzugriffe zAuf die Methoden einer Klasse (eines Objektes einer Klasse) kann man unter Angabe von Klase und Methode zugreifen: Objektname.Methodenname(); Z. B.: System.out.println(); Gleiches gilt für die Komponenten eines Objekts: MeinObjekt.MeineEigenschaft = 0; Die Angabe der Objektvariablen ist nur notwendig, wenn der Zugriff nicht ohnehin innerhalb der Klassendeklaration erfolgt.

Ch. Wolff Digitale Informationsverarbeitung, Kap Operatoren und Separatoren zverfügbare Operatoren im wesentlichen mit den aus C/C++ bekannten Operatoren identisch: zSeparatoren: ()[]{};,. zOperatoren: => =!= &&|| */&|^% > >>>+=-=*=/=&=|=^=%= >= >>>= yWichtig: Der Additionsoperator ist auch für Objekte vom Typ String definiert (string concatenation).

Ch. Wolff Digitale Informationsverarbeitung, Kap Auswahlanweisungen zWie in C/C++ gibt es zwei Formen: zif-Anweisung (mit else-Verzweigung) zswitch-Anweisung zZu beachten ist, daß bei der if-Anweisung der auszuwertende Typ den Datentyp boolean haben muß; anders als in C können also nicht ohne weiteres einfach Integer-Variablenwerte ausgewertet werden, da sie nicht direkt nach boolean konvertierbar sind.

Ch. Wolff Digitale Informationsverarbeitung, Kap Die IF-Anweisung if( ) Anweisung; bzw. {Anweisungsblock;} [else Anweisung; bzw. {Anweisungsblock;}] class Test { static public void main(String args[]) { int iZaehler = 5; if(iZaehler > 10) { System.out.println(iZaehler); } else { System.out.println(iZaehler+10); }}}

Ch. Wolff Digitale Informationsverarbeitung, Kap Switch-Anweisung switch( ) { case Auswahlwert1: // auszuführender Code für Fall 1 [break;] case Auswahlwert2: // auszuführender Code für Fall 1 [break;] //...ggf. weitere Fälle default: // auszuführender Code, sollte sonst nichts zutreffen [break;] }

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel Switch-Anweisung int i = 0; for(i = 5; i >= 0; i--) { switch(i) { case 4: case 5: System.out.print("i "); break; case 3: System.out.print("\bst"); break; case 2: System.out.print(" die "); case 1: System.out.println("Zählvariable"); break; default: System.out.println("."); break; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Iterationsanweisungen zZur Ablaufsteuerung existieren wie in C/C++ drei Schleifenkonstrukte: yeine while-Schleife: while (Ausdruck) Statement yeine do/while-Schleife: do Anweisung while (Ausdruck) yeine for-Schleife: for(Init; Ausdruckopt; Inkrementopt) Anweisung

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel while-Schleife //... iZaehler = 5; while(iZaehler-- > 0) { System.out.Println(iZaehler); } //... while(false) { // Schleifenrumpf wird nie erreicht System.out.println(iZaehler); } //...

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel do-while-Schleife iZaehler = 5; do { System.out.println("Schleifenrumpf do-while\n"); } while(iZaehler-- > 0);

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel For-Schleife for(i = 5; i < 10; i++) { System.out.println(i); System.out.println(\n); }

Ch. Wolff Digitale Informationsverarbeitung, Kap Sprunganweisungen zDer Kontrollfluß kann auch unbedingt durch Sprunganweisungen gesteuert werden: ybreak [Bezeichner] - Verlassen einer Ausführungsumgebung ycontinue [Bezeichner] - Fortsetzen einer umgebenden Anweisung yreturn [ ] Wertrückgabe

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel break-Anweisung int i = 0; for(i = 5; i >= 0; i--) { if(i == 3) break; } System.out.println(i);

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel Break mit Label int i = 10, j = 0, k = 0; Ziel_des_Sprungs: while(i > 0) { do { j++; for(k = 5; k >= 0; k--) { if(k == 3) break Ziel_des_Sprungs; } }while(j < 10); i--; } System.out.println(k); Ausgabe: 3

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel continue-Anweisung for(int i = 0; i < 5; i++) { System.out.println("vor"); if(i == 2) continue; System.out.println("nach"); } Ausgabe: vor nach vor nach vor vor nach vor nach

Ch. Wolff Digitale Informationsverarbeitung, Kap Defensives Programmieren mit Ausnahmen z Möglichst frühzeitig sollen vom "normalen" Verhalten eines Programms abweichende Ereignisse abgefangen werden. Gerade bei Zugriff auf externe Ressourcen (Dateien, Netzwerkverbindungen etc.) tritt häufig der Fall ein, daß etwa ein Dateizugriff nicht gelingt da die Datei gesperrt ist oder eine Netzwerkressource nicht erreicht werden kann. zDazu dienen in Java Ausnahmen

Ch. Wolff Digitale Informationsverarbeitung, Kap Ausnahmen zAusnahmen können durch eine throws-Anweisung einer Methode zugeordnet werden zin Java gibt es eine Reihe vordefinierter Ausnahmen zEine Ausnahme wird durch die throw-Anweisung explizit ausgelöst

Ch. Wolff Digitale Informationsverarbeitung, Kap Beispiel: Ausnahmeauslösung static int teile(int x, int y) throws ArithmeticException { if(y==0) throw(new ArithmeticException("Division durch 0")); else return x / y; }

Ch. Wolff Digitale Informationsverarbeitung, Kap Abarbeiten von Ausnahmen zTry-, catch- und finally-Anweisungen dienen der Bearbeitung von Ausnahmen zFolgende Varianten sind erlaubt: ytry ytry [ ] finally zEin mit try umschlossener Anweisungsblock muß einen catch- und/oder finally-Block nach sich ziehen. Ein einzelnes catch- Statement in einem ist wie folgt aufgebaut zcatch(Ausnahmetyp)

Ch. Wolff Digitale Informationsverarbeitung, Kap try-/catch-Anweisungen schematisch Schematisch sieht die Verwendung von try-catch-Konstrukten wie folgt aus: try {// Programmcode, der möglicherweise eine Ausnahme auslöst} catch(Ausnahme A1) {// Programmcode zur Ausnahmebehandlung} catch(Ausnahme A2) {// Programmcode zur Ausnahmebehandlung} finally {// Programmcode, der unabhängig davon, wie der try-Block // verlassen wurde, immer ausgeführt wird}