290 likes | 380 Views
Progwerkstatt. JAVA Klasse, Objekte, Konstruktoren, Methoden 2. Veranstaltung - WS 03/03. Progwerkstatt. Wir sind für Euch da! progwerkstatt@informatik.uni-ulm.de http://www.informatik.uni-ulm.de/ sgi/progwerkstatt/ Im Pool… …und in Vorträgen (aber das wisst ihr ja schon ).
E N D
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden 2. Veranstaltung - WS 03/03
Progwerkstatt • Wir sind für Euch da! • progwerkstatt@informatik.uni-ulm.de • http://www.informatik.uni-ulm.de/ sgi/progwerkstatt/ • Im Pool… • …und in Vorträgen (aber das wisst ihr ja schon )
Objektorientiert ? 1 • Java objektorientierte Sprache • Klassen als Definition • Objekte im tatsächlichen Programmablauf
Objektorientiert 2 • Bsp Der kleine Franz will ein neues Auto
Objektorientiert 3 • Also überlegt er sich, was ein Auto denn alles hat: • Räder • Lenkrad • Pedale • Hupe Man sieht seine Vorstellung eines Autos ist noch recht einfach
Objektorientiert 4 • Franz bittet seinen großen Bruder Klaus ihm doch so ein Auto zu bauen. Klaus meint: „Da brauche ich doch erst einmal eine Vorlage…“
Klassen 1 • Klassen sind in Java quasi die Vorlage für Objekte • Sie enthalten Variablen, die die Attribute des Objektes darstellen • Methoden bieten Manipulationsmöglichkeiten
Klassen 2 • Klaus baut sich also eine Vorlage…
Klassen 3 Public class Auto { //Attribute für das Auto int raeder; int pedale; boolean hupe; boolean lenkrad; }
Klassen 4 • Nun hat das Auto alle Attribute, die es braucht. Jetzt müsste man es nur noch konstruieren. Klaus geht in die Werkstatt…
Klassen 5 • In Java muss man die Objekte auch konstruieren um mit ihnen arbeiten zu können. • Dafür gibt es in den Klassen die Konstruktoren
Konstruktoren 1 • Jede Klasse verfügt über einen leeren Standard-Konstruktor • Erzeugt ein Objekt und nimmt für die Attribute Standardwerte an (die auf unterschiedlichen Systemen nicht gleich sein müssen). • Implizit • Sobald ein eigener Konstruktor angegeben wird, wird Standard-Konstruktor überschrieben.
Konstruktor 2 • Angabe in der Klasse • Ähnlich einer Methode, allerdings: • Name wie Klasse • Keine Angabe über einen Rückgabewert • Parameterangabe wie bei Methoden möglich • Mehrere parallele Konstruktoren durch Überladen möglich
Konstruktor 3 … Dieser Konstruktor public Auto(){ erzeugt immer „Autos“ raeder = 4; (genauer Objekte vom pedale = 3; Typ Auto) mit 4 lenkrad = true; Räder, 3 Pedalen, hupe = true; 1 Lenkrad und 1 Hupe } …
Konstruktor 4 Ein etwas anderer Konstruktor public Auto (int r, int p, boolean h){ raeder = r; pedale = p; lenkrad = true; hupe = h; }
Konstruktor 5 • Dieser Konstruktor lässt mehr Freiheiten bei der Konstruktion des Objekts -> Parameter angebbar • Parallel zum ersten Konstruktor in der Klasse
Neue Objekte 1 • Objekte werden in Java normalerweise mittels new <Konstruktor> erzeugt • Bsp: Auto pkw = new Auto(); Auto AutoXP = new Auto (3, 2, false);
Neue Objekte 2 Ein Auto bekommt man also durch: = new( );
Methoden 1 • Franz freut sich über sein neues und gibt gleich einmal Gas…
Methoden 2 • Objekte können manipuliert werden • Dazu gibt es die Methoden • Rückgabewerte (mittels return) oder void für keine Rückgaben • Parameter • Werden stets auf Objekte angewandt (Ausnahme: static – Methoden)
Methoden 3 • Eine Beispielmethode public void gibGas(){ faehrt = true; } „faehrt“ ist dabei ein weiteres Attribut von Auto (und muss natürlich in der Klasse als solches definiert werden).
Methoden 4 • Und bremsen müssen wir natürlich auch noch: public void bremse(){ faehrt = false; }
Methoden 5 • Fahr ich oder stehe ich? public boolean gibStatus(){ return faehrt; } Hier eine Methode mit Rückgabewert. Wichtig: return - Statement
Methoden 6 • Aufruf von Methoden: … Auto car = new Auto(); … car.gibGas(); … Man sieht, Methoden sind normalerweise objektgebunden
Methoden 7 • Ausnahme: statische Methoden • Schlüsselwort static • Können über eine Klasse aufgerufen werden, ohne dass vorher ein Objekt dieser Klasse (mittels new) instanziert wurde • Verlassen des objektorientierten Konzeptes aber hin und wieder nützlich • Eine bekannte statische Methode: public static void main(String[] args){…}
public class Auto{ int raeder; int pedale; boolean lenkrad; boolean hupe; boolean faehrt; // -- Konstruktoren -- public Auto(){ raeder = 4; pedale = 3; lenkrad = true; hupe = true; faehrt = false; } public Auto (int s, int p, boolean h){ raeder = s; pedale = p; lenkrad = true; hupe = h; faehrt = false; } // -- Ende der Konstruktoren -- Die Auto – Klasse 1
public void gibGas(){ faehrt = true; } public void bremse() { faehrt = false; } public boolean gibStatus(){ return faehrt; } public void hupe(){ if (hupe){ System.out.println(„Hup“); } } … }//Klasse Auto Ende Die Auto Klasse 2
Die Auto Klasse 3 • Natürlich kann man die Klasse beliebig erweitern • Übung macht den Meister – auch in Java • Wer mag kann die Auto – Klasse erweitern, umschreiben, verbessern…
Fazit • Franz hat sein neues Auto und ist glücklich… • Und Euch hat der Vortrag hoffentlich geholfen • Fragen?