25
Programmieren mit JAVA Teil III

Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Embed Size (px)

Citation preview

Page 1: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Programmieren mit JAVA

Teil III

Page 2: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Hauptbestandteile der Sprache

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

Page 3: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Klassen• Eine Klassendefinition in Java wird durch das

Schlüsselwort class eingeleitet. Anschließend folgt innerhalb von geschweiften Klammern eine beliebige Anzahl an Variablen- und Methodendefinitionen. Das folgende Listing ist ein Beispiel für eine einfache Klassendefinition: public class Auto

{

public String name;

public int erstzulassung;

public int leistung;

}

Page 4: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Klasse - DeklarationSyntax:

[modifiers] class NeueKlasse [extends NamederSuperklasse]

[implements NamederSchnittstelle]

4 Eigenschaften einer Klasse können in der Deklaration definiert werden:•Modifier•Klassenname•Superklasse•Schnittstellen

Page 5: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Klasse - Modifier

• keinen (freundliche Klasse)

können nur von Objekten eines Paketes genutzt werden• public

alle Objekte können auf diese Klasse zugreifen• final

kann nicht mehr abgeleitet werden (haben keine Subklassen)

• abstract

von dieser Klasse wird nie eine Instanz benötigt und kann auch keine bilden, sie dient zu allgemeinen Verweisen

Page 6: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Klasse - Klassenname

• jede Klasse muss einen eigenen Namen haben• Regel für den Namen siehe Token• man sollte sprechende Klassennamen verwenden• der Name sollte mit einem Großbuchstaben beginnen,

der Rest Kleinbuchstaben• hat der Name mehrere Wörter, so darf kein

Leerzeichen dazwischen sein• Bsp.: MeineNeueKlasse

Page 7: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Klasse - Superklassen• mit dem Schlüsselwort extends spezifiziert man die

Klasse, auf welche die neue Klasse aufbaut• die Superklasse wird durch die neue Klasse erweitert

(Vererbung)• Bsp.:import java.awt.Graphics;

public class HelloJavaApplet extends java.applet.Applet {

public void paint(Graphics g) {

g.drawString("Hello Java!",5,25);

}

}

Page 8: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Klasse - Schnittstelle

• statt Mehrfachvererbung gibt es das Schnittstellenkonzept• Objekte können eine beliebige Zahl davon implementieren• sind Sammlungen von Methodennamen ohne konkrete

Definition• deshalb muss jede nichtabstrakte Klasse alle in der

Schnittstelle deklarierten Methoden überschreiben

Page 9: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Objekte• Um von einer Klasse ein Objekt anzulegen, muß eine

Variable vom Typ der Klasse deklariert werden• und ihr mit Hilfe des new-Operators ein neu erzeugtes

Objekt zugewiesen werden• Bsp.:

Auto meinKombi;

meinKombi = new Auto();

public class Auto{ public String name; public int erstzulassung; public int leistung;}

Auto meinKombi = new Auto();

Page 10: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Objekte• Nach der Initialisierung haben alle Variablen des Objekts

zunächst Standardwerte• Referenztypen haben den Standardwert null, die

Standardwerte der primitiven Typen können V2 entnommen werden

• Der Zugriff auf sie erfolgt mit Hilfe der Punktnotation Objekt.Variable

• Bsp.: meinKombi.name = "Mercedes 600"; meinKombi.erstzulassung = 1972; meinKombi.leistung = 250;

public class Auto{ public String name; public int erstzulassung; public int leistung;}

Page 11: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Objekte

• auch der lesende Zugriff erfolgt mit Hilfe der Punktnotation

• Bsp.:System.out.println("Name........: "+meinKombi.name);System.out.println("Zugelassen..: "+meinKombi.erstzulassung);System.out.println("Leistung....: "+meinKombi.leistung);

Page 12: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden

• Methoden definieren das Verhalten von Objekten• Sie werden innerhalb einer Klassendefinition angelegt• Sie haben Zugriff auf alle Variablen des Objekts• Methoden sind das Pendant zu den Funktionen anderer

Programmiersprachen• Sie arbeiten aber immer nur mit den Variablen des

aktuellen Objekts• In Java gibt es keine globalen Methoden wie auch

keine globale Variablen

Page 13: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Syntax[Modifier] /* private, protected, public, static, final */

Typ Name([Parameter])

/*Typ des Rückgabewerts der Funktion, ihr Name und eine optionale Parameterliste

*/

{

Anweisung; /* Methodenrumpf=Liste der Anweisungen, die das Verhalten der Methode festlegen */

}

Page 14: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methode - Beispiel• Beispielklasse Auto um eine Methode zur Berechnung

des Alters des Auto-Objekts erweitert: public class Auto

