Programmieren I Kapitel 3: Methoden Vorab: Tag der Informatik!! Martin Griebl Universität Passau Kapitel 3: Methoden Ziel: Funktionen und Prozeduren verwenden ■ Funktionen und Prozeduren im ursprünglichen Sinne ■ formale und aktuelle Parameter ■ Methoden und Klassen ■ Overloading ■ lokale Variablen, Konstanten ■ Beispiele Martin Griebl Universität Passau Funktionen Beispiele zur Definition: ■ ■ double euro (double dm) { return dm / 1.95583; } ■ double cylVol (double radius, double height) { return height * radius * radius * 3.14159; } Beispiele zur Anwendung: ■ ■ double priceInEuro = euro(5.90); ■ double mass = cylVol (0.5, 1.28) Martin Griebl Universität Passau Funktionen Definition: ■ ■ ■ hat 0, 1 oder mehrere (getypte) Parameter ■ berechnet ein (getyptes) Ergebnis ■ ihr Rumpf gibt an, wie das Ergebnis berechnet wird ■ und liefert das Ergebnis mit dem Schlüsselwort return ab Format einer Funktion: << Ergebnistyp>> <<Name>> ( <<Paramliste>> ) { <<Rumpf>> } und der Parameterliste <<Paramliste>>: <<Typ1>> <<Name1>> , ... , <<Typn>> <<Namen>> Martin Griebl Universität Passau Prozeduren Definition: ■ ■ ■ Eine Funktion ohne Rückgabewert ■ in Java notiert durch den „Pseudotyp“ void als Ergebnistyp Format: ■ Martin Griebl void <<Name>> ( <<Paramliste>> ) { <<Rumpf>> } Universität Passau Methoden und Klassen ■ Methoden sind Funktionen oder Prozeduren ■ Methoden sind üblicherweise Bestandteile der Klassen ■ Im Gegensatz zu Attributen repräsentieren sie nicht den statischen Zustand eines Objekts sondern die Aktionen, die man mit dem Objekt durchführen kann. ■ Sie werden ­­ wie die Attribute ­­ mit dem . ­Operator selektiert. Martin Griebl Universität Passau Methoden und Klassen ■ Beispiel: class Point { double x,y; Point (double x, double y) { this.x = x; this.y = y; } void shift (double dx, double dy) { x = x + dx; y = y + dy; } } Martin Griebl Universität Passau Overloading ■ Überladene Methoden haben denselben Namen, aber unterschiedliche Parameteranzahl und/oder ­typen (Anm: in Java reicht der Ergebnistyp nicht für overloading.) ■ Beispiel fortgesetzt: class Point { .... void shift (double dx, double dy) { ... } void shift (double delta) { shift (delta, delta); } } Martin Griebl Universität Passau Lokale Variablen ■ Definition: Variablen, die nicht – wie die Attribute – auf äußerster Ebene in einer Klasse deklariert werden, sondern innerhalb einer Methode. Diese Variablen sind nur innerhalb der Methode sichtbar; andere Methoden haben keinen Zugriff auf sie. ■ Zweck: ■ Strukturierung (Übersichtlichkeit, Konfliktreduktion, Wiederverwendbarkeit) ■ Aufwandsreduktion Martin Griebl Universität Passau Lokale Variablen ■ Beispiel wieder aufgegriffen: double cylVol (double radius, double height){ double base = radius * radius * 3.14; return height * base; } ■ Anmerkung: dasselbe gilt für Konstanten (Lebensdauer!): double cylVol (double radius, double height){ final double base = radius * radius * 3.14; return height * base; } Martin Griebl Universität Passau Zugriffsmöglichkeiten von Methoden Methoden haben Zugriff auf folgende Variablen: ■ ■ ihre lokalen Variablen ■ formale Parameter der Methode ■ Attribute der Klasse, in der die Methode definiert ist ■ und weiter (mit der . ­Notation) auf deren jeweilige Attribute,... ■ Parameter als veränderbare (!) lokale Variable zu verwenden ist schlechter Stil. Zwangsweises Abschalten durch final (z.B. double foo ( final int a ) { ... }) wird aus Übersichtlichkeitsgründen praktisch nicht gemacht. Martin Griebl Universität Passau Randbemerkungen zu Methoden ■ Konstruktormethoden sind normale Methoden, bei denen allerdings der Ergebnistyp nicht angegeben wird, weil er ohnehin klar ist. ■ Methoden können vor ihrem Ergebnistyp weitere Eigenschaften spezifizieren, z.B. private für Funktionen, die zwar intern benötigt werden, die aber eigentlich nicht zu den typischen Fähigkeiten der Klassenmitglieder gehören, z.B. private double square (double x) { ... } Mehr dazu später. Martin Griebl Universität Passau Beispiele Point.java und Line.java aus dem Buch Martin Griebl Universität Passau Zusammenfassung Methoden ■ ■ sind Funktionen oder Prozeduren ■ geben die möglichen Aktivitäten von Objekten an und/oder ■ strukturieren den Code Martin Griebl Universität Passau