EPROG Tutorium #3 Philipp Effenberger Ergänzungen Klassen und Methoden Einleitung OOP 19. April 2005 philipp_effenberger@web.de
Überblick Tutorium #2 Erweiterungen zu den Schleifen Klassen- und Methodenbenützung Methoden allgemein Methodenrückgabewerte Besondere Methoden Klassenvariable – Methodenvariable Einleitung objektorientierte Programmierung Unterschied Klasse – Objekt 19. April 2005 philipp_effenberger@web.de
Wiederholung Tutorium #2 String char boolean arrays if/else, do/while, while, for break, continue Operatoren 19. April 2005 philipp_effenberger@web.de
Ergänzung zur if-Schleife switch – Schleife Mehrfachverzweigung Condition nur vom Typ byte, short, char, int Auswertung der Condition bestimmt, welche Sprungmarke (deren Konstante Zuweisungskompartibel sein muss) Alle case-Konstanten müssen unterschiedliche Namen haben default – Label bestimmt Anweisung wenn kein Fall zutrifft, unique in Schleifen switch (condition) { case [Konstante 1]: anweisungen[;break]; //[…]optional case [Konstante 2]: anweisungen; … default : anweisungen;} 19. April 2005 philipp_effenberger@web.de
Methoden Haben eine bestimmte Funktionalität; z.B. etwas einlesen oder etwas zusammenfügen (String + String) Mit oder ohne Parameter bzw Rückgabewert (return x) Problemlos wiederverwendbar (wichtig für OOP) public [static] void <Name> (<Param>) ... ... ..., ... 19. April 2005 philipp_effenberger@web.de
Methodenrückgabewerte public void irgendeineMethode() {[nix kommt retour]} private int addDieZahl( int a) { return eineInteger; } package String getNamen() { return einenString } protected void setStud() { [nix kommt retour] } Spezielle Methoden sind get und set Typisch für Rückgaben von Objekten oder Veränderungen der Klassen-/Programmparameter; s.g. ‚Getter‘ und ‚Setter‘ z.B.: public int getAlter( Student name, int matrnr ) 19. April 2005 philipp_effenberger@web.de
Besondere Methoden Konstruktor: Erzeugt neues Objekt einer Klasse (new) Name ident mit Klassenname Kein Rückgabetyp, eventuell Parametertypen Initialisiert Objektvariablen für das betreffende Objekt z.B.: public Student( String name ) { this.name = name } Student stud1 = new Student( peter ) Destruktor: Gibt Speicher wieder frei, wenn Objekt nicht mehr gebraucht (eher bei Applets üblich) void finalize() Garbage Collector, null Gibt automatisch nicht mehr benötigten Speicher frei ( Destruktor) Kann auch direkt aufgerufen werden (eher bei Applets): System.gc() 19. April 2005 philipp_effenberger@web.de
Klassenvariable/Objektvariable static member Klassenvariable statisch, deswegen nur einmal für alle Objekte vorhanden. Deklariert innerhalb der Klasse, ausserhalb jeder Methode Sichtbarkeit zumindest in der gesamten eingenen Klasse Objektvariable member variable Objektvariable dynamisch und gilt nur für ein Objekt. Kann innerhalb einer Klasse deklariert werden Sichtbarkeit sollte ausschließlich in der eingenen Klasse sein (besser für OOP) Eventuell noch Rückgabewerte erklären 19. April 2005 philipp_effenberger@web.de
Einleitung OOP 1 Klassen Beschreiben ein Gerüst, nach dem ein Objekt erzeugt wird (z.B.: Hund) static members, z.B. Anzahl der erzeugten Objekte (in dem Fall Hunde ;-) ) Müssen nicht main-Methode haben – stellen „nur“ Methoden für ein Programm zur Verfügung Objekte Teil einer Klasse; z.B. Maxi, Wuschel,… Alle Objekte haben die selben members (aber mit unterschiedlichem Inhalt) Eigenschaften – durch member variables festgelegt Verhalten – durch Klassen-Methoden definiert 19. April 2005 philipp_effenberger@web.de
Hintergrundwissen zu Klassen Klasse – Objekt Klasse „nur“ Vorlage für Objekte Beliebig viele Objekte möglich von einer Klasse Sichtbarkeiten public … von überall private … nur in der selben Klasse protected … nur in den abgeleiteten Klassen package … nur im Package 19. April 2005 philipp_effenberger@web.de
Einleitung OOP 1 stud4.tuwien.ac.at/~e0326017/eprog durchlesen! Begleittext auf meinem TU-Webspace stud4.tuwien.ac.at/~e0326017/eprog durchlesen! Alle wesentlichen Informationen zu OOP Alles notwendige als Handout Ab nächster Woche notwendiges Hintergrundwissen 19. April 2005 philipp_effenberger@web.de
Wichtige Klassen für nächstes Tutorium (OOP)! java.lang.String java.Arrays java.util.List (ArrayList, LinkedList) → Container java.util.Vector java.util.Iterator java.util (nur zum überfliegen, da viele nützliche Klassen) Link zum Thema Pointers (für Interessierte) http://cslibrary.stanford.edu/104/ 19. April 2005 philipp_effenberger@web.de