Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden 2. Veranstaltung - WS 03/03 Progwerkstatt Wir sind für Euch da! [email protected] http://www.informatik.uni-ulm.de/ sgi/progwerkstatt/ Im Pool… …und in Vorträgen (aber das wisst ihr ja schon ) Objektorientiert ? Java objektorientierte Sprache Klassen als Definition Objekte im tatsächlichen Programmablauf 1 Objektorientiert Bsp Der kleine Franz will ein neues Auto 2 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 Klaus baut sich also eine Vorlage… 2 Klassen Public class Auto { //Attribute für das Auto int raeder; int pedale; boolean hupe; boolean lenkrad; } 3 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 Franz freut sich über sein neues und gibt gleich einmal Gas… 1 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){…} Die Auto – Klasse 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; } 1 public Auto (int s, int p, boolean h){ raeder = s; pedale = p; lenkrad = true; hupe = h; faehrt = false; } // -- Ende der Konstruktoren -- Die Auto Klasse public void gibGas(){ faehrt = true; } public void bremse() { faehrt = false; } public boolean gibStatus(){ return faehrt; } 2 public void hupe(){ if (hupe){ System.out.println(„Hup“); } } … }//Klasse Auto Ende 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?