Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden 2. Veranstaltung - WS 03/03.

Post on 05-Apr-2015

103 views 0 download

transcript

ProgwerkstattProgwerkstatt

JAVAJAVAKlasse, Objekte, Klasse, Objekte, Konstruktoren, MethodenKonstruktoren, Methoden

2. Veranstaltung - WS 03/032. Veranstaltung - WS 03/03

ProgwerkstattProgwerkstatt

Wir sind für Euch da!Wir sind für Euch da! progwerkstatt@informatik.uni-ulmprogwerkstatt@informatik.uni-ulm

.de.de http://www.informatik.uni-ulm.de/http://www.informatik.uni-ulm.de/

sgi/progwerkstatt/sgi/progwerkstatt/ Im Pool…Im Pool… ……und in Vorträgen (aber das und in Vorträgen (aber das

wisst ihr ja schon wisst ihr ja schon ) )

ObjektorientiertObjektorientiert ? ?11 Java objektorientierte SpracheJava objektorientierte Sprache KlassenKlassen als Definition als Definition ObjekteObjekte im tatsächlichen im tatsächlichen

ProgrammablaufProgrammablauf

ObjektorientiertObjektorientiert22 BspBsp

Der kleine Franz will ein neues AutoDer kleine Franz will ein neues Auto

ObjektorientiertObjektorientiert33 Also überlegt er sich, was ein Also überlegt er sich, was ein

Auto denn alles hat:Auto denn alles hat:– RäderRäder– LenkradLenkrad– PedalePedale– HupeHupe

Man sieht seine Vorstellung eines Man sieht seine Vorstellung eines Autos ist noch recht einfach Autos ist noch recht einfach

ObjektorientiertObjektorientiert44 Franz bittet seinen großen Bruder Franz bittet seinen großen Bruder

Klaus ihm doch so ein Auto zu Klaus ihm doch so ein Auto zu bauen. Klaus meint: „Da brauche bauen. Klaus meint: „Da brauche ich doch erst einmal eine ich doch erst einmal eine Vorlage…“Vorlage…“

KlassenKlassen 11

Klassen sind in Java quasi die Klassen sind in Java quasi die Vorlage für ObjekteVorlage für Objekte

Sie enthalten Variablen, die die Sie enthalten Variablen, die die AttributeAttribute des Objektes darstellen des Objektes darstellen

MethodenMethoden bieten bieten ManipulationsmöglichkeitenManipulationsmöglichkeiten

KlassenKlassen 22

Klaus baut sich Klaus baut sich also eine also eine Vorlage…Vorlage…

KlassenKlassen 33

Public class Auto {Public class Auto {

//Attribute für das Auto//Attribute für das Auto

int raeder;int raeder;

int pedale;int pedale;

boolean hupe;boolean hupe;

boolean lenkrad;boolean lenkrad;

}}

KlassenKlassen 44

Nun hat das Auto alle Attribute, Nun hat das Auto alle Attribute, die es braucht. Jetzt müsste man die es braucht. Jetzt müsste man es nur noch konstruieren. Klaus es nur noch konstruieren. Klaus geht in die Werkstatt…geht in die Werkstatt…

KlassenKlassen 55

In Java muss man die Objekte In Java muss man die Objekte auch konstruieren um mit ihnen auch konstruieren um mit ihnen arbeiten zu können.arbeiten zu können.

Dafür gibt es in den Klassen die Dafür gibt es in den Klassen die KonstruktorenKonstruktoren

KonstruktorenKonstruktoren 11

Jede Klasse verfügt über einen leeren Jede Klasse verfügt über einen leeren Standard-KonstruktorStandard-Konstruktor

Erzeugt ein Objekt und nimmt für die Erzeugt ein Objekt und nimmt für die Attribute Standardwerte an (die auf Attribute Standardwerte an (die auf unterschiedlichen Systemen nicht unterschiedlichen Systemen nicht gleich sein müssen). gleich sein müssen).

ImplizitImplizit Sobald ein eigener Konstruktor Sobald ein eigener Konstruktor

angegeben wird, wird Standard-angegeben wird, wird Standard-Konstruktor überschrieben.Konstruktor überschrieben.

KonstruktorKonstruktor22 Angabe in der KlasseAngabe in der Klasse Ähnlich einer Methode, allerdings:Ähnlich einer Methode, allerdings:

– Name wie KlasseName wie Klasse– Keine Angabe über einen Keine Angabe über einen

RückgabewertRückgabewert– Parameterangabe wie bei Methoden Parameterangabe wie bei Methoden

möglichmöglich– Mehrere parallele Konstruktoren durch Mehrere parallele Konstruktoren durch

Überladen möglichÜberladen möglich

KonstruktorKonstruktor33…… Dieser Konstruktor Dieser Konstruktor

public Auto(){public Auto(){ erzeugt immer „Autos“erzeugt immer „Autos“

raeder = 4;raeder = 4; (genauer Objekte vom(genauer Objekte vom

pedale = 3;pedale = 3; Typ Auto) mit 4 Typ Auto) mit 4

lenkrad = true;lenkrad = true; Räder, 3 Pedalen,Räder, 3 Pedalen,

hupe = true;hupe = true; 1 Lenkrad und 1 Hupe1 Lenkrad und 1 Hupe

} }

……

KonstruktorKonstruktor44

Ein etwas anderer KonstruktorEin etwas anderer Konstruktor

public Auto (int r, int p, boolean h){public Auto (int r, int p, boolean h){

raeder = r;raeder = r;

pedale = p;pedale = p;

lenkrad = true;lenkrad = true;

hupe = h;hupe = h;

}}

