function - sind - unterschied prozedur funktion




Unterschied zwischen einer Methode und einer Funktion (20)

Kann jemand eine einfache Erklärung von Methoden vs. Funktionen im OOP-Kontext geben?


Unterschied zwischen Methoden und Funktionen

Von diesem Dokument auf Microsoft lesen

Member, die ausführbaren Code enthalten, werden gemeinsam als Funktionsmember einer Klasse bezeichnet. Der vorherige Abschnitt beschreibt Methoden, die die primäre Art von Funktionsmembern sind. Dieser Abschnitt beschreibt die anderen Arten von Funktionsmembern, die von C # unterstützt werden: Konstruktoren, Eigenschaften, Indexer, Ereignisse, Operatoren und Finalizer.

Methoden sind also die Teilmenge der Funktionen. Jede Methode ist eine Funktion, aber nicht jede Funktion ist eine Methode, zum Beispiel kann ein constructor nicht als Methode angegeben werden, sondern als Funktion.


Aus meiner Sicht ist eine Methode jede Operation, die an einer Klasse durchgeführt werden kann. Es ist ein allgemeiner Begriff in der Programmierung verwendet.

In vielen Sprachen werden Methoden durch Funktionen und Unterroutinen repräsentiert. Der Hauptunterschied, den die meisten Sprachen für diese verwenden, besteht darin, dass Funktionen einen Wert an den Aufrufer zurückgeben können und ein Unterprogramm dies möglicherweise nicht. Viele moderne Sprachen haben jedoch nur Funktionen, aber diese können optional keinen Wert zurückgeben.

Nehmen wir zum Beispiel an, Sie möchten eine Katze beschreiben und möchten, dass sie gähnen kann. Sie würden eine Cat-Klasse mit einer Yawn-Methode erstellen, bei der es sich höchstwahrscheinlich um eine Funktion ohne Rückgabewert handelt.


Die Funktion oder eine Methode ist ein benanntes, aufrufbares Codeteil, das einige Operationen ausführt und optional einen Wert zurückgibt.

In C- Sprache wird der Begriff Funktion verwendet. Java- und C # -Personen würden es als eine Methode bezeichnen (und in diesem Fall ist eine Funktion innerhalb einer Klasse / eines Objekts definiert).

Ein C ++ - Programmierer könnte es eine Funktion oder manchmal Methode nennen (abhängig davon, ob sie C ++ - Code im prozeduralen Stil schreiben oder objektorientiert in C ++ arbeiten, würde auch ein C / C ++ - Programmierer wahrscheinlich eine Funktion nennen, weil der Begriff 'Methode' ist seltener in der C / C ++ - Literatur verwendet).

Sie verwenden eine Funktion, indem Sie einfach ihren Namen aufrufen,

result = mySum(num1, num2);


Sie würden eine Methode aufrufen, indem Sie zuerst auf ihr Objekt verweisen,

result = MyCalc.mySum(num1,num2);

Die Leute von IMHO wollten einfach ein neues Wort erfinden, um die Kommunikation zwischen Programmierern zu erleichtern, wenn sie sich auf Funktionen innerhalb von Objekten beziehen wollten.

Wenn Sie Methoden sagen, meinen Sie Funktionen innerhalb der Klasse. Wenn Sie Funktionen sagen, meinen Sie einfach Funktionen außerhalb der Klasse.

Die Wahrheit ist, dass beide Wörter verwendet werden, um Funktionen zu beschreiben. Selbst wenn du es falsch benutzt hast, passiert nichts Falsches. Beide Wörter beschreiben gut, was Sie in Ihrem Code erreichen möchten.

Funktion ist ein Code, der eine Rolle ( eine Funktion ) spielen muss, um etwas zu tun. Methode ist eine Methode , um das Problem zu lösen.

Es macht das Gleiche. Es ist das selbe Ding. Wenn Sie sehr genau sein wollen und der Konvention folgen, können Sie Methoden als Funktionen innerhalb von Objekten bezeichnen.


Eine Funktion ist ein mathematisches Konzept. Beispielsweise:

f(x,y) = sin(x) + cos(y)

