Java Crash Course - Fachbereich Informatik Hochschule Darmstadt

Werbung
2. Java Schnellkurs
Advanced Programming
Techniques
Wintersemester 2009/10
Prof. Dr. Bernhard Humm
Hochschule Darmstadt, FB Informatik
1
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009
Einordnung in den gesamten Kurs
1. Einführung
2. Java Schnellkurs
3. Programmieren gegen Schnittstellen
4. Software-Kategorien
5. Komponenten
6. Regeln zum Design von Komponenten
7. Dokumentieren und Testen
8. Fehlerbehandlung
9. Konfigurationsmanagement
10. Debugging, Tracing, Logging
11. Refactoring
2
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009
Agenda

Übersicht
Übersicht
Programmierkonstrukte
Klassen und Interfaces
JDK
Literatur
Übersicht
2000
Java im Kontext anderer Programmiersprachen
Java
1990
C++
OO TurboPASCAL
1980
Eiffel
COMMON
LISP
MODULA
PROLOG
Ada
SMALLTALK80
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, WS 09/10. 14.10.2009
Ü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 6
5
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009
Ü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
...
1
5
1+5=6
führt aus
Java-Interpreter
Aufruf:
java Xxxxx
entspricht
Java Virtual Machine
implementiert
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
Agenda
Übersicht
Programmierkonstrukte

Klassen
Interfaces
Klassen
undund
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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
«interface»
List
– ist einfach
– ist vielseitig verwendbar
 Klasse:
– enthält die Innensicht, das heißt die Sicht
des Programmierers
– ist komplex
+
+
+
+
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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
TreeSet
Class
18
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
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, WS 09/10. 14.10.2009
Agenda
Übersicht
Programmierkonstrukte
Klassen und Interfaces
JDK

Literatur
Literatur
Literatur
Literatur und Links
 Arnold K., Gosling J.: The Java Programming Language. AddisonWesley.
 Krüger, Guido. Handbuch der Java-Programmierung. Addison-Wesley,
http://www.javabuch.de/ kostenlos im Download als HTML-Version
(Nachfolger von "Go To Java 2")
 WWW:
– http://java.sun.com/ - Java-Seiten von Sun
– http://java.sun.com/docs/books/tutorial/index.html - Java tutorials
– http://java.sun.com/javase/6/docs/api/ - API Dokumentation
23
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009
Herunterladen