77
' 2002 MobilCom Multimedia GmbH All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photography, recording, or any information storage and retrieval system, without permission from MobilCom Multimedia GmbH. Java for Newbies April 2002

JavaSchulung_NeuesLayout

Embed Size (px)

DESCRIPTION

April2002 © 2002 MobilCom Multimedia GmbH All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photography, recording, or any information storage and retrieval system, without permission from MobilCom Multimedia GmbH. Inhalte Seite 2©MobilComMultimediaGmbH09.07.2002 Programmierer sind wie Köche Was istProgrammierung? Programme sind Kochrezepte Seite 3©MobilComMultimediaGmbH09.07.2002

Citation preview

Page 1: JavaSchulung_NeuesLayout

© 2002 MobilCom Multimedia GmbHAll rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photography, recording, or any information storage and retrieval system, without permission from MobilCom Multimedia GmbH.

Java for Newbies

April 2002

Page 2: JavaSchulung_NeuesLayout

Seite 2© MobilCom Multimedia GmbH 09.07.2002

Inhalte� Historisches zu Computersprachen� Was ist ein Compiler/Interpreter?� Java Virtual Machine� Variablentypen � Simple Kontrollstrukturen ( for, while,if, switch)� Ausnahmebehandlung� Was heißt Objektorientierte (OO) Programmierung?� Klassenkonzept� Vererbung� Polymorphie� Was ist eine GUI ( Vergleich AWT und Swing)� Zugriff auf Dateien ( lesen und schreiben)� Schnittstelle zur Datenbank, JDBC Treiber� Threads

Page 3: JavaSchulung_NeuesLayout

Seite 3© MobilCom Multimedia GmbH 09.07.2002

Was ist Programmierung?

Programmierer sind wie Köche

Programme sind Kochrezepte

Ausführen bedeutet, das Rezept zu testen

Page 4: JavaSchulung_NeuesLayout

Seite 4© MobilCom Multimedia GmbH 09.07.2002

Was ist ein Programm?�Die in der eigenen Sprache aufgesetzten

Befehlsfolgen nennt man auch Algorithmus.�Die in einer Programmiersprache formulierte

Version dieser Algorithmen wird Quellcode oder Quelltext genannt.

�Erst der vom Compiler (Übersetzer) erzeugte Maschinencode heißt dann (ausführbares) Programm.

�Oftmals wird aber in allen drei Fällen einfach nurvom Programm gesprochen.

Page 5: JavaSchulung_NeuesLayout

Seite 5© MobilCom Multimedia GmbH 09.07.2002

Wie werden Programme erstellt?�Problem, Aufgabe soll mittels Rechner gelöst

werden�Erstellung des Algorithmus�Quellcode: Formulierung der Algorithmen in

Programmiersprache�Übersetzung (Compilierung) des Quellcodes in

Maschinensprache�Ausführbares Programm in Hauptspeicher laden

und ausführen

Page 6: JavaSchulung_NeuesLayout

Seite 6© MobilCom Multimedia GmbH 09.07.2002

Von Compilern und InterpreternZwei Möglichkeiten, ein Programm zu übersetzen:

� Ein in Form einer Programmiersprache geschriebenes Programm (Quellcode) wird als Ganzes übersetzt, so dassdanach eine ausführbare Programmdatei entsteht. Diese Art der Übersetzung nennt man Compilieren. Das Programm dazu heißt Compiler.

� Oder direkt bei der Ausführung des Programms werden Zeilefür Zeile Quelltext eingelesen, übersetzt und ausgeführt. Dieses spezielle Programm heißt Interpreter; es liegt keine ausführbare Datei vor, nur der Quellcode.

Page 7: JavaSchulung_NeuesLayout

Seite 7© MobilCom Multimedia GmbH 09.07.2002

Wo steht Java?� Nachteiler der Interpreter gegenüber Compilern

� Die Programme müssen im Quelltext verkauft werden und damit können Algorithmen und Teile des Programms unautorisiert genutztwerden.

� Da die Erzeugung des Maschinencodes erst während der Laufzeit geschieht, sind diese Programme wesentlich langsamer als kompilierte.

� Java ist beides � JAVAC ist er Compiler – er übersetzt nicht in Maschinencode

sondern in Bytecode (.class).� JAVA, wie die Sprache selbst, heißt der Interpreter, mit dem das

Programm (Bytecode in Maschinencode) ausgeführt wird.

Page 8: JavaSchulung_NeuesLayout

Seite 8© MobilCom Multimedia GmbH 09.07.2002

