Methoden - Uni Passau

Werbung
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
Herunterladen