sagt, dass die Funktion f () den Sinus des ersten Parameters, der dem Kosinus des zweiten Parameters hinzugefügt wurde, zurückgibt. Es ist nur Mathe. Wie es passiert, sind sin () und cos () auch Funktionen. Eine Funktion hat eine andere Eigenschaft: Alle Aufrufe einer Funktion mit denselben Parametern sollten das gleiche Ergebnis liefern.

Eine Methode hingegen ist eine Funktion, die sich auf ein Objekt in einer objektorientierten Sprache bezieht. Es hat einen impliziten Parameter: das Objekt, auf das (und sein Zustand) eingewirkt wird.

Wenn Sie also ein Objekt Z mit einer Methode g (x) haben, sehen Sie möglicherweise Folgendes:

Z.g(x) = sin(x) + cos(Z.y)

In diesem Fall wird der Parameter x übergeben, genauso wie im Funktionsbeispiel zuvor. Der Parameter für cos () ist jedoch ein Wert, der innerhalb des Objekts Z lebt. Z und die darin enthaltenen Daten (Zy) sind implizite Parameter für die g () - Methode von Z.


Eine Methode ist auf einem Objekt.
Eine Funktion ist unabhängig von einem Objekt.

Für Java gibt es nur Methoden.
Für C gibt es nur Funktionen.

Für C ++ hängt es davon ab, ob Sie in einer Klasse sind oder nicht.


Einfache Art sich zu erinnern:

  • F unction → F ree (Free bedeutet nicht zu einem Objekt oder einer Klasse gehören)
  • M ethode → M ember (Ein Mitglied eines Objekts oder einer Klasse)

Funktion ist das Konzept, das hauptsächlich zur prozedurorientierten Programmierung gehört, wobei eine Funktion eine Entität ist, die Daten verarbeiten und Ihnen einen Wert zurückgeben kann

Methode ist das Konzept der objektorientierten Programmierung, bei der eine Methode Mitglied einer Klasse ist, die hauptsächlich die Klassenmitglieder bearbeitet.


Funktion ist eine Menge von Logik, mit der Daten manipuliert werden können.

While, Method ist eine Funktion, mit der die Daten des Objekts, zu dem es gehört, manipuliert werden. Wenn Sie also eine Funktion haben, die nicht vollständig mit Ihrer Klasse verbunden ist, aber in der Klasse deklariert wurde, ist dies technisch gesehen keine Methode. Es nennt sich ein schlechtes Design.


Hier ist eine Erklärung für Methode vs. Funktion anhand von JavaScript-Beispielen:

test(20, 50); ist Funktion definieren und verwenden, um einige Schritte auszuführen oder etwas zurückzugeben, das irgendwo gespeichert / verwendet werden kann.

Sie können Code wiederverwenden: Definieren Sie den Code einmal und verwenden Sie ihn mehrmals.

Sie können denselben Code mehrmals mit verschiedenen Argumenten verwenden, um unterschiedliche Ergebnisse zu erzielen.

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b
}

var test = something.test(); hier test () kann eine Methode eines Objekts oder benutzerdefiniert ein Prototyp für eingebaute Objekte sein, hier ist mehr Erklärung:

JavaScript-Methoden sind die Aktionen, die an Objekten ausgeführt werden können.

Eine JavaScript-Methode ist eine Eigenschaft, die eine Funktionsdefinition enthält.

Eingebaute Eigenschaft / Methode für Strings in Javascript:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

Benutzerdefiniertes Beispiel:

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

Sie können zum Beispiel auch Eigenschaften für String, Array usw. definieren

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

var something = "ThisIsSomeString"

// now use distance like this, run and check console log

something.distance("m");

Einige Referenzen: Javascript Objekt Methode , Functions , Weitere Informationen zum Prototyp


Ich bin kein Experte, aber das weiß ich:

  1. Die Funktion ist ein C-Ausdruck, bezieht sich auf einen Code und der Funktionsname ist der Bezeichner für die Verwendung dieser Funktion.

  2. Methode ist der OO-Ausdruck, typischerweise hat er einen this-Zeiger im Funktionsparameter. Sie können dieses Stück Code nicht wie C aufrufen, Sie müssen ein Objekt verwenden, um es aufzurufen.

  3. Die Aufrufmethoden sind ebenfalls unterschiedlich. Hier rufen Sie die Bedeutung auf, um die Adresse dieses Codeabschnitts zu finden. C / C ++, die Verknüpfungszeit verwendet das Funktionssymbol zum Lokalisieren.

  4. Ziel-C ist anders. Rufen Sie eine C-Funktion auf, die die Datenstruktur verwendet, um die Adresse zu finden. Es bedeutet, dass zur Laufzeit alles bekannt ist.


