Programmieren mit JAVA Teil II. Zusammenfassung Applikation vs. Applet sequentiell vs....
-
Upload
angelika-abke -
Category
Documents
-
view
108 -
download
1
Transcript of Programmieren mit JAVA Teil II. Zusammenfassung Applikation vs. Applet sequentiell vs....
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