Woher nehmen?�Java wurde von Sun entwickelt und dort kann man sich

den Compiler besorgen! Der JDK kann frei aus dem Internet geladen werden www.java.sun.com/products

�Es gibt komplette Entwicklungsumgebungen (IDE)�Visual J++�Borland Java-Addon�JBuilder�Visual Cafe�Visual Age�Forte

Page 9: JavaSchulung_NeuesLayout

Seite 9© MobilCom Multimedia GmbH 09.07.2002

Java Virtual Machine�Zwischen dem Prozessor und dem vom Compiler

erzeugten Byte Code steht die VM�Byte code Verifier�Class Loaders�Garbage Collection�Security Manager

Page 10: JavaSchulung_NeuesLayout

Seite 10© MobilCom Multimedia GmbH 09.07.2002

Java Virtual Machine

Zusammenhang zwischen VM, realen Rechnern und Code

Page 11: JavaSchulung_NeuesLayout

Seite 11© MobilCom Multimedia GmbH 09.07.2002

Die erste Java-Applikation

UltimateQuestion// Unser erstes Programm: Dateiname UltimateQuestion.javaclass UltimateQuestion{

public static void main( String args[]){

String secondLine = “life, the universe and everything?“;System.out.println();System.out.println( “What is the answer to “);System.out.println(secondLine);

} // End main} // end ultimateQuestion

Page 12: JavaSchulung_NeuesLayout

Seite 12© MobilCom Multimedia GmbH 09.07.2002

Die erste Java-Applikation in Bytecode

UltimateQuestion

Page 13: JavaSchulung_NeuesLayout

Seite 13© MobilCom Multimedia GmbH 09.07.2002

Compiler und Interpreter Aufruf

Aufruf mit der Kommandozeile

Page 14: JavaSchulung_NeuesLayout

Seite 14© MobilCom Multimedia GmbH 09.07.2002

Pfade setzen

BenutzervariablenSystemvariablen

Diese Pfade werden von den entsprechenden Programmen benutztBei einer Entwicklungsumgebung können sie auch dort gesetzt werden

Page 15: JavaSchulung_NeuesLayout

Seite 15© MobilCom Multimedia GmbH 09.07.2002

Analyse 1- Kommentare

//***************************************************************************/*** Main application of the MCBS for customer service sectors.* @author achim* @author last modification $Author$* @version $Revision$ of $Date$*/

public class Service extends McGuiApp{

// Class Initializationstatic{

McApp.addResource((McResource) ResourceBundle.getBundle("mcbs.resource.McServiceResource"));McApp.addResource((McResource) ResourceBundle.getBundle("mcbs.resource.McStockResource"));

...}

Kommentare dienen als Gedächtnisstütze des Programmierers

Page 16: JavaSchulung_NeuesLayout

Seite 16© MobilCom Multimedia GmbH 09.07.2002

Analyse 1- Kommentare 2Als Java Doc sieht das so aus

Page 17: JavaSchulung_NeuesLayout

Seite 17© MobilCom Multimedia GmbH 09.07.2002

Analyse 2 – Konventionen 1

// Unser erstes Programm: Dateiname UltimateQuestion.javaclass UltimateQuestion{ ...} // end ultimateQuestion

� Java ist streng typisiert, d. h. besteht nur aus Klassen� class ... Bezeichnet diejenigen Objekte, die in Java interagieren� Eine Klasse hat einen Namen – hier UltimateQuestion� Klassen Anfang und Ende sind mir { } gekennzeichnet� Jedes Programm muss eine Klasse sein

� Namenskonvention� Erlaubt sind als Bezeichner alle einfachen Buchstaben, alle Zahlen,

Unterstriche und $ - allerdings KEINE Schlüsselwörter� Java ist case-sensitive

Page 18: JavaSchulung_NeuesLayout

Seite 18© MobilCom Multimedia GmbH 09.07.2002

Analyse 3 – Konventionen 2

�Semikolon� Jede Kommandozeile schließt mit einem Semikolon ; ab

�Klammerung� Geschweifte Klammer { } bei funktionalen Blöcken wie

Klassen, Methoden, Kontrollstrukturen� Eckige Klammer [ ] bei Arrays� Runde Klammer ( ) bei Parameterlisten und Bedingungen

von Kontrollstrukturen

Page 19: JavaSchulung_NeuesLayout

Seite 19© MobilCom Multimedia GmbH 09.07.2002

Analyse 4 – Die Methode main

public class UltimateQuestion{

public static void main( String args[]){

...} // End main

} // end ultimateQuestion

