View
106
Download
0
Category
Preview:
Citation preview
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?
Recommended