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){…}
Die Auto – Klasse 1 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 2 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 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?