Funktionen Methoden ?



  • Was ist der Unterschied zwischen Funktion und Methode ?

    Danke im voraus!



  • Kommt drauf an wen du fragst.
    Manche Sprach-Standards verwenden immer den Begriff Funktion (AFAIK C++). Andere immer den Begriff Methode (AFAIK C# und Java).

    Manche Leute sagen auch zu "freien" Funktionen (=die zu keiner Klasse gehören) "Funktion", und zu Memberfunktionen "Methode".

    Man könnte auch auf die Idee kommen den Begriff "Funktion" auf Funktionen einzuschränken die einen Wert zurückgeben. Das übliche Gegenstück dazu wäre dann aber "Prozedur" und nicht "Methode".

    ps:
    Ich persönlich unterscheide da nicht grossartig. Wenn ich C#-lastig arbeite sag ich öfter Methode, wenn ich C++-lastig arbeite öfter Funktion. Meinen tu' ich immer das selbe: ein Stück imperativen Code das einen Namen hat.



  • also in C# weis ich dass es nur Methoden gibt, aber wieso keine funktionen ? und wieso gibt es dafür in C++ Funktionen und Methoden ?

    also sprich ich meine C++ in meiner Frage.

    Was ist der unterschied so ?



  • Das interessiert mich auch, aber so wie ich hustbaer verstanden habe, ist das nicht genau definiert.

    Wenn man bei wikipedia nachschaut, sind Methoden eher Begriffe aus der OOP. Aber eben immer noch Funktionen.

    https://de.wikipedia.org/wiki/Funktion_(Programmierung)
    https://de.wikipedia.org/wiki/Methode_(Programmierung)



  • hustbaer schrieb:

    Kommt drauf an wen du fragst.
    Manche Sprach-Standards verwenden immer den Begriff Funktion (AFAIK C++). Andere immer den Begriff Methode (AFAIK C# und Java).

    Manche Leute sagen auch zu "freien" Funktionen (=die zu keiner Klasse gehören) "Funktion", und zu Memberfunktionen "Methode".

    Man könnte auch auf die Idee kommen den Begriff "Funktion" auf Funktionen einzuschränken die einen Wert zurückgeben. Das übliche Gegenstück dazu wäre dann aber "Prozedur" und nicht "Methode".

    ps:
    Ich persönlich unterscheide da nicht grossartig. Wenn ich C#-lastig arbeite sag ich öfter Methode, wenn ich C++-lastig arbeite öfter Funktion. Meinen tu' ich immer das selbe: ein Stück imperativen Code das einen Namen hat.

    Unfug! Unfug! Unfug!

    Funktion/Prozedur/Sub ist das Stück Code, soweit ok. Da gibt es je nach Sprache Unterschiede, normalerweise geben Funktionen was zurück und Prozeduren/Subs nix, aber zum Bleistift in Perl gibts nur Subs und die dürfen optional was zurückgeben und in C++ gibts nur Funktionen und die dürfen als Rückgabetyp void haben und sich damit zu Prozeduren (dort void-Funktionen genannt) degradieren.

    Methode ist Member-Funktion(-Sub/-Prozedur). Da gibt es kein "Manche Leute" und "Man könnte auch".

    (Ok, wenn man in C oder assembler die OO-Features nachbildet, kann man natürlich auf dem Sprachnivo Funktionen haben und auf dem Anwendungsnivo sind es Methoden, schrecklicher in Perl, wo man freie Funktionen nachträglich zu Auch-Methoden adeln kann.)

    Falls eine zum Kotzen eklige Sprache keine freien Funktionen/Subs/Prozeduren kann, gibt es dort eben zufällig nur Methoden (,die natürlich auch Funktionen/Subs/Prozeduren sind). Das ist dann aber kein "Wenn ich C#-lastig arbeite, sag ich", sondern "hab ich net im java-buch gesehen".

    Richtig. So einfach kanns sein.



  • volkard.
    Weniger trinken.



  • husti.
    mehr bücher lesen. viel weniger müll posten. mir nicht dauernd widersprechen, lächerlicher aufmupf.



  • @volkard
    Man kann Kritik/Korrekturen auch freundlich oder zumindest neutral/höflich bringen. Und vor allem verhältnismässig.

    Wie du dich aufführst ist dagegen einfach nur kindisch. Aber hey, wenn du das brauchst...



  • hustbaer schrieb:

    Ich persönlich unterscheide da nicht grossartig. Wenn ich C#-lastig arbeite sag ich öfter Methode, wenn ich C++-lastig arbeite öfter Funktion. Meinen tu' ich immer das selbe: ein Stück imperativen Code das einen Namen hat.

    +1



  • OMG, theta, wie kannst du nur? Hast du denn volkards Beitrag nicht gelesen?



  • volkard schrieb:

    Unfug! Unfug! Unfug!
    ...

    Okay, ich sehe du bist von deiner Meinung überzeugter als Hustbaer von seiner.
    Was mir jetzt noch fehlt sind Argumente dafür, welche Sichtweise nun die Richtige ist.

    Finnegan

    P.S.: Mit diesem "Ey, watt guggst du?"-"Nivo" sabotierst du übrigens bei manchen Leuten deine eigene Überzeugungskraft -
    unabhängig davon, ob du nun recht hast, oder nicht. Das ist wahrscheinlich nicht das, was du erreichen möchtest.
    Falls es dein Ziel sein sollte zu trollen, gehören deine Beiträge allerdings mit zum Besten, was dieses Forum hier zu bieten hat 😉



  • ich verwende es wie folgt:
    + Funktion: das ist eine Funktion, welche nicht im Kontext einer Klasse definiert ist. Also eine "freie" Funktion so wie z.B. das altbekannte printf().

    + Methode: eine Funktion, welche im Kontext einer Klasse definiert ist, also z.B. das bekannte vector<T>::push_back().

    Erfahrung aus dem Programmieralltag: die beiden Wörter werden genauso gemischt wie die Wörter Doktor und Arzt.

    Wir sprechen hier natürlich auf einer hohen Abstraktionsebene. Letztlich zerfällt ja jeder Methodenaufruf wieder in einen Funktionsaufruf, welcher ein zusätzliches Argument hat: eine Referenz (bzw. bei C++: eine Adresse) auf das betreffende Objekt. Auf Assemblerebene merkt man nicht mehr viel von OOP 😉



  • Finnegan schrieb:

    volkard schrieb:

    Unfug! Unfug! Unfug!
    ...

    Okay, ich sehe du bist von deiner Meinung überzeugter als Hustbaer von seiner.

    Mir recht es, wenn Du siehst, daß hustis Meinung nicht ungeprüft gelernt werden sollte.

    Finnegan schrieb:

    Was mir jetzt noch fehlt sind Argumente dafür, welche Sichtweise nun die Richtige ist.

    Kindergarrten.
    http://lmgtfy.com/?q=methode+vs+funktion
    Aber ich bin sicher, das hättesrt Du auch alleine gepackt, wenn Du Dir dafür ein paar Stunden Zeit genommen hättest.

    Finnegan schrieb:

    P.S.: Mit diesem "Ey, watt guggst du?"-"Nivo" sabotierst du übrigens bei manchen Leuten deine eigene Überzeugungskraft -
    unabhängig davon, ob du nun recht hast, oder nicht.

    Bei denen, die einfachste Sachverhalte nicht selber prüfen können? Ups, da bin ich jetzt traurig. Aber ich kann nicht für alle da sein.

    Finnegan schrieb:

    Das ist wahrscheinlich nicht das, was du erreichen möchtest.
    Falls es dein Ziel sein sollte zu trollen, gehören deine Beiträge allerdings mit zum Besten, was dieses Forum hier zu bieten hat 😉

    Jo, klar. Nicht der ist der Troll, der den Unfug verzapft, sondern der, der es ausdeckt. Ist ja wie in der Bundespolitik hier.



  • irgend ein unreg schrieb:

    Erfahrung aus dem Programmieralltag: die beiden Wörter werden genauso gemischt wie die Wörter Doktor und Arzt.

    Komisch. In meinem Umfeld gibt es da Null Verwechslungen. Keiner sagt zu einer freien Funktion Methode. Und ganz nach belieben sagt man durcheinander zu einer Methode auch mal Funktion. Das ist doch richtig.

    Übrigens ist Doktor statt Arzt fast immer richtig, weil in der Medizin eine dort so genannte "Disse" in der Regel beschämend trivial ist.
    @Finnegan: http://lmgtfy.com/?q=niedergelassene+ärzte+doktortitel



  • ok und CLassmember?

    Sind das Objekte einer Klasse und! Klassenmethoden?

    Kenne den Begriff Member function wenn es um Klassen geht



  • Sewing schrieb:

    ok und CLassmember?
    Sind das Objekte einer Klasse und! Klassenmethoden?
    Kenne den Begriff Member function wenn es um Klassen geht

    Objekt ~ Instanz einer Klasse

    Klassenmethode ~ Methode, die nicht von einer spezifischen Instanz der Klasse abhängt, sondern nur von der Klasse an sich ~ aka static member function.



  • klassenmethode schrieb:

    Objekt ~ Instanz einer Klasse

    Ja, völlig richtig.

    Aber es ist drauf zu achten, daß bei Shlaer-Mellor: Objekt ~ Klasse. Und die beiden haben unglaublich großen Einfluß auf Bücher über OOA/OOD, UML und CASE-Tools, dadurch auch auf viele Profs. In der C++-Gemeinde sind diese Thesen aber zum Glück nicht angekommen.


Anmelden zum Antworten