� Die Methode Main – der Beginn einer jeden Java-Applikation� Der Funktionskopf dieser Funktion ist fest vorgegeben� Jedes Javaprogramm beginnt mit einer Hauptklasse, in der die

Methode main() definiert wird� Die Ausführung der Applikation beginnt mit der ersten Anweisung im

Funktionsrumpf von main()

Page 20: JavaSchulung_NeuesLayout

Seite 20© MobilCom Multimedia GmbH 09.07.2002

Analyse 5 - Datentypen und Variablen 1

public static void main( String args[]){

String secondLine = “life, the universe and everything?“;System.out.println();System.out.println( “What is the answer to “);System.out.println(secondLine);

} // End main

� Datentypen und Variablen� Datentypen geben an, von welcher Art ein Objekt ist

�Hier ist das Objekt secondLine vom Typ String� Variablen müssen vor ihrer Verwendung deklariert und initialisiert werden

�Typ Bezeichner;�Bezeichner = Wert;

� Das geht auch zusammen: Typ Bezeichner = Wert;

Page 21: JavaSchulung_NeuesLayout

Seite 21© MobilCom Multimedia GmbH 09.07.2002

Variablen �Variablen

� Instanzvariablen�Werden zusammen mit einer Instanz angelegt

�Klassenvariablen�Existieren nur einmal und unabhängig von Objekten - static

�Lokale Variablen�Nur existent innerhalb des Blockes, in dem sie definiert sind

� Instanzen�Enthalten eine Referenz auf ein Klassenobjekt

Page 22: JavaSchulung_NeuesLayout

Seite 22© MobilCom Multimedia GmbH 09.07.2002

Datentypen �Datentypen

�Einfache oder Build-In Datentypen, die bereits in der Sprache vorhanden sind

int, double, float, char, boolean, byte, long, short

�Referenz- oder Klassentypen�Klassenbibliothek von Java�Selbstgeschriebene Klassen

Page 23: JavaSchulung_NeuesLayout

Seite 23© MobilCom Multimedia GmbH 09.07.2002

Build-In Datentypen �Bedeutung und Wertebereich

�boolean false oder true�char Zeichen im Unicode 16 Bit�byte Ganzzahl 8 Bit�short Ganzzahl 16 Bit� int Ganzzahl 32 Bit� long Ganzzahl 64 Bit� float Gleitkommazahl 32 Bit�double Gleitkommazahl 64 Bit

Page 24: JavaSchulung_NeuesLayout

Seite 24© MobilCom Multimedia GmbH 09.07.2002

Implizite und explizite Typumwandlung� Implizite Typumwandlung

�Einfache Datentypen (build-in) werden von Java implizit umgewandelt, wenn Ausdrücke mit verschiedenen Datentypen vorhanden sind.

�Explizite Typumwandlung – cast�Um einen Datentyp explizit in einen anderen

umzuwandeln, das heißt eine Typkonvertierung zu erzwingen, muss die Variable gecastet werden.

�Das geht mit allen Datentypen.�Bei falschem Cast wird eine ClassCastException

geworfen.

Page 25: JavaSchulung_NeuesLayout

Seite 25© MobilCom Multimedia GmbH 09.07.2002

Implizite Typumwandlung�Umwandlungsregeln

� byte nach short, int, long, float, double� char nach int, long, float, double� short nach int, long, float, double� int nach long, float, double� long nach float, double� float nach double� class A nach class (interface)B, wenn A von B abgeleitet� interf. A nach interface B, wenn A von B abgeleitet� null nach belieb. Klassen-, Schnittstellen-, Arraytyp� A[] nach B[], wenn A von B abgeleitet

Page 26: JavaSchulung_NeuesLayout

Seite 26© MobilCom Multimedia GmbH 09.07.2002

Explizite Typumwandlung - Casting

Erzwungene TypkonvertierungBezeichner = (Konvertierungs-Datentyp) Bezeichner;

Größere Datentypen können auf diese Weise in kleinere umgewandelt werden, oft ohne Compilerwarnung

Casting von Basisklassen in abgeleitete Klasse nur dann, wenn man sich über den Typ des Objektes sicher ist

Page 27: JavaSchulung_NeuesLayout

Seite 27© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen�Kontrollstrukturen sind Abfragen und Schleifen�Abfragen oder Selektoren

�Der switch-case Block�Der if-else Block

�Schleifen�Die for-Schleife�Die while-Schleife�Die do-while-Schleife

Page 28: JavaSchulung_NeuesLayout

Seite 28© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen - Abfragen