Ich weiß, viele andere haben bereits geantwortet, aber ich fand folgendes ist eine einfache, aber effektive Single-Line-Antwort. Obwohl es nicht viel besser aussieht als andere Antworten hier, aber wenn Sie es sorgfältig lesen, hat es alles, was Sie über die Methode vs Funktion wissen müssen.

Eine Methode ist eine Funktion, die einen definierten Empfänger hat, in OOP-Begriffen ist eine Methode eine Funktion für eine Instanz eines Objekts.


In C ++ wird manchmal die Methode verwendet, um den Begriff der Memberfunktion einer Klasse zu reflektieren. Kürzlich fand ich jedoch eine Aussage in dem Buch «Die C ++ Programmiersprache 4. Auflage», auf Seite 586 «Abgeleitete Klassen»

Eine virtuelle Funktion wird manchmal als Methode bezeichnet.

Dies ist ein wenig verwirrend, aber er sagte manchmal , also ist es in etwa sinnvoll, C ++ - Ersteller neigt dazu, Methoden zu sehen, wie Funktionen auf Objekten aufgerufen werden können und sich polymorph verhalten können.


In OO-Sprachen wie Object Pascal oder C ++ ist eine "Methode" eine Funktion, die einem Objekt zugeordnet ist. So könnte zum Beispiel ein "Hund" -Objekt eine "bellen" -Funktion haben und dies würde als "Methode" betrachtet werden. Im Gegensatz dazu steht die "StrLen" -Funktion alleine (sie stellt die Länge einer als Argument bereitgestellten Zeichenkette bereit). Es ist also nur eine "Funktion". Javascript ist technisch objektorientiert, hat aber viele Einschränkungen im Vergleich zu einer vollwertigen Sprache wie C ++, C # oder Pascal. Dennoch sollte die Unterscheidung noch gelten.

Ein paar zusätzliche Fakten: C # ist vollständig objektorientiert, so dass Sie keine eigenständigen "Funktionen" erstellen können. In C # ist jede Funktion an ein Objekt gebunden und somit technisch eine "Methode". Der Kicker ist, dass nur wenige Leute in C # sie als "Methoden" bezeichnen - sie benutzen einfach den Begriff "Funktionen", weil es keine wirkliche Unterscheidung gibt.

Schließlich - nur damit irgendwelche Pascal-Gurus hier nicht auf mich springen - unterscheidet Pascal auch zwischen "Funktionen" (die einen Wert zurückgeben) und "Prozeduren", die dies nicht tun. In C # wird diese Unterscheidung nicht explizit vorgenommen, Sie können jedoch natürlich auch einen Wert zurückgeben.


In einer Näherung erster Ordnung ist eine Methode (in C ++ - Stil OO) ein anderes Wort für eine Elementfunktion, das heißt eine Funktion, die Teil einer Klasse ist.

In Sprachen wie C / C ++ können Sie Funktionen haben, die nicht Mitglieder einer Klasse sind; Sie rufen keine Funktion auf, die keiner Klasse einer Methode zugeordnet ist.


Lassen Sie uns nicht über komplizieren, was eine sehr einfache Antwort sein sollte. Methoden und Funktionen sind dasselbe. Sie rufen eine Funktion eine Funktion auf, wenn sie außerhalb einer Klasse ist, und Sie rufen eine Funktion eine Methode auf, wenn es in einer Klasse geschrieben wird.


Methoden sind Funktionen von Klassen. Im normalen Jargon tauschen Leute die Methode und die Funktion überall aus. Im Grunde können Sie sie als dasselbe betrachten (nicht sicher, ob globale Funktionen Methoden genannt werden).

http://en.wikipedia.org/wiki/Method_(computer_science)


