Programmieren mit JAVA

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Forschungszentrum caesar
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Objekte und Arbeitsspeicher
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Variablenkonzept Klassisch, in Java Basistyp
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Starten der Entwicklungsumgebung (IDE)
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
PI Burgenland Java und JavaScript 1. Teil
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Hello World! Javakurs 2013 Arne Kappen
Implementieren von Klassen
 Präsentation transkript:

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 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 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: Bsp.: alle Wörter, die essentieller Teil der JAVA-Sprachdefinition sind Groß- und Kleinschreibung werden unterschieden ! Bsp.: public, class, static, void

Die JAVA Token Bezeichner: Bsp.: 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: Bsp.: 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: Bsp.: 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: Bsp.: Zeichen zur übersichtlichen Gestaltung des Quelltextes Bsp.: [Space], [Tab], [Zeilenende]

Die JAVA Token Kommentar: Bsp.: 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-Wert Bestandteil 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