Abfragen oder Selektoren dienen dazu, den Programmfluss in verschiedene Richtungen zu verzweigen, je nach Ausgangspunkt.Dazu werden immer Bedingungen auf ihren Wahrheitsgehalt oder ihren Wert geprüft.

Page 29: JavaSchulung_NeuesLayout

Seite 29© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen – Abfragen 1� Der if-else Block

if ( boolscher Ausdruck){// Anweisungen;}else{// Anweisungen;}

� Die Logik dahinterfalls der boolsche Ausdruck wahr ist, wird der if Zweig durchlaufen, ist er falsch, der else Zweig

Page 30: JavaSchulung_NeuesLayout

Seite 30© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen – Abfragen 2� Der switch-case Block

switch ( Variable){case Wert1: Anweisung1; break;case Wert2: Anweisung2; break;...case Wertn: Anweisungn; break;default: Defaultanweisung; break;}

� Die Logik dahinter� Je nach Wert der Variablen wird in eine case Anweisung gesprungen� Stimmt Wert mit keinem case überein, wird default ausgeführt� Ohne break werden die Anweisungen hintereinander ausgeführt

Page 31: JavaSchulung_NeuesLayout

Seite 31© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen - Schleifen

Schleifen dienen dazu, immer wiederkehrende Operationen auszuführen, bis eine gewisse Abbruchsbedingung erfüllt ist.Vorsicht! Hier kann es zu Endlos-Schleifen kommen, wenn die Abbruchbedingung niemals erfüllt werden kann.

Page 32: JavaSchulung_NeuesLayout

Seite 32© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen - Schleifen 1Kopfgesteuert� Die for Schleife

for(Initialisierung;boolscher Ausdruck;Reinitialisierung) {

// Anweisungen;}

� Die Logik dahinter� Initialisierung� Boolschen Ausdruck auswerten� Wenn wahr, dann Schleifenblock durchlaufen, sonst letzter Punkt���

Page 33: JavaSchulung_NeuesLayout

Seite 33© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen - Schleifen 2

Kopfgesteuert� Die while Schleife

while(boolscher Ausdruck) {// Anweisungen;

}� Die Logik dahinter

� Solange der boolsche Ausdruck wahr ist, wird der Schleifenblock durchlaufen.

Page 34: JavaSchulung_NeuesLayout

Seite 34© MobilCom Multimedia GmbH 09.07.2002

Kontrollstrukturen - Schleifen 3

Fußgesteuert� Die do-while Schleife

do{// Anweisungen;}

while ( boolscher Ausdruck)� Die Logik dahinter

� Zuerst wird die Anweisung ausgeführt, dann erst der Wahrheitswert des boolschen Ausdrucks überprüft.

Page 35: JavaSchulung_NeuesLayout

Seite 35© MobilCom Multimedia GmbH 09.07.2002

Klassenkonzept

Einführung des Klassenkonzeptes�Eine Klasse ist ein Bauplan für ein Objekt. Inhalte

sind:�Die Daten des Objektes�Die Methoden, die mit diesen Daten arbeiten�Konstanten� Innere Klassen

�Schlüsselwort ist class

Page 36: JavaSchulung_NeuesLayout

Seite 36© MobilCom Multimedia GmbH 09.07.2002

Klassenfunktionen - Methoden

Die Methoden einer Klasse geben ihre Aktionen an:

�Methoden haben einen Rückgabewert. Das Schlüsselwort heißt return.

�Methoden haben eine Parameterliste. Es kann mehrere Methoden desselben Namens geben, die sich allerdings in ihrer Parameterliste unterscheiden müssen. Das nennt man Überladung.

Page 37: JavaSchulung_NeuesLayout

Seite 37© MobilCom Multimedia GmbH 09.07.2002

Klassenkonzept - Konstruktor

Der Konstruktor initialisiert die Datenelemente einer Klasse

� Jeder Klasse braucht einen Konstruktor� Standardkonstruktor wird automatisch zugewiesen, falls kein

eigener vorhanden� Beliebig viele Konstruktoren (Überladung)� Kein Rückgabewert: Der Rückgabewert ist das Objekt der Klasse

selbst. Schlüsselwort this� Konstruktoren heißen wie die Klasse selbst� Aufruf nur bei der Instanzbildung� Konstruktoren können sich gegenseitig aufrufen

Page 38: JavaSchulung_NeuesLayout

Seite 38© MobilCom Multimedia GmbH 09.07.2002

Klassenkonzept – innere Klassen

Klassen können andere Klassen als innere Klassen enthalten

� Innere Klassen sind nur innerhalb der Klasse sichtbar, in der sie definiert sind.

�Ohne Namen - anonyme Klassen.�Datenkapselung und modulares Programmieren.

Page 39: JavaSchulung_NeuesLayout

Seite 39© MobilCom Multimedia GmbH 09.07.2002

Instanzen

Die Objekte einer Klasse heißen Instanzen�Schlüsselwort zur Erstellung einer Instanz ist new

Datentyp Bezeichner = new Klassenname;�Aufruf des zuständigen Konstruktors dieser

Klasse�Zugriff auf Methoden (oder Variablen) immer über

diese Instanz�Bezeichner.Methode(Parameterliste);

Page 40: JavaSchulung_NeuesLayout

Seite 40© MobilCom Multimedia GmbH 09.07.2002

Referenzen

� Instanzen werden immer über Referenzen angesprochen, Variablen einfacher Datentypen nie.

�Referenzen sind nicht an ein Objekt gebunden.�Wert für die „unmögliche“ Referenz (null)�Mit final wird die Referenz konstant, nicht das

Objekt, auf das sie verweist.�Java kennt keine Zeiger.

Page 41: JavaSchulung_NeuesLayout

Seite 41© MobilCom Multimedia GmbH 09.07.2002

Referenzen verweisen auf Instanzen

Einfache Datentypen sind keine Referenzen

Page 42: JavaSchulung_NeuesLayout

Seite 42© MobilCom Multimedia GmbH 09.07.2002

Arrays�Java definiert einen Array-Datentyp für Klassen

und einfache Typen.�Arrays sind dadurch in das Objektkonzept

eingeordnet.�Es existieren mehrdimensionale Arrays.�Arraygrenzen beginnen mit dem Index 0.

Page 43: JavaSchulung_NeuesLayout

Seite 43© MobilCom Multimedia GmbH 09.07.2002

Arrays�Definition eines Array

�Datentyp[] Bezeichner = new Klassenname[Ganzzahl]� Ist der Datentyp eines Arrays elementar, dann

enthält das Array direkt die Werte, ansonsten nur Referenzen(null). Die Objekte müssen erst noch zugewiesen werden.

�Mehrdimensionale Arrays�Datentyp [] []...Name = new Klassenname [n] [m] ...

Page 44: JavaSchulung_NeuesLayout

Seite 44© MobilCom Multimedia GmbH 09.07.2002

Vererbung

Vererbung erweitert die Benutzbarkeit einer Klasse� Die Mutter aller Objekte: java.lang.object

� Alle Klassen, die nicht explizit von einer anderen Klasse abgeleitet sind, sind automatisch von object abgeleitet

� Das Schlüsselwort extends (erweitert) gibt uns an, von welcher Klasse abgeleitet wird:

class Fenster extends Frame� Der Konstruktor der Basisklasse wird mir super versorgt.

Page 45: JavaSchulung_NeuesLayout

Seite 45© MobilCom Multimedia GmbH 09.07.2002

Vererbung - Polymorphie

Anpassung abgeleiteter Klassen durch Überschreibung geerbter Methoden:

�Der Aufruf einer überschriebene Methode der Basisklasse erfolgt mit dem Schlüsselwort super

�Effekt: gleichlautende Operationen können auf verschiedene Objekte angewandt werden

Page 46: JavaSchulung_NeuesLayout

Seite 46© MobilCom Multimedia GmbH 09.07.2002

Polymorphismus

Der Begriff steht für die Überschreibung (manchmal auch Überladung) von Methoden

�Überladung�Eine Funktion mit demselben Namen, aber

unterschiedlicher Parameterliste.�Überschreibung

�Eine Funktion, die in der Basisklasse anders implementiert ist als in der abgeleiteten Klasse.

Page 47: JavaSchulung_NeuesLayout

Seite 47© MobilCom Multimedia GmbH 09.07.2002

Objektorientierung 1� Kontinuierliche Steigerung der Abstraktion

� Bitmuster -> Makrobefehl� Makro -> Prozeduren� Prozeduren -> abstrakte Datentypen� Abstrakte Datentypen -> Objekte

� Vorteile� Wiederverwendbarkeit bereits implementierten Codes� Schneller Entwicklung von Datentypen durch Vererbung und

Polymorphismus� Geringere Fehleranfälligkeit durch Kapselung� Bessere Lesbarkeit der Programme

Page 48: JavaSchulung_NeuesLayout

Seite 48© MobilCom Multimedia GmbH 09.07.2002

Objektorientierung 2

�Wie schon erwähnt ist Java keine prozedurale, sondern eine objektorientierte Sprache. Was bedeutet das?� In einer prozeduralen Sprache definiert man Variablen und

setzt Anweisungen auf sie ab. Diese Anweisungen kann man auch in Funktionen bündeln. Dabei sind Daten (in Variablen) und Funktionen, die mit den Daten arbeiten, völlig unabhängig voneinander.

� Bei OO Sprachen geht man davon aus, dass bestimmte Daten und die Funktionen, die mit diesen Daten arbeiten, zusammengehören. Eine solche Einheit von logisch zusammenhängenden Daten und Funktionen bildet ein Objekt.

Page 49: JavaSchulung_NeuesLayout

Seite 49© MobilCom Multimedia GmbH 09.07.2002

Interfaces – abstrakte Klassen

Ein Interface ist die Antwort von Java auf Mehrfachvererbung

� Interfaces sind Klassen, die nur aus leeren Methoden und Konstanten bestehen.

�Das Schlüsselwort, um ein Interface zu erzeugen, heißt interface (die Analogie zu class).

�Das Schlüsselwort, um von einem Interface zu erben, heißt implements (die Analogie zu extends).

Page 50: JavaSchulung_NeuesLayout

Seite 50© MobilCom Multimedia GmbH 09.07.2002

Abstrakte Klassen

Abstrakte Klassen dienen als Verzweigungspunkte in der Klassenhierarchie

�Schlüsselwort zur Erstellung heißt abstractabstract class Name

� Ist eine Methode einer Klasse abstract, dann muss es auch die Klasse sein.

�Nur Referenzen, keine Instanzen möglich.

Page 51: JavaSchulung_NeuesLayout

Seite 51© MobilCom Multimedia GmbH 09.07.2002

Finale Klassen

Finale Klassen können nicht für andere Klassen als Basisklassen dienen

�Schlüsselwort zur Erstellung heißt finalfinal class Name

�Finale Methode einer Klasse können in davon abgeleiteten Klassen nicht überschrieben werden.

�Finale Attribute entsprechen Konstanten.

Page 52: JavaSchulung_NeuesLayout

Seite 52© MobilCom Multimedia GmbH 09.07.2002

Packages

Gruppierung zusammengehörender Klassen

�Schlüsselwort zur Erstellung heißt packagepackage Packagename;

� Importieren - import - muss man alle packages außer java.lang.*

import Packagename.MeineKlasse;

Page 53: JavaSchulung_NeuesLayout

Seite 53© MobilCom Multimedia GmbH 09.07.2002

Zugriffsmodifizierer

Verschiedene Zugriffsspezifizierer, die der Kapselung, also dem Zugriff innerhalb und außerhalb der Klasse dienen:

� Private� Nur sichtbar und zugreifbar innerhalb der Klasse

� Protected� Sichtbar und zugreifbar innerhalb der Klasse und abgeleiteter Klassen

� Ohne Angabe oder „friendly“� Innerhalb eines Pakets überall sichtbar, von außerhalb wie private

� Public� Überall sichtbar und zugreifbar

Page 54: JavaSchulung_NeuesLayout

Seite 54© MobilCom Multimedia GmbH 09.07.2002

Ausnahmebehandlung

Fehler und Ausnahmen innerhalb eines Programmes�Fehlerklassen müssen von Throwable abgleitet

werden.�Fehler werden mittels throw geworfen.�Mit dem try–catch–Block werden sie aufgefangen.�Finally wird immer durchlaufen, egal ob was

gefangen wurde, ist allerdings optional.

Page 55: JavaSchulung_NeuesLayout

Seite 55© MobilCom Multimedia GmbH 09.07.2002

ExceptionklassenHierarchie der vorgegebenen Javaklassen

Page 56: JavaSchulung_NeuesLayout

Seite 56© MobilCom Multimedia GmbH 09.07.2002

Ein- und Ausgabeströme

Unter Streams versteht man einen Datenfluss zwischen Sender und Empfänger:

� Je nach Art von Sender/Empfänger gibt es entsprechende Streams.

� Datenfluss von Tastatur ist ein Eingabestrom System.in.� Datenfluss an den Bildschirm ein Ausgabestrom System.out.� Es gibt spezielle Javaklassen, sogenannte Reader und Writer,

mit denen man nicht nur von Tastatur oder Bildschirm abhängig ist.

Page 57: JavaSchulung_NeuesLayout

Seite 57© MobilCom Multimedia GmbH 09.07.2002

Dateiansprache (1/1)

Lesen aus einer Datei� Inhalte können direkt über eine FileReader Instanz

eingelesen werden.�Oder wie eine Tastatureingabe, also mit einem

Eingabestrom.� Immer in einem try-catch Block behandeln, weil die

Datei ja nicht existent sein könnte (FileNotFoundExeption).

Page 58: JavaSchulung_NeuesLayout

Seite 58© MobilCom Multimedia GmbH 09.07.2002

Dateiansprache (2/2)

Schreiben in eine Datei�File-Objekt für eine Datei einrichten.�Ausgabestrom für das File-Objekt erzeugen.�PrintWriter- Objekt für den Ausgabestrom

erzeugen.�Analog zu Lesen.

Page 59: JavaSchulung_NeuesLayout

Seite 59© MobilCom Multimedia GmbH 09.07.2002

GUI – Graphical User Interface (1/3)

Zusammenfassung aller Klassen zur Oberflächenerstellung

�Package: java.awt.* (abstract window toolkit)

�Enthält alle Klassen, um Benutzerschnitt-stellen anzufertigen und Bilder und Graphiken zu zeichnen

Page 60: JavaSchulung_NeuesLayout

Seite 60© MobilCom Multimedia GmbH 09.07.2002

GUI- Eventsteuerung (2/3)

Zusammenfassung aller Klassen zur Eventsteuerung

�Package: java.awt.event

�Adapterklassen vs.Interfaces

Page 61: JavaSchulung_NeuesLayout

Seite 61© MobilCom Multimedia GmbH 09.07.2002

GUI – Swing (3/3)

Swing ist eine Erweiterung und Neuent-wicklung von Klassen zur Oberflächen-erstellung

�Package: javax.swing.*�Enthält wie AWT Klassen, um Benutzerschnittstellen

anzufertigen und Bilder und Graphiken zu zeichnen, allerdings komfortabler und logischer.

�Look and Feel: Java kann auf allen Plattformen gleich aussehen (Metal).

Page 62: JavaSchulung_NeuesLayout

Seite 62© MobilCom Multimedia GmbH 09.07.2002

GUI – Klassenbibliothek AWT

Zusammenfassung von Layouts, Farben, Oberflächenelemente, Toolkit etc.

�Im Package: java.awt.* enthaltene Klassen�Window�Frame�Button�Menue�Panel�Label

Page 63: JavaSchulung_NeuesLayout

Seite 63© MobilCom Multimedia GmbH 09.07.2002

GUI – Klassenbibliothek EventEreignissteuerung in Benutzeroberflächen

�Im Package: java.awt.event.* stehen die Adapterklassen und die Listenerinterfaces und die Events� Interface ActionListener� Interface MouseListener� Interface WindowListener�WindowAdapter�MouseEvent

Page 64: JavaSchulung_NeuesLayout

Seite 64© MobilCom Multimedia GmbH 09.07.2002

GUI - Layoutmanager

Eine Vorschrift, um zur Laufzeit Dimensionierung und Position von Containerobjekten zu bestimmen:

� Alle Layoutklassen sind von direkt von Objekt abgeleitet� FlowLayout: Standard für Panels und Applets� BorderLayout: Standard für Dialoge und Frames� GridLayout: Einteilung in Zeilen und Spalten� GridBagLayout: verschiedene Größen vertikal und

horizontal� CardLayout: verschiedene Bedienelemente zu

unterschiedlichen Zeiten

Page 65: JavaSchulung_NeuesLayout

Seite 65© MobilCom Multimedia GmbH 09.07.2002

GUI - Windowklassen

Die von Window abgeleiteten Klassen erzeugen Fenster mit Titelleiste und Rahmen und WindowsEvents

Klassenhierarchie

Page 66: JavaSchulung_NeuesLayout

Seite 66© MobilCom Multimedia GmbH 09.07.2002

Applets

� Die Methode init() - der Beginn jedes Applets – ersetzt die Methode main() in den Applikationen.

� Importieren muß man java.applet.* oder javax.swing.JApplet.*

� Sind keine eigenständigen Programme, können also auch nicht mit dem Interpreter aufgerufen werden.

� Stattdessen in HTML-Datei referenzieren und im Applet-Viewer oder einen Web-Browser ausführen.

Page 67: JavaSchulung_NeuesLayout

Seite 67© MobilCom Multimedia GmbH 09.07.2002

Applets – HTML Dokument

Page 68: JavaSchulung_NeuesLayout

Seite 68© MobilCom Multimedia GmbH 09.07.2002

Appletviewer

Page 69: JavaSchulung_NeuesLayout

Seite 69© MobilCom Multimedia GmbH 09.07.2002

Datenbankschnittstelle (1/6)

Die Datenbankschnittstelle heißt JDBC (Java DataBase Connectivity)

� Java stellt keine Datenbank zur Verfügung, sondern benutzt Schnittstellen zwischen Programm und DB.

�Es ist ein Treiber nötig, der die JDBC-Befehle versteht, übersetzt und an die Datenbank weiterleitet.

�Es existiert nur eine kleine Liste von Treibern.�Aber es gibt ODBC, eine Schnittstelle zwischen MS

und Datenbankanbindungen.

Page 70: JavaSchulung_NeuesLayout

Seite 70© MobilCom Multimedia GmbH 09.07.2002

Datenbankschnittstelle (2/6)

Wichtige Klassen des JDBC� Driver: Implementierung und Registrierung von Treibern� DriverManager: Herstellen einer Verbindung zwischen

Programm und DB. Zuvor pssenden Treiber unter DriverManager regestrieren

� Connection: Verbindung zur DB� Statement: Aufsetzen und Abschicken von SQL Befehlern an

DB� ResultSet: Die aus der DB zurückgelieferten Daten

Page 71: JavaSchulung_NeuesLayout

Seite 71© MobilCom Multimedia GmbH 09.07.2002

Datenbankschnittstelle (3/6)

JDBC-ODBC Bridge�Inhalt von Java ist eine JDBC-ODBC Brücke,

die erlaubt, statt echter JDBC auch ODBC Treiber zu benutzen.

�Zugriff auf Datenbank in sechs Schritten.

Page 72: JavaSchulung_NeuesLayout

Seite 72© MobilCom Multimedia GmbH 09.07.2002

Datenbankschnittstelle (4/6)

JDBC-ODBC Bridge:� 1) Der JDBC Treiber wird geladen

Class.forName(„sun.jdbc.odbc.JdbcOdbcDriver“);

� 2) Verbindung wird hergestelltConnection = null;try{verbindung = DriverManager.getConnection(URL,

benutzername, passwort);}

Page 73: JavaSchulung_NeuesLayout

Seite 73© MobilCom Multimedia GmbH 09.07.2002

Datenbankschnittstelle (5/6)

JDBC-ODBC Bridge:� 3) Statement-Objekt erzeugen (Befehlsobjekt

erzeugen)Statement befehl = null;try{befehl = verbindung.createStatment();

}

