Foliensatz OOP Teil 2

Werbung
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
Herunterladen