Programmieren mit JAVA

Post on 06-Jan-2016

47 views 0 download

description

Programmieren mit JAVA. Teil II. Zusammenfassung. Applikation vs. Applet sequentiell vs. objektorientiert Klasse, instanziieren, Objekt, Methode, Attribut if ... else Blockanweisung {} Bedingungsoperator switch ... case while , do ... while , for Schleifen. abstrakte Klasse. - PowerPoint PPT Presentation

Transcript of Programmieren mit JAVA

Programmieren mit JAVA

Teil II

Zusammenfassung

• Applikation vs. Applet• sequentiell vs. objektorientiert• Klasse, instanziieren, Objekt, Methode, Attribut

• if ... else• Blockanweisung {}• Bedingungsoperator• switch ... case• while, do ... while, for Schleifen

abstrakte Klasse

• keine direkten Instanzen• darf keine Implementierung von Methoden enthalten• charakterisiert durch Schlüsselwort abstract

• dienen der Strukturierung und Vereinbarung von Methodenschnittstellen

Vererbung

• ~ ist die Beziehung zwischen Superklasse und Sub-klasse (auch: abgeleitete Klasse)

• immer streng hierarchisch

• Methoden werden NICHT kopiert ! Nur formale Ver-knüpfung.

Vererbung

• Attribute hinzufügen• neue Methoden spezifizieren• vorhandene Methoden überladen• geerbte Methoden ergänzen

• JAVA unterstützt nur Einfachvererbung !

Überschreiben

• ~ bedeutet, dass bei Namensgleichheit von Methoden der Superklasse und abgeleiteter Klasse die Methoden der abgeleiteten Klasse die der Superklasse verdecken

Polymorphismus

• Lässt sich ein und dieselbe Operation auf Objekte unterschiedlicher Klassen anwenden, so ist diese Operation polymorph.

Bsp.:– Bei Objekten der Klasse Strecke bewirkt die Operation inc

ein kontinuierliches Inkrementieren bis zum Maximum des Wertebereichs.

– In einer Klasse Blickrichtung könnte die inc Operation so definiert sein, dass nach 359 auf 0 gesprungen wird.

Grundprinzipien der OOP

• Objekte heben die Trennung von Daten und Anwei-sungen auf

• Objekte tauschen Nachrichten aus und reagieren da-rauf. Anderen Kommunikationswege gibt es nicht

• Objekte erben Methoden und Attribute des Objektes in der zugehörigen Superklasse

• Objekte können ererbte Methoden und Attribute erwei-tern und verändern

• Wenn Objekte zu verschiedenen Klassen gehören, werden sie auf die gleiche Nachricht unterschiedlich reagieren (Polymorphismus)

Überladen, Überschreiben, Überschatten

Überladen:– nur bei Methoden, NICHT bei Operatoren (++)

– mehrere Methoden mit identischem Namen aber unter-schiedlichen Parameterlisten

– Methoden mit dem Schlüsselwort static können nicht über-laden werden !

Überladen, Überschreiben, Überschatten

Überschreiben:– Name UND Parameterliste sind gleich

– ermöglicht Spezialisierung von Objekten

Überschatten:– Variablen können überschattet werden

– Definition einer Variable mit anderem Typ als in der Superklasse

Hauptbestandteile der Sprache

• Token• Typen• Ausdrücke und Operatoren• Anweisungen• Klassen• Methoden• Schnittstellen• Pakete• Variablen

Token

• Zeichen, Merkmal

in JAVA gibt es fünf Arten von Token:– Schlüsselworte

– Bezeichner

– Literale

– Operatoren

– Trennzeichen

Die JAVA Token

Schlüsselworte:– alle Wörter, die essentieller Teil der JAVA-Sprachdefinition

sind

– Groß- und Kleinschreibung werden unterschieden !

Bsp.:public, class, static, void

Die JAVA Token

Bezeichner:– Namen für Klassen, Objekte, Variablen, Konstanten,

