Unterschied Methode und Funktion?
Hallo, ich würde gerne wissen was es für ein Unterschied zwischen den beiden gibt.
Wenn möglich gerne anhand eines Beispieles.
Vielen Dank schon mal im Voraus.
4 Antworten
Naja, ist im Grunde gehüpft wie gesprungen. Wenn du ganz genau sein willst, würdest du wohl eine Funktion, die an eine Klasse gebunden ist, als Methode bezeichnen. Der Sprachgebrauch wäre dann in etwa:
Die Klasse Auto verfügt über die Methode beschleunigen()
Sinnvoll ist die Unterscheidung zwischen Funktionen und Methoden wohl am ehesten dann, wenn die jeweilige Sprache neben OOP auch andere Paradigmen unterstützt. Ich persönlich finde den generischen Funktionsbegriff in den meisten Fällen völlig in Ordnung.
So strikt ist die Unterscheidung eh nicht immer zu machen. Es gibt Halb-OO-Sprachen wie Go oder Ada 83, und es gibt die lustigen friend-Funktionen von C++. Und Javascript ist noch so ein seltsamer Fall, in dem es gar keine Klassen im herkömmlichen Sinn gibt (auch wenn es mittlerweile ein class-Keyword gibt).
Da es dir den Themen zufolge um Python geht, ein Beispiel für Python:
class Cat(object):
def __init__(self, name):
self.species = 'cat'
self.name = name
def talk(self): # <- eine Methode der Klasse Cat
print('{} says meow.'.format(self.name))
class Dog(object):
def __init__(self, name):
self.species = 'dog'
self.name = name
def talk(self): # <- eine Methode der Klasse Dog
print('{} says woof.'.format(self.name))
def chase(cat, dog): # <- eine Funktion: ausserhalb von Klassen definiert
print('{} is chasing {}!'.format(dog.name, cat.name))
Anwendung:
Robin = Cat('Robin') # <- eine Instanz der Klasse Cat
Lancelot = Dog('Lancelot') # <- eine Instanz der Klasse Dog
print(Robin.species) # ein Attribut von Robin wird aufgerufen
Robin.talk() # die Methode *talk* wird aufgerufen
chase(Robin, Lancelot) # die Funktion *chase* wird aufgerufen
Output:
cat
Robin says meow.
Lancelot is chasing Robin!
Eine Methode ist eine Funktion, die an einer Klasse hängt.
In manchen Sprachen gibt es eigentlich nur Methoden (etwa Java), in anderen gibt es freistehende Funktionen und Methoden (Python zB), in nicht-objektorientierten Sprachen gibt es nur Funktionen (C beispielsweise).
Eine Methode ist die Art etwas auszuführen. Zum Beispiel gibt es mehrere Methode um Kalorien zu verbrennen (Joggen, schwimmen...)
Eine Funktion ist eine Wirkungsweise bzw. ein Zweck. Also etwas funktioniert nur mit Strom oder Sport hat die Funktion Kalorien zu verbrennen