KonstruktorKonstruktor55 Dieser Konstruktor lässt mehr Dieser Konstruktor lässt mehr

Freiheiten bei der Konstruktion Freiheiten bei der Konstruktion des Objekts -> Parameter des Objekts -> Parameter angebbarangebbar

Parallel zum ersten Konstruktor in Parallel zum ersten Konstruktor in der Klasseder Klasse

Neue ObjekteNeue Objekte 11

Objekte werden in Java Objekte werden in Java normalerweise mittels normalerweise mittels new new <Konstruktor><Konstruktor> erzeugt erzeugt

Bsp:Bsp:Auto pkw = new Auto();Auto pkw = new Auto();

Auto AutoXP = new Auto (3, 2, false);Auto AutoXP = new Auto (3, 2, false);

Neue ObjekteNeue Objekte 22

Ein Auto bekommt man also durch:Ein Auto bekommt man also durch:

= new( );= new( );

MethodenMethoden 11

Franz freut sich über sein neuesFranz freut sich über sein neues

und gibt gleich einmal Gas…und gibt gleich einmal Gas…

MethodenMethoden 22

Objekte können manipuliert werdenObjekte können manipuliert werden Dazu gibt es die Dazu gibt es die MethodenMethoden Rückgabewerte (mittels return) oder Rückgabewerte (mittels return) oder

void für keine Rückgabenvoid für keine Rückgaben ParameterParameter Werden stets auf Objekte angewandt Werden stets auf Objekte angewandt

(Ausnahme: static – Methoden)(Ausnahme: static – Methoden)

MethodenMethoden 33

Eine BeispielmethodeEine Beispielmethode

public void gibGas(){public void gibGas(){

faehrt = true;faehrt = true;

}}

„„faehrt“ ist dabei ein weiteres faehrt“ ist dabei ein weiteres Attribut von Auto (und muss Attribut von Auto (und muss natürlich in der Klasse als solches natürlich in der Klasse als solches definiert werden).definiert werden).

MethodenMethoden 44

Und bremsen müssen wir Und bremsen müssen wir natürlich auch noch:natürlich auch noch:

public void bremse(){public void bremse(){

faehrt = false;faehrt = false;

}}

MethodenMethoden 55

Fahr ich oder stehe ich?Fahr ich oder stehe ich?

public boolean gibStatus(){public boolean gibStatus(){

return faehrt;return faehrt;

}}

Hier eine Methode mit Hier eine Methode mit Rückgabewert.Rückgabewert.

Wichtig: return - StatementWichtig: return - Statement

MethodenMethoden 66

Aufruf von Methoden:Aufruf von Methoden:……

Auto car = new Auto();Auto car = new Auto();

……

car.gibGas();car.gibGas();

……

Man sieht, Methoden sind Man sieht, Methoden sind normalerweise objektgebundennormalerweise objektgebunden

MethodenMethoden 77

Ausnahme: statische MethodenAusnahme: statische Methoden Schlüsselwort Schlüsselwort staticstatic Können über eine Klasse aufgerufen Können über eine Klasse aufgerufen

werden, ohne dass vorher ein Objekt werden, ohne dass vorher ein Objekt dieser Klasse (mittels new) instanziert dieser Klasse (mittels new) instanziert wurdewurde

Verlassen des objektorientierten Verlassen des objektorientierten Konzeptes aber hin und wieder nützlichKonzeptes aber hin und wieder nützlich

Eine bekannte statische Methode: Eine bekannte statische Methode: public static void main(String[] args){…}public static void main(String[] args){…}

Die Auto – Klasse Die Auto – Klasse 11public class Auto{public class Auto{

int raeder;int raeder;int pedale;int pedale;boolean lenkrad;boolean lenkrad;boolean hupe;boolean hupe;boolean faehrt;boolean faehrt;

// -- Konstruktoren --// -- Konstruktoren --public Auto(){public Auto(){

raeder = 4; raeder = 4; pedale = 3;pedale = 3;lenkrad = true; lenkrad = true; hupe = true;hupe = true;faehrt = false;faehrt = false;

}}

public Auto (int s, int p, public Auto (int s, int p, boolean h){boolean h){

raeder = s; raeder = s; pedale = p;pedale = p;lenkrad = true; lenkrad = true; hupe = h;hupe = h;faehrt = false;faehrt = false;

}}

// -- Ende der Konstruktoren --// -- Ende der Konstruktoren --

Die Auto KlasseDie Auto Klasse22public void gibGas(){public void gibGas(){

faehrt = true;faehrt = true;}}

public void bremse() {public void bremse() {faehrt = false;faehrt = false;

}}

public boolean gibStatus(){public boolean gibStatus(){return faehrt;return faehrt;

}}

public void hupe(){public void hupe(){if (hupe){if (hupe){

System.out.println(„HupSystem.out.println(„Hup“);“);}}

}}……

}//Klasse Auto Ende}//Klasse Auto Ende

Die Auto KlasseDie Auto Klasse33 Natürlich kann man die Klasse Natürlich kann man die Klasse

beliebig erweiternbeliebig erweitern Übung macht den Meister – auch Übung macht den Meister – auch

in Javain Java Wer mag kann die Auto – Klasse Wer mag kann die Auto – Klasse

erweitern, umschreiben, erweitern, umschreiben, verbessern… verbessern…

FazitFazit

Franz hat sein Franz hat sein neues Auto und neues Auto und ist glücklich…ist glücklich…

Und Euch hat der Und Euch hat der Vortrag Vortrag hoffentlich hoffentlich geholfen geholfen

Fragen?Fragen?