Nehmen wir an, eine Funktion ist ein Codeblock (normalerweise mit einem eigenen Bereich und manchmal mit einem eigenen Abschluss), der möglicherweise einige Argumente erhält und möglicherweise auch ein Ergebnis zurückgibt.

Eine Methode ist eine Funktion, die einem Objekt gehört (in einigen objektorientierten Systemen ist es korrekter zu sagen, dass es einer Klasse gehört). Wenn Sie von einem Objekt / einer Klasse "im Besitz" sind, bedeutet dies, dass Sie über das Objekt / die Klasse auf die Methode verweisen. Wenn Sie z. B. in Java eine Methode "open ()" im Besitz eines Objekts "door" aufrufen möchten, müssen Sie "door.open ()" schreiben.

Üblicherweise erhalten Methoden auch einige zusätzliche Attribute, die ihr Verhalten innerhalb des Objekts / der Klasse beschreiben, zum Beispiel: Sichtbarkeit (bezogen auf das objektorientierte Konzept der Kapselung), die definiert, von welchen Objekten (oder Klassen) die Methode aufgerufen werden kann.

In vielen objektorientierten Sprachen gehören alle "Funktionen" zu einem Objekt (oder einer Klasse) und daher gibt es in diesen Sprachen keine Funktionen, die keine Methoden sind.


für mich: Die Funktion einer Methode und einer Funktion ist dieselbe, wenn ich zustimme, dass:

  • Eine Funktion kann einen Wert zurückgeben
  • kann Parameter erwarten

Wie bei jedem Code können Sie Objekte einfügen und Sie haben möglicherweise ein Objekt, das als Ergebnis kommt. Dadurch könnten sie den Zustand eines Objekts ändern, aber das würde ihre grundlegende Funktionsweise für mich nicht ändern.

Es könnte eine Definition geben, die in aufrufenden Funktionen von Objekten oder anderen Codes unterscheidet. Aber ist das nicht etwas für eine verbale Unterscheidung und deshalb tauschen Leute sie aus? Das Erwähnungsbeispiel der Berechnung, mit der ich vorsichtig wäre. weil ich Mitarbeiter beschäftige, um meine Berechnungen durchzuführen:

new Employer().calculateSum( 8, 8 );

Auf diese Weise kann ich mich darauf verlassen, dass ein Arbeitgeber für die Berechnungen verantwortlich ist. Wenn er mehr Geld will, lasse ich ihn frei und lasse die Funktion des Müllsammlers, ungenutzte Angestellte zu entsorgen, den Rest erledigen und einen neuen Angestellten bekommen.

Selbst wenn man argumentiert, dass eine Methode eine Objektfunktion ist und eine Funktion nicht verbunden ist, hilft mir die Berechnung nicht. Der Funktionsdeskriptor selbst und im Idealfall die Dokumentation der Funktion sagt mir, was sie benötigt und was sie zurückgibt. Der Rest, wie den Zustand eines Objekts zu manipulieren, ist für mich nicht wirklich transparent. Ich erwarte, dass sowohl Funktionen als auch Methoden liefern und manipulieren, was sie behaupten, ohne dass sie im Detail wissen müssen, wie sie das machen. Selbst eine reine Berechnungsfunktion kann den Status der Konsole ändern oder an eine Protokolldatei anhängen.


"Methode" ist das objektorientierte Wort für "Funktion" . Das ist so ziemlich alles, was es gibt (dh, keinen wirklichen Unterschied).

Leider glaube ich, dass viele der Antworten die Idee, dass es einen komplexen, bedeutungsvollen Unterschied gibt, fortführen oder vorantreiben.

Wirklich - es gibt nicht viel, nur verschiedene Wörter für die gleiche Sache.

[späte Zugabe]

Wie Brian Neal in einem Kommentar zu dieser Frage bemerkte, verwendet der C ++ - Standard niemals den Begriff "Methode", wenn er sich auf Elementfunktionen bezieht. Manche Leute nehmen das als Hinweis, dass C ++ nicht wirklich eine objektorientierte Sprache ist; Ich ziehe es jedoch vor, dies als Hinweis darauf zu verstehen, dass eine ziemlich schlaue Gruppe von Leuten nicht glaubte, dass es einen besonders starken Grund gab, einen anderen Begriff zu verwenden.





terminology