PDF-Datei - Java kompakt

Werbung
Kapitel 01 Java
-1-
Startet
Startet
Schreibt Quellcode
Programmierer
Programmierer
Anwender
Funktionsweise von Java
kom
aus
pilie
gefü
rt vo
hrt v
n
on
Speichert unter
Erzeugt die Ausgabe
Wird
Erzeugt .class Datei
Wird
package kapitel01;
public class Test{
public static void main(String[] args) {
System.out.println("Hallo");
}
}
Java-Compiler
Java Virtual Machine
(JVM)
-2-
Test.java
Test.class
Hallo
Compiler
Test.java ist sy
Test.java
ntaktisch korre
kt
Test.class
Java Compiler
Test.java ist syn
taktisch falsch
Fehlermeldung mit
nützlicher Information
-3-
Test.class
Java Virtual Machine
(JVM)
JVM
Führt das
Programm aus
-4-
r
ufzeitfe
itfehle
Kein La
Laufz
e
hler
Das Programm wird
normal beendet
Löst eine
Ausnahme
aus
Kapitel 1
Mindmap
Java wurde1995 von Sun Microsystems entwickelt
Desktop-Anwendungen
Webanwendungen
Anwendungen für Mobiltelefone
und kleine Geräte
Prüft syntaktische Korrektheit
Erzeugt Bytecode-Datei
Führt Bytecode-Dateien aus
Stellt Laufzeitfehler fest
Instanzvariablen zum Speichern von Daten
Klassenname
Virtuelle Maschine
für Java (JVM)
Java Compiler
Java Micro Edition ME
Java Enterprise Edition EE
Java Standard Edition SE
Java ist eine objektorientierte Programmiersprache
Mehrere Varianten
Funktionsweise von Java
Struktur einer Klasse
Konstruktoren zum Erzeugen von Objekten
Methoden zum Manipulieren der Daten
-5-
Kapitel 02 Ein Schnelleinstieg in Java
-6-
Mindmap
Erstes Java Programm verstehen
main -Methode und
System.out.println
Fehlender Strichpunkt
Fehlendes Anführungszeichen
Typische Fehler
Umlaute und Sonderzeichen im Quelltext
Öffnende Klammern nicht geschlossen
Code außerhalb der Klasse
Methode
Mechanismus zum Verarbeiten der Daten
Kapselt Daten und Methoden, die darauf operieren
Objekt
Wird als Instanz einer Klasse bezeichnet
Variable
Platzhalter: Speichert Daten eines bestimmten Typs
Kapitel 2
Speichert eine Folge von Objekten
des gleichen Typs
Liste (ArrayList<T> )
public class MeineKlasse{…}
Eigene Klassen definieren
Konstruktor
Zum Erzeugen von Objekten
Ändern den Kontrollfluss
des Programms
Bedingungen und Schleifen
if-then-else Anweisung
for -, while -Schleifen
Daten von der
Konsole einlesen
Vererbung
Scanner s = new Scanner(System.in);
String name = s.nextLine();
double preis = s.nextDouble();
Klasse A erbt
von Klasse B
-7-
A verfügt über alle Variablen
und Methoden von B
Kapitel 03 Klassen und Objekten
-8-
Syntax von Methoden
Zugriffsrechte/Sichtbarkeit
Modifikatoren
(optional)
static
Statische Methoden
abstract
Abstrakte Methoden
Rückgabetyp
(obligatorisch)
void
Primitiver Typ oder Klassentyp
Aussagekräftiger Name
Methodenname
(obligatorisch)
Syntax
einer
Methodendeklaration
final
Unveränderbare Methoden
Oft Verb (+ Substantiv)
In runde Klammern eingeschlossen
Kann leer sein
Parameterliste
(obligatorisch)
Runde Klammern
dürfen nicht fehlen
()
Kann
mehrere
Parameter
enthalten
Durch Kommas getrennt
( Param1,..., Paramn)
Folge von Anweisungen
In geschweifte Klammern eingeschlossen
{
Anweisung1;
Methodenrumpf
...
Anweisungn;
}
Obligatorisch für konkrete Methoden,
optional für abstrakte Methoden
-9-
Methode
Liefert nichts zurück
Liefert einen Wert
vom Typ X zurück
Methode, die einen
Wert berechnet
Validierungs-Methode
Getter-Methode
JUnit Test (vgl. 11.10)
Methode, die den
Objektzustand ändert
Methode, die den
Objektzustand ausdruckt
Setter-Methode
Rückgabewert von Methoden
Rückgabetyp
ist void
Rückgabetyp
ist X
- 10 -
Jedes Objekt hat
Eindeutige Speicheradresse
Eigenschaften von Objekten
Identität
Aktuelle Werte seiner Instanzvariablen
Methoden des Objekts
Zustand
Verhalten
- 11 -
Konstruktor
1 public class Student {
2
private String name;
3
private String matrikelnummer;
4
private int semester;
5
6
// Konstruktor I
7
public Student(String name, String matrikelnummer, int semester) {
8
this.name = name;
9
this.matrikelnummer = matrikelnummer;
10
this.semester = semester;
11
}
12
13
// Konstruktor II
14
public Student(String name, String matrikelnummer) {
15
this(name, matrikelnummer, 1);
16
}
17
18
// Konstruktor III
17
public Student(String name) {
18
this(name, null, 0);
19
}
20
21
// Methode zum Drucken eines Studenten
22
public void printStudent(){
23
System.out.println(“Student<name: “ + name
24
+ “, matrikelnummer: “ + matrikelnummer
25
+ “, semester: “ + semester + “>”);
26
}
27
28
public static void main(String[] args) {
29
Student obj1 = new Student("Sepp”);
30
Student obj2 = new Student("Anne", "67342");
31
Student obj3 = new Student("Sara", "76345",5);
32
Student obj4 = new Student("Alex", "12345",1);
33
34
obj1.printStudent();
35
obj2.printStudent();
36
obj3.printStudent();
37
obj4.printStudent();
38
}
39 }
- 12 -
Konstruktor III
obj1: Student
this.name = “Seep”
this.matrikelnummer = null;
this.semester = 0
Konstruktor II
obj2: Student
this.name = “Anne”
this.matrikelnummer = “67342”
this.semester = 0
Konstruktor I
obj3: Student
this.name = “Sara”
this.matrikelnummer = “76345”
this.semester = 5
Konstruktor I
obj4: Student
this.name = “Alex”
this.matrikelnummer = “12345”
this.semester = semester = 1
Konstruktor
Deklaration
Aufruf
Mindmap Konstruktor
Modifikatoren Klassenname ( Parameterliste) {
Anweisungen
}
public Student (String name) {
this.name = name;
}
Klassenname obj = new Klassenname( Werte);
Student s = new Student(“Sara”);
- 13 -
Mindmap Zugriffsrecht
private
Modifikator
für
Zugriffsrecht
Sichtbarkeit: eigene Klasse
Default
(kein Modifikator)
Sichtbarkeit: Klasse + Paket
Sichtbarkeit:
Klasse + Paket + Unterklassen
protected
public
Überall sichtbar
- 14 -
Mindmap
Legt Struktur von Objekten fest
Klasse
Bestimmt das Verhalten von Objekten
Wird zum Erzeugen von Objekten verwendet
Modifikator für Zugriffsrecht
Primitiver Typ
Typ
Referenztyp
Speichert Daten
Modifikator Datentyp Variablenname;
Deklaration
private int alter;
Variable
Variablenname = Wert;
Zuweisung
alter = 25;
Kapitel 3
Operiert auf Daten und modifiziert Objektzustände
Modifikatoren Typ Methodenname ( Parameterliste) {
Anweisungen
Methode
}
Rückgabetyp: void
Rückgabetyp: X
Methode liefert nichts zurück
Methode liefert einen Wert
vom Typ X zurück
Ist Instanz einer Klasse
Identität
Objekt
Charakteristika
Zustand
Verhalten
Konstruktor
Regeln zum Klassendesign
- 15 -
Kapitel 04 Mehr zu Klassen und Objekten
- 16 -
Mindmap Software-Design
Lebewesen (Person, Tier)
Gegenstand (Speisekarte, Fahrzeug)
Klasse identifizieren
Organisation (Firma, Uni)
Konzept (Name, Speisekarteneintrag)
Klasse definieren
public Klassenname { ... }
String -Variablen für Namen, Zeichenketten
Objekteigenschaften
durch
Instanzvariablen
abbilden
boolean -Variablen für Wahrheitswerte
int - und double -Variablen für Zahlen
SoftwareDesign
Klassenname () {
Anweisungen
Default Konstruktor
}
Konstruktoren
definieren
Konstruktor(en)
mit Parametern
Schreibzugriff auf
Instanzvariablen
Verhalten durch
Methoden abbilden
Lesezugriff auf
Instanzvariablen
Klassenname ( Parameter) {
Anweisungen
}
Setter-Methoden
Getter-Methoden
Business-Methoden und Programmlogik
- 17 -
Mindmap Sofwareentwurf groß
Klasse: Student
Klassen identifizieren
und benennen
Klasse: Pruefungsamt
Name
private Name name;
Matrikelnummer
Student
private String matrikelnummer;
Eigenschaften
festlegen
Semesteranzahl
private int semester;
Studenten
Prüfungsamt
Software für
Prüfungsamt
entwerfen
Default
Konstrukturen
definieren
Mit Parametern
Methoden
definieren
private ArrayList<Student>
studenten;
public Pruefungsamt () {
...
}
public Student (...) {
...
}
Getter-Methoden
public String getName () {
return name;
}
Setter-Methoden
public void
setName (String name) {
this.name = name;
}
BusinessMethoden
- 18 -
public boolean
wechsleStudienfach (...){
...
}
Software für
Prüfungsamt
entwerfen
Name name;
Mindmap Softwareentwurf klein
Klasse: Student
}
}
Student (...) {
...
Pruefungsamt () {
...
Studenten
Semesteranzahl
Matrikelnummer
Name
Klasse: Pruefungsamt
Student
Prüfungsamt
Default
}
}
Student findeStudent (...){
...
void setName (String name) {
this.name = name;
}
String getName () {
return name;
Mit Parametern
Setter
Getter
Klassen identifizieren
und benennen
Eigenschaften
festlegen
Konstrukturen
definieren
Methoden
definieren
BusinessMethoden
- 19 -
Kapitel 4
Statische
Variablen
Statische
Methoden
Rekursive
Methoden
Software-Design
Mindmap
Existieren unabhängig von den Instanzen der Klasse
Zählen von Instanzen
Modifikatoren static Typ Variablenname;
Beispiel für Verwendung
Können ohne Instanz der Klasse ausgeführt werden
static Typ Methodenname ( Parameterliste) {
Anweisungen
}
Lese-/Schreibzugriff auf
statische Variablen
Hilfsmethoden
Eine Methode ruft sich selber auf
Typischer Einsatz
Direkt
Methode a ruft Methode b auf
und b ruft a auf.
Mathematische Funktionen
Indirekt
- 20 -
Kapitel 05 Primitive Typen
- 21 -
Mindmap
byte
short
Ganze Zahlen
int
Zahlen
long
Primitive
Datentypen
float
Gleitkommazahlen
double
char
Zeichen
Unicode
boolean
Wahrheitswerte
Casting
Typumwandlung
Boxing und Unboxing
+, -, *, /, %
Kapitel 5
Präfix
Arithmetische Operationen
++ , -Postfix
==, !=
Für alle Werte
Vergleichsoperationen
<, <=, >, >=
Für Zahlen
Für Boole’sche Werte
Logische Operationen
&, |, !
Strikt
Nicht Strikt
&&, ||
&, |, ^, ~
Bitweise Operationen
<< , >> , >>>
Priorität
Auswertung von Operationen
Assoziativität
Beeinflussung durch Klammern
- 22 -
Kapitel 06 Referenztypen
- 23 -
Mindmap Eindimensionale Arrays
Folge von Elementen gleichen Typs
Typ[] name;
Deklaration
int[] a;
Typ[] name = {Wert 0, …, Wert n-1};
Deklaration und
Initialisierung
int[] a = {1, 3, 7};
new Typ[Länge]
Erzeugung
a = new int[3];
Eindimensionales
Array
name[Index] = Wert;
Zuweisung an Element
a[0] = 5;
a[1] = 34;
For-each Schleife
for (int i : a) {
...
}
Iteration
for -Schleife
for (int i=0; i<a.length; i++){
... a[i] ...
}
- 24 -
Mehrdimensionales
Array
Array von Arrays
Deklaration
Deklaration
und
Initialisierung
Erzeugung
Mindmap Mehrdimensionale Arrays
Typ[][] name;
int[][] a;
Typ[][] = {{ Wert 0,0, ..., Wert 0,m-1},
...
{ Wert k,0, ..., Wert k,n-1}};
int[][] a = {{1},{1,2},{1,2,3}}
new Typ[Länge 1 ][Länge 2 ]
}
for(int[] is : a) {
for(int j : is) {
... j ...
a[2][1] = 15;
name[ index1 ][ index2 ] = Wert;
a = new int[6][3];
Zuweisung an Element
Iteration:
geschachtelte
Schleifen
}
- 25 -
Mindmap groß
Folge von Elementen gleichen Typs
Typ[] name;
Deklaration
int[] a;
Typ[] name = { Wert 0, …, Wert n-1};
Deklaration und Initialisierung
int[] a = {1, 3, 7};
new Typ[ Länge]
Erzeugung
a = new int[5];
Eindimensional
name[ Index] = Wert;
Zuweisung an Element
a[0] = 5;
a[1] = 34;
for (int i : a) {
...
}
For-each Schleife
Iteration
for (int i=0; i<a.length; i++){
... a[i] ...
}
For-Schleife
Array
Ein Array von Arrays
Typ[][] name;
Deklaration
int[][] a;
Kapitel 6
Typ[][] = {{ Wert 0,0, …, Wert 0,m-1},
...
{ Wert k,0, …, Wert k,n-1}};
Deklaration und Initialisierung
int[][] a = {{1},{1,2},{1,2,3}}
Mehrdimensional
new Typ[ Länge1][ Länge2]
Erzeugung
a = new int[6][3];
name[ Index1][ index2]= Wert;
Zuweisung an Element
a[2][1] = 15;
Iteration:
geschachtelte Schleifen
for(int i=0; i<a.length; i++){
for(int j=0; j<a[i].length; j++) {
... a[i][j] ...
}
}
Aufzählungstyp, fasst mehrere Konstanten zusammen.
enum Enumname { Konstante1, …, Konstanten }
Enum
Deklaration
public enum Richtung {NORD, SUED, OST, WEST}
Vordifinierte Javaklasse für Zeichenketten
+
String
Wichtige Operationen
equals
- 26 -
Kapitel 6
Array
Enum
String
Eindimensional
Mehrdimensional
Aufzählungstyp
}
Mindmap
Konstanten
...
enum Enumname {
Konstante1,
Fasst mehrere Konstanten zusammen
Deklaration
public enum Richtung {
NORD,
SUED,
OST,
WEST
}
equals
+
Vordefinierte Javaklasse für Zeichenketten
Wichtige Operationen
substring
- 27 -
Kapitel 07 Kontrollfluss
- 28 -
Mindmap groß
Fasst mehrere Anweisungen zusammen
Block { ... }
{ Anweisung1; ...; Anweisungn }
if ( Bedingung)
Bedingung == true
Block1
else
Block1 wird ausgeführt
Bedingung == false
Block2
Block2 wird ausgeführt
if ( Bedingung1)
Block1
if /else
Es wird nur der erste Block ausgeführt,
dessen Bedingung true ergibt
else if ( Bedingung2)
Block2
...
else if ( Bedingungn)
Geschachtelt
Wenn alle Bedingungen false
ergeben, wird Blockn+1 ausgeführt
Blockn
else
Blockn+1
Variable hat Typ byte , short , int , char oder String
switch ( Variable) {
case m:
Anweisungenm;
break;
case n:
Anweisungenn;
break;
...
default:
Anweisungendef;
}
switch /case
Wert von
Variable
Anweisungenm werden ausgeführt
n
Anweisungenn werden ausgeführt
Die entsprechenden Anweisungen
werden ausgeführt
...
anderer
Wert
Kapitel 7
while ( Bedingung)
Block;
while
m
Anweisungendef werden ausgeführt
Bedingung wird vor der Ausführung von Block überprüft
Block wird ausgeführt, so lange Bedingung wahr ist
Init wird zuerst ausgeführt
for ( Init; Bedingung; Update)
for
Bedingung wird getestet bevor Block ausgeführt wird
Block;
Wenn Bedingung wahr ist werden Block und
Update ausgeführt; Bedingung wird wieder getestet
Schleifen
Zur Iteration über Arrays und Collections
for ( Typ Element : Collection)
Block;
for-each
Block wird ausgeführt, dann wird Bedingung getestet
do
do-while
Element durchläuft die Elemente von Collection
Block
while ( Bedingung);
Block wird ausgeführt, so lange Bedingung wahr ist
Kann nur In Schleifen und switch /case -Anweisungen verwendet werden
break
Bricht die Schleife/Anweisung ab
Steueranweisung
Kann nur in Schleifen verwendet werden
continue
Startet den nächsten Durchlauf der Schleife
- 29 -
Mindmap Bedingungen
if ( Bedingung)
Block1
else
Block2
Einfach
Bedingung == true :
Block1 wird ausgeführt
Bedingung == false :
Block2 wird ausgeführt
if ( Bedingung1)
Block1
if/
then/
else
else if ( Bedingung2)
Block2
...
else if ( Bedingungn)
Blockn
else
Blockn+1
Geschachtelt
Es wird nur der erste Block
ausgeführt, dessen Bedingung
true ergibt
Wenn alle Bedingungen false
ergeben, wird Blockn+1
ausgeführt
Bedingte
Anweisung
switch ( Variable) {
case m:
Anweisungenm;
break;
case n:
Anweisungenn;
break;
...
default:
Anweisungendef;
}
Variable hat Typ byte , short , int , char oder String
switch/
case
Wert von
Variable
m
Anweisungenm
werden ausgeführt
n
Anweisungenn
werden ausgeführt
...
Anderer
Wert
- 30 -
Die entsprechenden
Anweisungen werden
ausgeführt
Anweisungendef
werden
ausgeführt
Schleifen
while
for
for-each
do/while
while ( Bedingung)
Block;
Mindmap Schleifen
Bedingung wird vor der Ausführung von Block überprüft
Block wird ausgeführt, so lange Bedingung wahr ist
for ( Init; Bedingung; Update)
Block;
Init wird zuerst ausgeführt
Bedingung wird getestet, bevor Block ausgeführt wird
Wenn Bedingung wahr ist, werden Block und Update ausgeführt;
Bedingung wird wieder getestet
for ( Typ Element : Collection)
Block;
Zur Iteration über Arrays und Collections
Block
Element durchläuft die Elemente von Collection
do
while ( Bedingung);
Block wird ausgeführt, dann wird Bedingung getestet
Block wird ausgeführt, so lange Bedingung wahr ist
- 31 -
Kapitel 7
Block { ... }
Mindmap
Fasst mehrere Anweisungen zusammen
{ Anweisung1; ...; Anweisungn }
if/then/else
Kann nur in Schleifen
verwendet werden
Bricht die Schleife/
Anweisung ab
Kann nur In Schleifen und
switch /case -Anweisungen
verwendet werden
switch/case
break
do-while
for-each
for
while
Bedingte Anweisung
Schleife
Steueranweisung
continue
Startet den nächsten
Durchlauf der Schleife
- 32 -
Kapitel 08 Vererbung
- 33 -
Die Klasse
Object
hashCode
equals
Oberklasse aller Klassen
Methoden
von Object
toString
Mindmap Object
“Semantischer” Vergleich
Implementierung für eigene Klassen
int -Wert für Objekt
Wird equals überschrieben, so muss
hashCode überschrieben werden.
Ist x.equals(y) wahr, so müssen x
und y den gleichen Hash-Wert haben
Wandelt Objekte in Strings um
Wird von System.out.println
verwendet
- 34 -
Mindmap
A übernimmt alle Instanzvariablen und Methoden von B
A kann weitere Instanzvariablen und Methoden enthalten
A kann Methoden von B überschreiben
Klasse A
erbt von B
A: Unterklasse, Subklasse,
Kindklasse
Bezeichnungen
B: Superklasse, Oberklasse,
Elternklasse
Syntax
class A extends B { ... }
Schlüsselwort
Kapitel 8
In Methoden
und
Konstruktoren
super
In Konstruktoren
Polymorphie
Aufruf von Methoden der
Oberklasse
Zugriff auf Instanzvariablen
der Oberklasse
Aufruf eines Konstruktors
der Oberklasse
Variablen können Instanzen von Subklassen ihres
statischen Typs speichern
Welche Methode aufgerufen wird, wird zur
Laufzeit bestimmt
Dynamisches
Binden
Methodenname
Auswahl der
Methode
Anzahl und statische Typen
der Argumente
Dynamischer Typ von this
Die Klasse Object
- 35 -
Kapitel 09 Generische Typen und Interface
- 36 -
Mindmap groß
class Klassenname < T1, ..., Tn> { ... }
Generische
Klasse
public class Paar<T1,T2> {
T1 erstesElement;
...
}
Eine Klasse, von der keine direkten Instanzen erzeugt werden können.
abstract Klassenname { ... }
Abstraktion
Anwendung
Superklasse für
konkrete Klassen
Abstrakte
Klasse
Wiederverwendung
Polymorphismus
Ist eine Methode abstrakt so muss die Klasse
abstrakt sein.
Regeln
Eine abstrakte Klasse darf Konstruktoren und sowohl
konkrete als auch abstrakte Methoden haben
Konkrete Subklassen einer abstrakten Klasse
müssen alle abstrakten Methoden implementieren
Darf nur Konstanten und abstrakte Methoden enthalten
Kapitel 9
interface interfacename { ... }
Wie abstrakte Klasse
Anwendung
Schnittstelle in Client/Server-Anwendungen
Interface
Mehrfachvererbung: eine Klasse kann mehrere
Interfaces implementieren
Abstrakte Klassen dürfen abstrakte Methoden von
Interfaces erben, ohne sie zu implementieren
Regeln
Eine konkrete Klasse, die ein Interface implementiert
muss alle Methoden des Interface implementieren
Geschachtelte
Klasse
Wird in einer anderen Klasse definiert
Hat Zugriff auf private Elemente der sie umschließenden Klasse
Wird innerhalb eines Code-Blocks deklariert
Deklaration und Erzeugen einer Instanz im gleichen Ausdruck
Anonyme
Klasse
Comparator<Person> c = new Comparator<Person>() {
@Override public int compare(Person p1, Person p2) {
...
}
};
- 37 -
Generische
Klasse
Mindmap Generische Klasse
Klasse, die durch Typparameter spezialisiert werden kann
class Klassenname < T1, ..., Tn> {
...
}
public class Paar<T1,T2> {
T1 erstesElement;
T2 zweitesElement;
...
}
Paar<String, Object> p1 = new Paar<String, Object>();
Seit Java 7 auch: Paar<String, Object> p2 = new Paar<>();
- 38 -
Abstrakte
Klasse
Mindmap Abstrakte Klasse
Eine Klasse, von der keine direkten Instanzen erzeugt werden können
Abstraktion
Wiederverwendung
Polymorphie
Ist eine Methode abstrakt, so muss die Klasse abstrakt sein
Eine abstrakte Klasse darf Konstruktoren und sowohl
konkrete als auch abstrakte Methoden besitzen
Superklasse für
konkrete Klassen
abstract Klassenname { ... }
Anwendung
Regeln
Konkrete Subklassen einer abstrakten Klasse müssen alle
abstrakten Methoden implementieren
- 39 -
Interface
Mindmap Interface
Darf nur Konstanten und abstrakte Methoden enthalten
Abstrakte Klassen dürfen abstrakte Methoden von
Interfaces erben, ohne sie zu implementieren
Mehrfachvererbung: Eine Klasse kann mehrere
Interfaces implementieren
Schnittstelle in Client/Server-Anwendungen
Wie abstrakte Klasse
interface Interfacename { ... }
Anwendung
Regeln
Eine konkrete Klasse, die ein Interface implementiert,
muss alle Methoden des Interface implementieren
- 40 -
Geschachtelte
Klasse
Mindmap Geschachtelte Klasse
Wird in einer anderen Klasse definiert
Deklaration und Erzeugen einer Instanz im
gleichen Ausdruck
Wird innerhalb eines Code-Blocks deklariert
Hat Zugriff auf private Elemente der sie umschließenden Klasse
Anonyme
Klasse
}
Comparator<A> c = new Comparator<A>() {
@Override
public int compare(A a1, A a2) {
...
};
- 41 -
Mindmap
Generische Klasse
Abstrakte Klasse
Kapitel 9
Interface
Geschachtelte Klasse
- 42 -
Anonyme Klasse
Kapitel 10 Das Java Collections Framework
- 43 -
Mindmap
Iterable<E>
Collection<E>
Map<K,V>
Wichtige Interfaces
Iterator<E>
RandomAccess
Zum Durchlaufen einer Collection
Iterator<E>
next()
Liefert das aktuelle Element des
Iterators; setzt das nächste Element
als neues aktuelles Element
hasNext()
Liefert true , solange der Iterator
nicht am Ende der Collection ist
Eine Folge von Elementen vom Typ E
Implementiert Collection<E>
Aggregattyp
Geordnet, ungeordnet
isEmpty, size
Kapitel 10
Wichtige
Methoden
Collection<E>
contains, containsAll
iterator
LinkedList<E>
ArrayList<E>
Wichtige
Implementierungen
ArrayDeque<E>
HashSet<E>
TreeSet<E>
Abbildung von K nach V (Wörterbuch)
TreeMap<K,V>
Map<K, V>
Wichtige
Implementierungen
HashMap<K,V>
LinkedHashMap<K,V>
WeakHashMap<K,V>
- 44 -
Kapitel 11 Ausnahmebehandlung
- 45 -
Mindmap Exceptions
Error
Java Exception-Hierarchie
Throwable
Exception
Erben von Error oder RuntimeException
ClassCastException
Unchecked
Exceptions
Beispiele
NullPointerException
IndexOutOfBoundsException
Können oft vermieden werden
Checked
Exceptions
Erben nicht von Error oder RuntimeException
Müssen in Signatur von Methoden angegeben werden
Exceptions
throw Exception-Instanz;
Auslösen von
Exceptions
Exception ex = new Exception(“Fehler!”);
throw ex;
throw new Exception(“Fehler!”);
try { ... }
catch ( ExceptionTyp1 ex) { ... }
...
catch ( ExceptionTypn ex) { ... }
finally { ... }
Behandeln von Exceptions
Erbt indirekt von Throwable
Benutzerdefinierte
Exception-Klassen
Zwei
Konstruktoren
- 46 -
Default
Mit String-Parameter
Kapitel 11
Fehlerarten
Benutzerfehler
Gerätefehler
Mindmap
Mangelnde Ressourcen
Softwarefehler
Test-Methoden durch die @Test -Annotation markieren
Testklasse definieren
assert Zusicherung : Fehlermeldung;
Angabe der Fehlermeldung
assert Zusicherung;
Ist die Zusicherung falsch, wird eine Exception geworfen
Überprüfen eine Zusicherung vom Typ boolean
Ausnahmebehandlung
Assertions
JUnit Test
Eine Instanz der zu testenden Klasse erzeugen und
Ist/Soll-Vergleich mit JUnit-Methoden durchführen
- 47 -
Herunterladen