33 Stimmen

'methode' vs. 'nachricht' vs. 'funktion' vs. '???'

Ich habe kürzlich eine Frage zu dem, was ich "Methodenaufrufe" genannt habe, gestellt. Die Antwort bezog sich auf "Nachrichten". Als selbstlernender Hobby-Programmierer, der versucht, Fragen so zu formulieren, dass ich nicht dumm aussehe, realisiere ich, dass die Terminologie, die ich verwende, viel darüber aussagt, wie ich programmieren gelernt habe.

Gibt es einen Unterschied zwischen den verschiedenen Begriffen für Methoden/Nachrichten usw. in der objektorientierten Programmierung? Handelt es sich um einen Unterschied, der daher rührt, dass verschiedene Programmiersprachen unterschiedliche Begriffe verwenden, um ähnliche Konzepte zu beschreiben?

Ich erinnere mich, dass in nicht-objektorientierten Sprachen manchmal ein Unterschied zwischen "Unterroutinen" und "Funktionen" gemacht wurde, je nachdem, ob ein Rückgabewert erwartet wurde, aber selbst dann war dies eine sprachspezifische Unterscheidung?

2voto

John Sibly Punkte 21927

Der Begriff "Nachricht" kann das Senden einer Nachricht an ein Objekt beziehen, was in einigen Programmiersprachen unterstützt wird und in anderen nicht.

Wenn das Objekt die Nachricht unterstützt, wird es bestimmten Code ausführen. Andernfalls wird es einfach ignorieren. Dies ist ein dynamischerer Ansatz als ein expliziter Funktions-/Methodenaufruf, bei dem das Objekt diese Funktion unterstützen muss.

Objective-C, glaube ich, verwendet diesen Ansatz der Nachrichtenübermittlung.

0voto

aku Punkte 118808

Ich bin mir nicht sicher über die Herkunft der Nachrichten-Terminologie. Meistens begegne ich Nachrichten im UML-Design. Objekte (Akteure in der UML-Terminologie) können miteinander kommunizieren durch Nachrichten. In Code der realen Welt ist eine Nachricht in der Regel einfach ein Funktionsaufruf. Ich denke an eine Nachricht als den Versuch, mit einem Objekt zu kommunizieren. Es kann eine echte Nachricht sein (wie Nachrichten in Betriebssystemen) oder Funktionsaufrufe.

0voto

Michael Stum Punkte 172055

Normalerweise scheint "Method" der richtige Name für Funktionen zu sein. Allerdings hat jede Sprache ihre eigenen Schlüsselwörter. Delphi macht zum Beispiel sogar einen Unterschied zwischen Methoden, die etwas zurückgeben ("Funktionen") und Methoden, die nichts zurückgeben ("Prozeduren"), während es in C-ähnlichen Sprachen keinen Unterschied gibt.

0voto

travis Punkte 34588

Hier sind einige vereinfachte Definitionen:

Methoden/Unterroutinen/Voids: führen eine Aktion aus

Funktionen: führen eine Aktion aus und geben einen Wert zurück

Ereignisse: werden aufgerufen, wenn ein Objekt ausgeführt wird

Handler: sind die Funktionen/Methoden, die die Ereignisse behandeln


PS: Dies ist ein perfektes Beispiel dafür, warum SO DL/DT/DD-Tags unterstützen sollte.

0voto

martinatime Punkte 2458

Ich glaube, dass es in diesem Punkt eine Frage der Präferenz ist. Die von Ihnen genannten Wörter sind im heutigen Sprachgebrauch im Grunde Synonyme und die meisten Menschen werden verstehen, was Sie meinen, wenn Sie entweder "Methode" oder "Funktion" sagen. Wenn Sie "Nachricht" verwenden, was nur wirklich in der OOP verwendet wird, könnten Sie möglicherweise das verwechseln, was Sie zu vermitteln versuchen. Zum Beispiel: "Ich muss eine Nachricht erstellen, um eine E-Mail-Nachricht zu senden." Andere Begriffe, die synonym sein könnten, und dies ist keine vollständige Liste, sind Unterprogramm, Aktion, Verfahren, Operation (obwohl normalerweise mathematischer Natur), Unterprogramm, Befehl...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X