� 4) Daten aus DB abfragen (Befehle abschicken)Resultset datenmenge;datenmenge = befehl.executeQuery(„Select * FROM DB.tabelle;“);

Page 74: JavaSchulung_NeuesLayout

Seite 74© MobilCom Multimedia GmbH 09.07.2002

Datenbankschnittstelle (6/6)

JDBC-ODBC Bridge:� 5) Daten verarbeiten (Methoden von ResultSet)

while (datenmenge.next()){variable1 = datenmenge.getString(“Spalte1“);variable2 = datenmenge.getInt(„ Spalte2“);[etc ja nach Datentyp]

}

� 6) Verbindung schließenverbindung.close();

Page 75: JavaSchulung_NeuesLayout

Seite 75© MobilCom Multimedia GmbH 09.07.2002

Nebenläufigkeit – Threads (1/2)

Parallelisierung von Handlungssträngen� Threads können genau 4 Zustände haben: Geburt, Laufen,

Nicht laufen, Tod� Entweder muss man die Klasse Thread erweitern, oder die

Klasse Runnable implementierenclass MyThread extends Threadclass MyThread extends Applet implements Runnable

� Gestartet wird ein Thread mit der Methode start(), die intern die Methode run() aufruft. Diese muss in der vonThread abgeleiteten Klasse überschrieben werden

Page 76: JavaSchulung_NeuesLayout

Seite 76© MobilCom Multimedia GmbH 09.07.2002

Nebenläufigkeit – Threads (2/2)

Multitasking: mehrere Prozesse laufen gleichzeitig auf einem System ab

� Threads können mit Prioritäten versehen werden, um ihnen Zeit auf der CPU zuzuweisen.

� Ein Thread wird mittels sleep stillgelegt oder mit interrupt() unterbrochen.

� synchronized – ermöglicht den Zugriff auf dieselbe Resource (threadsicher), indem der Zugriff von außen blockiert wird.

�Vorsicht! Deadlock!

Page 77: JavaSchulung_NeuesLayout

Seite 77© MobilCom Multimedia GmbH 09.07.2002

Javaschulung

ENDE