Informatik > Lexikon

Methoden

Allgemeines

Objekte können Eigenschaften (Daten) und Verhaltensweisen (Operationen, Dienste) besitzen. Die Eigenschaften werden auch als "Attribute" bezeichnet, die Verhaltensweisen als "Methoden". Mit Hilfe der Methoden kann man bestimmte Attribute der Objekte verändern, z.B. die Farbe eines Circle-Objektes. Solche Methoden werden als "verändernde" Methoden oder "manipulierende" Methoden bezeichnet. Andere Methoden dienen ausschließlich zum "Nachschauen", welchen Wert ein bestimtes Attribut hat. Diese Methoden bezeichnet man dann als "sondierende" Methoden. Sie verhalten sich nämlich wie kleine Sonden, die man in ein Objekt hineinsticht.

Kohäsion = Konzentration auf die eigentliche Aufgabe

Allgemein gilt für das Entwerfen einer Methode, dass sie nur die ihr zugeordnete Aufgabe erledigen und keine "Nebendinge" betreiben soll. Dieses Prinzip wird auch als Kohäsion von Methoden bezeichnet. Eine Methode wie setColor sollte nur die Farbe eines Objektes verändern und nicht gleichzeitig den Durchmesser oder eine andere Eigenschaft.

Sondierende Methoden
(Observer-Methoden)

Das sind Methoden, die eine Information über den Zustand oder Status eines Objektes liefern, indem sie bestimmte Attributwerte zurückgeben. Man unterscheidet zischen get-Methoden und anderen sondierenden Methoden. Einzelheiten dazu siehe "sondierende Methoden" im Lexikon.

Manipulierende Methoden
(Mutator-Methoden)

Hierunter versteht man Methoden, die die Attributwerte eines Objektes verändern.

Auch hier unterteilt man in zwei grundlegende Typen von manipulierenden Methoden, die set-Methoden und die "anderen" manipulierenden Methoden.

Einzelheiten hierzu siehe: "manipulierende Methoden" im Lexikon.

Gemischte Methoden

Wozu gehört folgende Methode ?

public void anzeigen()
{
   System.out.println("Position = "+x+" / "+y);
}

Verändert wird nichts, also um eine manipulierende Methode handelt es sich offensichtlich nicht.

Es wird zwar sondiert, nämlich der Wert von zwei Attributen, aber es wird kein Ergebnis nach außen zurück geliefert. Daher ist diese Methode auch keine sondierende Methode.

Die Methode zeigt die Werte von zwei Attributen in der Konsole an. Ich habe es mir angewöhnt, solche Methoden als "anzeigende Methoden" zu bezeichnen.

Die folgende Methode

public boolean nachRechts(int dist)
{
   if (xpos < 500-dist)
   {
      xpos += dist;
      return true;
   }
   else
      return false;
}

ist eine manipulierende Methode mit sondierender Kontrollfunktion, also eine echte Mischform. Das Attribut xpos wird verändert, und gleichzeitig wird ein true zurückgeliefert, wenn xpos verändert wurde, andernfalls ein false. Solche Mischformen sind in der Programmierung bisher durchaus üblich gewesen, vor allem in der C++ - Programmierung, wo viele Funktionen, die Werte verändern, zur Kontrolle ein true oder false zurückliefern. In Java sollte man solche Mischformen jedoch vermeiden.

Signatur

Typisch für eine Methode ist die sogenannte Signatur oder Schnittstelle. Darunter versteht man die erste Zeile der Methoden-Definition, die "Kopfzeile".

public double idealgewicht(int kg)
{
   return (kg - 100)*0.9;
}

Viele Informatiker bezeichnen die oberste Zeile auch als "Interface" oder auf Deutsch "Oberfläche" oder "Schnittstelle". Weitere Einzelheiten siehe "Signatur" im Lexikon.

Dokumentation von Methoden

Bei der Dokumentation einer Methode reicht es völlig aus, die Signatur der Methode anzugeben und ggf. zu erläutern. Die Implementation der Methode (also der Teil zwischen den beiden geschweiften Klammern) wird bei der Dokumentation nicht berücksichtigt. Er unterliegt der Datenkapselung, es geht also niemandem was an, wie man eine Methode implementiert hat, solange sie wirklich fehlerfrei arbeitet und genau das leistet, was in der Dokumentation versprochen wurde.

Statische Methoden

Durch das Schlüsselwort static kann man eine normale Methode zu einer statischen Methode machen. Statische Methoden einer Klasse X können von anderen Klassen aufgerufen werden, ohne dass zuvor Objekte x von X angelegt werden müssen. Ein bekanntes Beispiel für eine Klasse mit statischen Methoden ist die Klasse Math. Methoden der Klasse Math können einfach durch Nennung des Klassennamens, gefolgt vom Methodennamen, aufgerufen werden:

int i = Math.round(x/y);

Einzelheiten zum Thema statische Methoden siehe den entsprechenden Eintrag im Lexikon.

Abstrakte Methoden

Klassen sind normalerweise Baupläne für Objekte. Es gibt aber auch Klassen, die Baupläne von Tochterklassen sind (Vererbung). Von diesen abstrakten Klassen kann man keine Objekte erzeugen, aber man kann mittels Vererbung Tochterklassen von den abstrakten Klassen erzeugen, und von diesen Tochterklassen kann man wiederum Objekte bilden.

Abstrakte Klassen stellen abstrakte Methoden zur Verfügung. Diese abstrakten Methoden werden aber nicht implementiert, sondern nur "genannt". Die Tochterklassen sind dann gezwungen, die abstrakten Methoden zu überschreiben, also selbst zu implementieren. Weitere Einzelheiten siehe "abstrakte Methoden" im Lexikon.

Interne Links: