Anwendungsentwicklung mit Java Grundlagen der OOP, Variablen, Klassen und Objekte, Methoden Erste Schritte Programmaufruf Ausgabe 2 3 Aufbau eines Java Programms (1) Paketdeklaration Klassendeklaration Der Sourcecode befindet sich in der Textdatei mit dem Namen „FirstApp.java“. Die Datei liegt in der gleichen Verzeichnisstruktur, wie auch der Paketname. 4 Aufbau eines Java Programms (2) Methodendeklaration Klassenrumpf Methodenrumpf Anweisung Merke: • Immer eine Klasse in einer SourceSource-Datei. Datei • Methoden immer innerhalb der Klasse. 5 Aufbau eines Java Programms (3) • Mindestens 1 Klasse, die durch class gekennzeichnet wird. • Hinter class steht der spezifische Klassenname. • Alles was dahintersteht und zur Klasse gehört, wird in geschweifte Klammern {} eingeschlossen. • Eine Klasse kann mehrere Operationen (in Java Methoden) enthalten (z.B. main) • Alles was anschließend folgt, die Methode also näher beschreibt, wird wieder in geschweifte Klammern eingebunden. 6 Kompilieren eines Java Programms • Setzen der Umgebungsvariablen: • path – legt fest, in welchen Verzeichnissen das Betriebssystem die ausführbaren Programme und Programmressourcen suchen soll • classpath – legt fest, wo die JVM die benötigten .java und .class Dateien suchen soll • Aufruf in der Kommandozeile: set path=d:\j2sdk1.4\bin;%path% set classpath=d:\myDir\classes;d:\myDir\libs;%classpath% • Kompilieren: javac –d <zielverzeichnis> datei1.java javac –d <zielverzeichnis> dir1/dir2/datei2.java javac –d <zielverzeichnis> dir1/dir2/*.java Aufruf eines Java Programms Starten der JVM mit dem Programmnamen (Klassennamen) als Parameter Ablauf: • Laden der JVM durch Betriebssystem • Übergabe des Parameters an JVM • Suchen und Laden der Klasse durch JVM • Identifizieren und Ausführen der Methode: public static void main(String args[]) • Ausführen der Anweisungen • Bereinigen des reservierten Speichers • Entladen der JVM durch Betriebssystem 7 8 Schlüsselwörter Java- Schlüsselwörter Klassen/ Objekte -class -interface -new -extends -implements -instanceof -return Schleifen -do -while -for -break -continue Modifier -private -protected -public -abstract -final -native -static -synchronized -transient -volatile Bedingungen -if -else -switch -case -default primitive Datentypen Fehlerbehandlung -byte -short -int -long -float -double -boolean -char -try -catch -throw -throws -finally Packaging/ Module -package -import Konstanten/ Referenzen -this -super -void -null -true -false Gliederung der Veranstaltung • Variablen • Operatoren und Anweisungen • Kontrollstrukturen • Klassen & Objekte • Methoden • Konstruktoren 9 Variablen • • • • Strenge Typprüfung Deklaration notwendig Keine „Redeklaration“ möglich Strenge Prüfung auf scope (Gültigkeitsbereich) Deklaration: int count; Deklaration + Initialisierung: int count = 0; 10 11 Datentypen Primitive Datentypen: byte, short, int, long Ganzzahlen float, double Fließkommazahlen boolean Boolesche Variablen (Wertebereich: true/false) char Zeichen (16-bit kodiert, Unicode) Spezielle Regeln für Konvertierung: byte short int long char Objektdatentypen: • String • • Alle Klassen und Schnittstellen aus JDK Eigene Klassen und Schnittstellen Spezielle Regeln für Konvertierung: XXX Object YYY float double Gliederung der Veranstaltung • Variablen • Operatoren und Anweisungen • Kontrollstrukturen • Klassen & Objekte • Methoden • Konstruktoren 12 Operatoren Arithmetische + - * / % ++ - - Relationale == != < <= => > Logische ! && || & | ^ Bitweise ~ | & ^ >> >>> << Zuweisung = += -= *= /= %= &= |= ^= <<= >>= >>>= ?: Cast Operator (type) Stringverkettung + += Object instanceof, new Merke: • Kein Überladen von Operatoren (Ausnahme: „+“) • Automatische Typprü Typprüfung 13 Anweisungen und Blöcke • Anweisungen bestehen aus Ausdrücken und werden mit ; abgeschlossen • Ein Ausdruck ist die kleinste ausführbare Einheit eines Programms • Ausdrücke sing syntaktische Einheiten mit Operatoren und haben einen Wert: i++, a < b • Mit { und } zusammengefasste Anweisungen werden Blöcke genannt und dienen zur Strukturierung des Programms: { int a = 0; int b = 3; a ++; if(a < b){ a = b; } } 14 Gliederung der Veranstaltung • Variablen • Operatoren und Anweisungen • Kontrollstrukturen • Klassen & Objekte • Methoden • Konstruktoren 15 Kontrollstrukturen • Die if-Anweisung • Verkettung von if, else if • Die switch-Anweisung • Die while-Schleife • Die for-Schleife • • • • continue (mit Label) break (mit Label) continue darf nur in Schleifen benutzt werden break darf nur in Schleifen und switch benutzt werden • Die Anweisungen gelten nur für die unmittelbar nachfolgende Anweisung à Blöcke notwendig: if(a < b) a++; b++; if(a < b){ a++; nicht identisch mit b++; } 16 Namensgebung in Java Namensgebung dient zur: • Besseren Lesbarkeit • Vereinfachung der Wartung • Schnelle Entwicklung Namenskonventionen: • Klassenname: MyClass, JavaUebung • Variablenname: myFisrtCar, anzahlUebungen • Methodenname: getFisrtCar, erhoeheAnzahl • Paketname: myFirstPackage, org.wi3.javaKurs Namen dürfen aus beliebigen Zeichen bestehen Ausnahme: Als erster Buchstabe nur „_“, „$“ oder alphabetische Zeichen möglich Merke: • Namen im Allgemeinen in englischer Sprache, da sonst zu vermischt vermischt • Namen fü für sich sprechend à auf keinen Fall i, i1, i1, i2 u.s.w. 17 Gliederung der Veranstaltung • Variablen • Operatoren und Anweisungen • Kontrollstrukturen • Klassen & Objekte • Methoden • Konstruktoren 18 Objekte und ihre Eigenschaften • Objektorientierung: • Gegenstände der realen Welt werden als Objekte betrachtet • z.B. Handy, Auto, Mensch, Bankkonto • Objekte bestehen aus anderen Objekten: • Bsp: Akku, Rädern, Augen, Tarife • Objekte haben Eigenschaften (Attribute): • z.B. neu, rot, groß, grundsätzlich leer • Objekte können Botschaften schicken und empfangen: • z.B. SMS anzeigen, fahren, nach rechts schauen, auffüllen 19 Das Objekt • Das Objekt besteht aus Daten und den darüber operierenden Funktionen/Prozeduren • Die Daten im Objekt nennt man Attribute und die Operationen und Algorithmen des Objekts nennt man Methoden. • Die grundlegenden Objekte eines Software-Systems stammen immer aus dem Problem- bzw. Anwendungsbereich. • Objekte werden charakterisiert durch: • • • Zustand (State) – die aktuellen Werte aller Attribute (Auto: Farbe - rot, aktuelle Geschwindigkeit - 100 km/h, Fahrtrichtung - NNW) Verhalten (Behaviour) – die Methoden des Objektes, die Art, wie ein Objekt auf Nachrichten reagiert, seinen Zustand ändert (fahren, bremsen) Identität (Identity) – die Eindeutigkeit eines Objektes (mein Auto, Auto mit Kennzeichen „N ZY 411“, u.s.w.) 20 Die Klasse • Die Klassen sind Schablonen, mit denen die einzelnen Objekte geprägt werden • Klassen definieren die grundlegende Struktur ähnlicher Objekte • Beispiel: Klasse Auto • Attribute: Farbe, Geschwindigkeit, Fahrtrichtung, maximale Geschwindigkeit, Anzahl PS, Anzahl Türen u.s.w. • Methoden: fahren, beschleunigen, bremsen, wenden, rosten ... • Die Attribute können einfache Datentypen, oder selbst Objekte sein. Z.B. Attribut Rad • Attribute: Farbe, Hersteller, Breite, Durchmesser • Methoden: rollen, drehen ... 21 Objekte und Klassen in Java 22 Verwendung der Klasse Car (als Datentyp und Schablone eines Objekts) Klasse Car Variable deklarieren Attribute Variable initialisieren Attribute initialisieren • Zuerst immer Variablendeklaration • Erzeugung eines Objektes mit new und Zuweisung zu der Variable • Beliebig viele Objekte aus einer Klasse Klasse Car – Designfehler • • • • Kein Motor definiert PS ein Attribut des Motors color Attribut mit dem falschen Datentyp Klasse definiert keine Methoden 23 Gliederung der Veranstaltung • Variablen • Operatoren und Anweisungen • Kontrollstrukturen • Klassen & Objekte • Methoden • Konstruktoren 24 Methoden • Benannte Anweisungsblöcke • Werden aufgerufen durch Angabe des Namens und Aufrufsparameter • Können einen Wert zurückliefern 25 Überladen der Methoden • Überladen (Overload) – in einer Klasse Methoden mit den gleichen Namen definieren • Methode wird identifiziert mit der Signatur: void accelerate(int kmh){...} void accelerate(double rate){...} void accelerate(int kmh, String dir){...} • Überladene Methoden unterscheiden sich lediglich durch die Parameterliste: unterschiedliche Datentypen, unterschiedliche Anzahl oder Reihenfolge • Beim Aufruf wird durch Parameter die richtige Methode identifiziert: car.accelerate(12); car.accelerate(1.2); car.accelerate(12, „NNW“); 26 Gliederung der Veranstaltung • Variablen • Operatoren und Anweisungen • Kontrollstrukturen • Klassen & Objekte • Methoden • Konstruktoren 27 Konstruktoren • Spezielle Methoden • Werden aufgerufen beim Erzeugen der Objekte • Namensgebung wichtig • Keine Rückgabewerte • In einer Klasse mehrere Konstruktoren möglich à Überladen der Konstruktoren 28