Methoden ...

– an erster Stelle darf KEINE Zahl stehen !

– Bezeichner sollten nicht mit Namen von JAVA-Paketen identisch sein

Bsp.:HelloWorld, main, args, System, out, println, j, n32e20

Die JAVA Token

Bezeichner:– Namenskonflikte werden über die Namensräume aufgelöst

Hierarchie:• Namensraum des Paketes

• Namensraum der Klasse

• Namensräume der Methoden (Bezeichner der Methodenparameter überdecken Attribute der Klasse !)

• Innerhalb der Methoden Namensräume in Blöcken

Die JAVA Token

Literal:– mit einem ~ können Variablen und Konstanten Werte

zugewiesen werden

– Ganzzahlliterale, Gleitpunktliterale, Zeichenliterale, Zeichenkettenliterale, Boolesche Literale

Bsp.:„HelloJava“, 42, false, true

Die JAVA Token

Trennzeichen:– alle Symbole für die Trennung und Zusammenfassung von

Code

Bsp.:( ) { } [ ] ; , . /* JAVA kennt nur diese 9 TZ */

Die JAVA Token

Operatoren:– Zeichen oder Zeichenkombination, die eine Operation mit

einer oder mehreren Variablen oder Konstanten angibt

+, -, *, /, % Arithmetische ~

+=, -=, *=, /=, %=, = Arithmetische Zuweisungs~

++, -- Inkrement-/Dekrement ~

&, |, ^, ~ Bit~

<<, >>, >>> Bitweise Verschiebe~

&=, |=, ^=, <<=, >>=, >>>= Bitweise Zuweisungs~

==, !=, <, >, <=, >= Vergleichs~

&&, ||, ! logische Vergleichs~

Die JAVA Token

Leerraum:– Zeichen zur übersichtlichen Gestaltung des Quelltextes

Bsp.:[Space], [Tab], [Zeilenende]

Die JAVA Token

Kommentar:– zur übersichtlichen Gestaltung des Quelltextes und zur

Dokumentation

Bsp.:/* Kommentar */

// Kommentar

/** Kommentar */

Typen

• Ein Typ gibt in der Computersprache an, wie ein einfaches Objekt (wie z.B. eine Variable) im Speicher des Computers dargestellt wird.

• Er enthält normalerweise ebenfalls Hinweise darüber, welche Operationen mit und an ihm ausgeführt werden können.

Typen

• JAVA besitzt 8 primitive Datentypen:– 4 Ganzzahldatentypen

– einen logischen Datentyp

– zwei Gleitzahltypen

– einen Zeichentyp

• primitiv bedeutet, dass diese Datentypen im System integriert und nicht als Objekte zu verstehen sind

Typen

• Datentypen sind in JAVA plattformunabhängig !!• besitzen immer einen wohldefinierten default-

Anfangswert, müssen also nicht zwingend initialisiert werden

Typen

Bezeichnung Typ Default-Wert

byte 8 Bit 0

short 16 Bit 0

int 32 Bit 0

long 64 Bit 0

float 32 Bit 0.0

double 64 Bit 0.0

char 16 Bit \u000

boolean 1 Bit false

Typen

Datenfelder:int antwort[];int[] antwort;

int antwort [] [];

int[] antwort = new int [5]; /* erzeugt fünfelementiges

Array vom typ int */

oder

int[] antwort = {41, 42, 43, 44, 45};

int [] [] antwort = {{41, 42}, {43, 44}};

Typen

Datenfelder:– Indizierung beginnt bei 0 !

– Zugriff auf Elemente ausserhalb der Arraygrenzen erzeugt Kompilierungs-/Laufzeitfehler

Zugriff auf Elemente mehrdimensionaler Felder:

antwort [1][1] = 44;

Achtung:

antwort [1,1] erzeugt Fehler !

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Blockanweisungen

• Eine Folge von Anweisungen kann zu einem Anweisungsblock zusammengefasst werden.

