02 Java Schnellkurs - Fachbereich Informatik Hochschule Darmstadt

Werbung
2. Java Schnellkurs
Advanced Programming
Techniques
Sommersemester 2008
Prof. Dr. Bernhard Humm
Hochschule Darmstadt, FB Informatik
1
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Einordnung in den gesamten Kurs
1. Einführung
2. Java Schnellkurs
3. Code-Dokumentation
4. Unit Testing
5. Komponenten und Schnittstellen
6. Klassenbibliotheken
7. Design Patterns
8. Refactoring
9. Fehlerbehandlung
10. Debugging, Logging, Tracing
11. Performance-Optimierung
2
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Agenda
Übersicht
Übersicht
Programmierkonstrukte
Klassen und Interfaces
JDK
Literatur
Übersicht
2000
Java im Kontext anderer Programmiersprachen
Java
1990
C++
OO TurboPASCAL
1980
MODULA
PROLOG
Eiffel
Ada
SMALLTALK80
COMMON
LISP
INTER
LISP
C
PASCAL
1970
1960
OBERON
BCPL
APL
PL/1
PL360
ALGOL68
Basic
SIMULA
LISP
COBOL
ALGOL
Fortran
1950
4
Assemblersprachen
Maschinensprachen
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Übersicht
Java Historie
1991 im Green-Projekt (Sun Microsystems) als Sprache Oak entwickelt.
Ziel: einfache, objekt-orientierte, plattformunabhängige Sprache zur Programmierung von
Micro-Computern in Geräten der Konsumelektronik
1995 von Sun Microsystems ersmals als Sprache Java vorgestellt
1995 Netscape lizenziert mit dem Navigator 2.0 erstmals Java-Technologie von Sun - JavaApplets können über das Netz von einem zentralen Server geladen werden.
1996 Freigabe des Java Developer Kit 1.0 – JDK 1.0 und JDK 1.1, das ab April 1997 offiziell
als Java One auf dem Markt ist
1998 JDK 1.2 enthält als Erweiterung insbesondere die Java Foundation Classes mit dem
Swing Toolset zur Gestaltung graphischer Oberflächen (GUI). Ab der Version 1.2 werden die
JDK-Versionen 1.x als Java 2 SDK bezeichnet (SDK=Software Development Kit).
2000 - 2003 JDK 1.3, 1.4: Fehlerkorrekturen/Performance-Verbesserungen gegenüber
Vorgängerversionen
2004 JDK 1.5 (Java 5): Umfangreiche Programmiersprachen-Erweiterungen, zum Beispiel
Generics, Boxing / Unboxing
Aktuelle Version: JDK 1.6
5
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Übersicht
Das Konzept der Virtual Machine in Java
class Appl
...
...
übersetzt
Bytecode
Xxxxx.class
Java-Programm
Xxxxx.java
Java-Compiler
Aufruf:
javac Xxxxx.java
<Opcodes>
iadd
...
entspricht
führt aus
Java-Interpreter
Aufruf:
java Xxxxx
Java Virtual Machine
implementiert
6
1
5
1+5=6
Bei der Java Virtual Machine handelt es
sich nicht um einen tatsächlich existierenden
Prozessor, sondern nur um die Spezifikation
eines solchen.
Daher wird bei Java ein Programm gebraucht,
das einen real existierenden Rechner in eine
Java-Maschine verwandelt.
Hierbei handelt es sich um den Java-Interpreter.
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Agenda
Übersicht
Programmierkonstrukte
Programmierkonstrukte
Klassen und Interfaces
JDK
Literatur
Programmierkonstrukte
Ein einfaches Java-Programm
Objektorientiert: keine
Methoden außerhalb von
Klassen!
Modifier
main-Methode für
Programmstart
Klasse des JDK
class Sample {
public static void main (String[] arg) {
System.out.println("Hello World!");
}
}
Punkt-Notation zum
Zugriff auf Variablen
8
Klassenmethoden
mit static
Punkt-Notation zum
Zugriff auf Methoden
String Literal
Separator
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Programmierkonstrukte
Lexikalische Konventionen
Variablennamen
Kleinbuchstaben variable
Methodennamen
Kleinbuchstaben methode()
Klassennamen Großbuchstaben Person
symbolische Konstanten
alle Buchstaben groß
MAXIMUM
Bei zusammengesetzten Namen werden ab dem 2. Wort jeweils der 1. Buchstabe
des Wortes groß geschrieben, z.B. die Variable firstName, die Methode
getFirstName()
Stets sprechende Namen wählen!
9
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Programmierkonstrukte
Datentypen in Java
Datentyp
Einfacher
(elementarer, primitiver) Typ
Wahrheitswerte
- boolean
Zeichen-Typ
- char
Integer-Typ
- byte
- short
- int
- long
10
Referenztyp
numerischer
Typ
KlassenTyp
ArrayTyp
SchnittstellenTyp
Gleitpunkt-Typ
- float
- double
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Agenda
Übersicht
Programmierkonstrukte
Klassen
Klassen
undund
Interfaces
Interfaces
JDK
Literatur
Klassen und Interfaces
Referenzsemantik in Java:
Was geschieht und warum?
public class Kunde {
private String name;
…
k1 = new Kunde (“Huber“);
k2 = new Kunde (“Müller“);
k2 = k1;
k2.setName(“Schultz“);
System.out.prinln(
k1.getName());
…
public Kunde(String name){
this.setName(name);
}
public void setName(String
name){
this.name = name;
}
public String getName(){
return this.name;
}
12
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Klassen und Interfaces
Garbage Collection
Klassen werden mit new instanziiert (Konstruktoraufruf)
Speicherplatz muss nicht explizit allokiert werden geschieht implizit durch die virtuelle
Maschine
Destruktoren müssen nicht programmiert werden Garbage Collection erfolgt automatisch
durch die virtuelle Maschine
Wie kann das funktionieren?
13
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Klassen und Interfaces
Vererbung
class Article {
int code;
int price;
boolean available() {...}
void print() {...}
Article(int c, int p) {...}
}
Oberklasse
(Basisklasse)
class Book extends Article {
String author;
String title;
void print() {...}
Book(int c, int p,
String a, String t) {...}
}
Unterklasse
Schlüsselwort extends zeigt
Vererbung an
Nur Einfachvererbung in Java!
erbt: code, price, available, print
ergänzt: author, title, Konstruktor
überschreibt: print
Article
code
price
available()
print()
Article(c, p)
Book
author
title
print()
Book(c, p, a, t)
Wenn keine Oberklasse angegeben wird, ist sie Object (implizite Oberklasse aller Java-Klassen)
14
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Klassen und Interfaces
Das Denken in Schnittstellen (Interfaces) ist eines der
wichtigsten Konzepte der Programmierung
Interface:
cd Collections
– beschreibt die Außensicht, das heißt die
Sicht des Nutzers
– ist einfach
– ist vielseitig verwendbar
Klasse:
– enthält die Innensicht, das heißt die Sicht
des Programmierers
– ist komplex
«interface»
List
+
+
+
+
add() : void
get() : void
contains() : void
remove() : void
«realize»
«realize»
– ist speziell
ArrayList
15
LinkedList
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Klassen und Interfaces
Java bietet Interfaces als Sprachkonstrukt an
Deklaration eines Interface
Interfaces definieren das Verhalten von Objekten
Interfaces enthalten:
– Instanzmethoden
– Konstanten
Interfaces haben keine Konstruktoren
Interfaces enthalten keine Implementierung
public interface List<E> {
public void add(E element);
public void remove(E element);
…
}
16
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Klassen und Interfaces
Verwendung eines Interface
Man sagt: Eine Klasse implementiert ein Interface, wenn sie jede einzelne Methode des
Interfaces bereitstellt
Eine Klasse kann beliebig viele Interfaces implementieren
Ein Interface kann von beliebig vielen Klassen implementiert werden
Eine Referenz auf ein Interface kann überall dort im Code eingesetzt werden, wo auch eine
Referenz auf eine Klasse erlaubt ist
public class ArrayList<E> implements List<E>{
E[] elements;
public void add(Object o){
…
}
…
}
17
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Klassen und Interfaces
Übersicht über Collections, Maps und deren Interfaces
Collection
List
Map
Set
SortedMap
HashMap
Hashtable
ArrayList
Vector
HashSet
SortedSet
TreeMap
LinkedList
Interface
Stack
18
TreeSet
Class
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Agenda
Übersicht
Programmierkonstrukte
Klassen und Interfaces
JDK
JDK
Literatur
JDK
Java Development Kit (JDK)
20
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
JDK
Java API Dokumentation (Application Programmers‘ interface)
http://java.sun.com/javase/6/docs/api/
21
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Agenda
Übersicht
Programmierkonstrukte
Klassen und Interfaces
JDK
Literatur
Literatur
Literatur
Literatur und Links
Arnold K., Gosling J.: The Java Programming
Language. Addison-Wesley.
Krüger, Guido. Handbuch der JavaProgrammierung. Addison-Wesley,
http://www.javabuch.de/ kostenlos im Download
als HTML-Version
(Nachfolger von "Go To Java 2")
WWW:
23
– http://java.sun.com/ - Java-Seiten von Sun
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, SS 2008. 8.4.2008
Herunterladen