Unterschied zwischen Methodensignatur und Methodenaufruf (Informatik)?

4 Antworten

kann mir jemand erklären was der Unterschied zwischen einer Methodensignatur und einem Methodenaufruf in der Informatik ist ?

Die Methodensignatur ist der "Kopf" der Methode - die erste Zeile, die eine Kurzbeschreibung der Methode darstellen soll.

Sie beinhaltet die Sichtbarkeit (public, private, protected), den Rückgabewert der Methode (bei 2.19 void und boolean), den Namen der Methode (bei 2.19 play, addAmount usw ) sowie die Parameter, die übergeben werden müssen (bei play z.B. gar keine, bei compare werden drei Integer benötigt).

Der Methodenaufruf ist dann am Ende der Aufruf dieser Methode im Code selbst. z.B.

int a = 0;
int b = 69;
int c = 42;
compare(a, b, c); // <- Methodenaufruf

hierbei muss man am Ende nur beachten, dass das alles keine statischen Methoden sind und somit auf einem Objekt aufgerufen werden müssen


regex9  31.08.2021, 16:17

Eine Methodensignatur bezeichnet nur Methodenname und Parameterliste. Das was du beschreibst, ist die Methodendeklaration.

1

Eine Methodensignatur setzt sich (nur!) aus dem Namen der Methode und der Parameterliste zusammen. Der Rückgabetyp gehört nicht dazu.

someMethod(int someParameter)

Sie ist Teil der Methodendeklaration bzw. der Kopfzeile einer Methodendefinition:

void someMethod(int someParameter) { // head
  // body ...
}

Dein Aufgabenblatt verwendet an der Stelle also völlig falsche Begriffe. Zum Vergleich kannst du auch die Definition von Oracle heranziehen:

Two of the components of a method declaration comprise the  method signature—the method's name and the parameter types.

Quelle

Was von dir viel eher verlangt wird, ist die Analyse von Methodendeklarationen, die sich folgendermaßen zusammensetzen:

public            void         someMethod   (int someParameter)

modifiers         return type  method name  parameter list

Aufgabe 2.19 zählt mehrere Methodendeklarationen auf.

Bei einem Methodenaufruf nutzt du zum einen den Namen der Methode, um dem Programmfluss kenntlich zu machen, wo er nun hinspringen soll und dem folgend führst du eine Argumentenliste an.

someMethod(123);

Der Methodenaufruf ist eine Anweisung, die wie üblich mit einem Semikolon abgeschlossen wird. Für die Argumentenliste übergibst du nur die Werte, die dann an ihre jeweiligen Parameter überwiesen werden sollen. Da bei meinem Beispiel someMethod nur einen Parameter definiert, wird ihr auch nur ein Wert übergeben.

Für den Aufruf ist allerdings noch ein Objekt (wenn die Methode objektgebunden ist) oder eine Klasse (wenn die Methode statisch ist) vonnöten. In beiden Fällen nicht irgendein Objekt / irgendeine Klasse, sondern die, die die Methode auch wirklich besitzen.

Beispiel:

public class Dog {
  public void run() {
  }
}

// call:
Dog odie = new Dog();
odie.run();

Die Methode run wird über das Dog-Objekt aufgerufen, auf welches die Variable odie verweist. Das ist nur möglich, da in der Klasse Dog auch eine Deklaration der Methode run vorgenommen wurde.

Eine Vererbung kann auch zum Besitz einer Methode verhelfen.

public class Dog {
  public void run() {
  }
}

public class HyperactiveDog extends Dog {
}

// call:
HyperactiveDog odie = new HyperactiveDog();
odie.run();

Die Signatur einer Funktion, Methode ist der Name + Parametertypen + Reihenfolge:

int add(int, int);

Ist die Signatur einer Funktion, die zwei ints addiert. Bei Methoden analog.

Eine Methodensignatur gibt an, wie eine Methode aufgerufen werden kann und was sie zurückgibt. Sie ist gewissermaßen das Außengerüst der Methode.

Z.B. dein "public boolean isGreater (int number)" ist eine Methodensignatur, aus der folgende Informationen gezogen werden können:

  1. Die Methode hat den Namen "isGreater".
  2. Sie verwendet genau einen Parameter, nämlich einen Integer-Wert.
  3. Sie liefert einen boolean zurück.
  4. Sie ist public, kann also "von überall aus" verwendet werden.

Wenn nun object eine Instanz der Klasse ist, in der diese Methode steht und number ein Integer, dann kann man im Code die Methode über object.isGreater(number) aufrufen [die genaue Syntax hängt von der Sprache ab]. Wenn das geschieht, redet man von einem Methodenaufruf.

Die Signatur kann betrachtet werden als eine Art Versprechen: Wenn du mein "isGreater" mit einer Zahl zusammen aufrufst, geb ich dir einen boolean zurück. Beim eigentlichen Methodenaufruf wird dieses Versprechen dann eingelöst.