• Dieser Block verhält sich dann wie eine einzelne Anweisung.

if (day == “Sunday”)tidyUpComputer ();

if (day == “Sunday”) {clearTempDirectory();makeBackup ();scanDisk();

}

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Bezeichnete Anweisungen

Bsp.:

endOfLoop:for (c1=0; c1<10; c1++) {

for (c2=0; c2<50; c2++) {

newchar = instream.read (); // read a char

if (newchar == ‚\0‘) break enfOfLoop;

System.out.println (newchar);

}

System.out.println (“\n”);

}

System.out.println (“The end”);

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Deklaration

• Klassendeklarationen• Schnittstellendeklarationen• Datenfelddeklarationen• Objektdeklarationen• Deklaration primitiver Typen

Klassendeklarationen

• Eine ~ besteht immer aus 6 Teilen welche in folgender Reihenfolge zusammengesetzt werden

Bestandteil Status Beschreibung

Klassenmodifier optional abstract, final, public

Class zwingend class

Bezeichner zwingend ein normaler Bezeichner

Super optional extends gefolgt von Typname, Typ

muss Klasse sein, die nicht final ist

Schnittstellen optional implements gefolgt von durch

Kommata getrennter Liste mit

Schnittstellen

Klassenkörper zwingend

Schnittstellendeklarationen

• Eine ~ besteht immer aus 5 Teilen welche in folgender Reihenfolge zusammengesetzt werden

Bestandteil Status Beschreibung

Schnittstellenmodifier optional abstract, public

Interface zwingend interface

Bezeichner zwingend ein normaler Bezeichner

Schnittstellenerweiterung optional extends gefolgt von Typname, Typ

muss Klasse sein, die nicht final ist

Schnittstellenkörper zwingend

Datenfelddeklarationen

• Eine ~ besteht immer aus 5 Teilen welche in folgender Reihenfolge zusammengesetzt werden

Bestandteil Status Beschreibung

Datenfeldmodifier optional public,protected, private,

synchronized

Typenname zwingend Name des Typen oder der Klasse,

die aufgestellt werden

Klammern zwingend []

Initialisierung optional

Semikolon zwingend ;

Objektdeklarationen

• Ein Objekt zu deklarieren bedeutet, eine Referenz zu erstellen

Bestandteil Status Beschreibung

Objektmodifier optional public, protected, private,

synchronized

Typenname zwingend Name der Klasse, deren Instanz

dieses Objekt ist

Initialisierung optional

Semikolon zwingend ;

Deklaration primitiver Typen

• Reservierung von Speicherplatz• Initialisierung mit explizit angegebenem Wert oder

default-WertBestandteil Status Beschreibung

Datenfeldmodifier optional public, protected, private,

synchronized

Typenname zwingend boolean, char, byte, short, int,

long, float, double

Initialisierung optional

Semikolon zwingend ;

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Anweisungen

Ausdrucksanweisung Beispiel

Zuordnung a = 42

Prä-Inkrement ++wert

Prä-Dekrement --wert

Post-Inkrement wert++

Post-Dekrement wert--

Methodenaufruf System.out.println(„Hello World!“);

Zuweisungsausdruck byte wert = new byte;

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren

Anweisungen

Anweisungsart Beschreibung

Leere Anweisung dient nur als Platzhalter

Blockanweisungen Zusammenfassen von Quelltext

Bezeichnete Anweisung werden als Ziel für Sprungbefehle genutzt

Deklaration Einführung von Datentyp, Klasse, Objekt ...

Ausdrucksanweisung 7 verschiedene verfügbar =>

Auswahlanweisung if, if .. else, switch .. case

Iterationsanweisung while, do, for

Sprunganweisungen break, continue, return, throw

Synchronisationsanweisung für Multithreading, synchronized, threadsafe

Schutzanweisung try, catch, finally

Unerreichbare Anweisung erzeugt Fehler beim kompilieren