Montag, 13. September 2010

Unterschied Funktionen / Prozeduren / Methoden

In vorigen Posts habe ich bis jetzt immer von "Funktionen" im Zusammenhang mit C# gesprochen wenn es um wiederverwendbare Codefragmente ging, denen Parameter übergeben werden können und die teilweise einen Rückgabewert haben.
In der Programmierung gibt es hierfür die Begriffe Prozedur, Funktion und Methode , die teilweise synonym verwendet werden aber doch gewisse Merkmale besitzen.
Von "Funktion" bei C# zu sprechen, war wahrscheinlich nicht ganz korrekt, deswegen werde ich im Folgenden den Begriff "Methode" verwenden und dies auch bei den älteren Posts korrigieren.
Denn:
Methode kann als Oberbegriff für die Begriffe Funktion und Prozedur betrachtet werden. Eine Prozedur ist dann eine Methode ohne Rückgabewert und eine Funktion eine Methode mit Rückgabewert.
Weiterhin gibt es in der funktionalen Programmierung insofern eine Unterscheidung zwischen Prozeduren / Funktionen und Methoden, als dass Prozeduren (oder eben Funktionen) als freie Methoden gelten und Methoden direkt an ein bestimmtes Objekt gebunden sind.
In der objektorientierten Programmierung allgemein und vor allem bei .Net lässt man diese Unterscheidungen meist fallen und benutzt stattdessen nur den Oberbegriff der Methode.
Diese Benennung ist nachvollziehbar, da nicht mehr zwischen Methoden mit und ohne Rückgabewert unterschieden wird, letzere geben einfach einen leeren Typ zurück (in C# werden sie mit void gekennzeichnet).
Außerdem haben bei der objektorientierten Programmierung alle Methoden einen Bezug zu einem Objekt, es gibt also keine Methoden mehr, die kontextfrei "mittem im Quellcode stehen".

Kommentare:

  1. Hallo ich bin eine Anfängerin und hätte da gleich mal eine Frage zu. Ich bin dabei ein Memory-Spiel zu programmieren und wollte einen Befehl autüfteln der die Karten mit einander vergleicht und sie dann im nächsten Schritt unsichtbar macht. Das verdecken ist kein Problem aber wie ich den Befehl programmieren soll weiss ich leider nicht.

    AntwortenLöschen
  2. Hallo,
    tut mir leid, ich verstehe leider dein Problem nicht, das musst du schon etwas genauer erläutern.
    Es hakt also beim Vergleichen von 2 Objekten? Wie ist denn dein Memory überhaupt aufgebaut?
    Kannst mir auch gerne den Quellcode per Email mal schicken.
    Viele Grüße und viel Spaß noch beim C# lernen :-)

    AntwortenLöschen