{

public String name;

public int erstzulassung;

public int leistung;

public int alter()

{

return 1999 - erstzulassung;

}

}

Page 15: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methode - Aufruf• Der Aufruf einer Methode erfolgt ähnlich der

Verwendung einer Instanzvariablen in Punktnotation• Zur Unterscheidung von einem Variablenzugriff müssen

zusätzlich die Parameter der Methode in Klammern angegeben werden, selbst wenn die Liste leer ist

• Bsp.: Auto golf1 = new Auto(); golf1.erstzulassung = 1990; System.out.println(golf1.alter());

• Welcher Wert wird ausgegeben?

Page 16: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Parameter• Eine Methode kann mit Parametern definiert werden• Jeder formale Parameter besteht aus einem Typnamen

und dem Namen des Parameters• Mehrere Parameter sind durch Kommata zu trennen• Bsp.:

public void printAlter(int wieoft) { while (wieoft-- > 0) { System.out.println("Alter = " + alter()); } }

Page 17: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

• Wie oft wird in diesem Programm das Alter des Autos ausgegeben?public class Auto { public int erstzulassung; Auto meinAuto = new Auto(); meinAuto.erstzulassung = 1990; public int alter() { return 1999 - erstzulassung; } public void printAlter(int wieoft) { while (wieoft-- > 0) { System.out.println("Alter = " + alter()); } } int a = 3; auto.printAlter(a); auto.printAlter(a);}

Page 18: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Übergabe von Objekten

• Die Methode erhält keine Kopie, sondern arbeitet mit dem Originalobjekt

• Sollen Objekte kopiert werden, so muss dies explizit durch Aufruf der Methode clone der Klasse Object erfolgen.

Page 19: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Rückgabe• Jede Methode in Java ist typisiert• Der Typ einer Methode wird zum Zeitpunkt der

Definition festgelegt und bestimmt den Typ des Rückgabewerts

• Dieser kann von einem beliebigen primitiven Typ, einem Objekttyp oder vom Typ void sein

• Die Methoden vom Typ void haben gar keinen Rückgabewert und dürfen nicht in Ausdrücken verwendet werden

• Hat eine Methode einen Rückgabewert, so kann sie mit Hilfe der return-Anweisung einen Wert an den Aufrufer zurückgeben

• Syntax: return Ausdruck;

Page 20: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Überladen• In Java ist es erlaubt, innerhalb einer Klasse zwei

unterschiedliche Methoden mit demselben Namen zu definieren

• Der Compiler unterscheidet die verschiedenen Varianten anhand der Anzahl und Typisierung der Parameter

• Überladen von Methoden ist dann sinnvoll, wenn die gleichnamigen Methoden auch eine vergleichbare Funktionalität haben

• Bsp.: public int alter(String titel) { int alter = alter(); System.out.println(titel+alter); return alter; }

Page 21: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Konstruktoren

• Konstruktoren sind spezielle Methoden, die bei der Initialisierung von Objekten aufgerufen werden.

• ~ werden als Methoden ohne Rückgabewert definiert, die den Namen der Klasse erhalten, zu der sie gehören

• Konstruktoren dürfen eine beliebige Anzahl an Parametern haben und können überladen werden

• Soll ein Objekt unter Verwendung eines parametrisierten Konstruktors instanziert werden, so sind die Argumente wie bei einem Methodenaufruf in Klammern nach dem Namen des Konstruktors anzugeben

Page 22: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Konstruktoren

• Bsp.:public class Auto { public String name; public int erstzulassung; public int leistung; public Auto(String name) { this.name = name; } Auto dasAuto = new Auto("Porsche 911"); System.out.println(dasAuto.name);}

Page 23: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

mehrere Konstruktoren public class Auto { public String name; public int erstzulassung; public int leistung; public Auto(String name){ this.name = name; } public Auto(String name, int erstzulassung, int leistung) { this.name = name; this.erstzulassung = erstzulassung; this.leistung = leistung; } }

Page 24: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Methoden - Destruktoren• Destruktoren werden unmittelbar vor dem Zerstören

eines Objekts aufgerufen• Ein Destruktor wird als geschützte parameterlose

Methode mit dem Namen finalize definiert• Syntax:protected void finalize(){...}

• Da Java über ein automatisches Speichermanagement verfügt, kommt den Destruktoren eine viel geringere Bedeutung zu als in anderen objektorientierten Sprachen

Page 25: Programmieren mit JAVA Teil III. Hauptbestandteile der Sprache Token Typen Ausdrücke und Operatoren Anweisungen Klassen Methoden Schnittstellen Pakete

Weiter:

• Vererbung• Attribute von Klassen, Methoden und Variablen • Klassen mit static-Elementen• Abstrakte Klassen und Methoden• Interfaces• Spezielle Klassen• ...