Aus welche Methode wurde aufgerufen?



  • Eine Methode ist in der OOP das, was ein Objekt ausführt, wenn es eine Nachricht empfängt. Die Frage kann jetzt nur noch sein, wie gut oder schlecht die programmiersprachlichen Elemente die OOP-Elemente abbilden. Also ob eine Memberfunktion jetzt Methode heißen darf oder nicht beispielsweise. Irgendeine Phantasienomenklatur (@Fellhuhn) ist mit Sicherheit nicht sinnvoll.



  • ups, 2. Seite übersehen.

    Dann erläutere ich mal partiell das Problem:
    Es geht um einen Chartparser. Das ist ein System um einen Satz mit einer syntaktischen (Struktur zu versehen). Diese wird in einer Chart gespeichert.
    Da ein Satz aber nicht immer nur mit genau 1 Syntaxbaum geparst werden kann muss man die Ambiguitäten irgendwie verwalten.

    Naumann/Langer schlagen dafür die implizite Kantenrepräsentation vor. Siehe dazu S. Naumann & H. Langer: Parsing. Eine Einführung in die maschinelle Analyse natürlicher Sprache. Teubner, Stuttgart 1994, S. 161, Kapitel 7.4.2.

    Wens wirklich interessiert: Hier gibts das Buch: http://www.uni-trier.de/index.php?id=13891

    [Kauderwelsch]
    Und in Prolog hab ich das damals so gemacht, dass ich mir gemerkt habe, in welchem Kontext eine Kante in die Chart eingetragen wurde um die implizite Kanten-Repräsentation umzusetzen.
    [/Kauderwelsch]



  • Fellhuhn schrieb:

    ...
    int moep() ist eine Funktion
    void moep() ist eine Methode
    int Narf::moep() ist eine Member-Funktion
    void Narf::moep() ist eine Member-Methode
    ...

    Das klingt ja alles sehr schön .... aber kennst Du außer Dir noch jemanden, der das so sieht ?

    Gruß,

    Simon2.



  • pktm schrieb:

    ..
    Und in Prolog hab ich das damals so gemacht, dass ich mir gemerkt habe, in welchem Kontext eine Kante in die Chart eingetragen wurde um die implizite Kanten-Repräsentation umzusetzen.
    ...

    Also "Kontext" ist doch eigentlich immer nur ein Euphemismus für "globale Variable" - in der Hoffnung, dass man mit dem Namen auch deren Probleme ablegen könnte. 😉
    Mach's doch mit globalen Variablen, wenn's sein muss - ich würde einen Parameter vorziehen (und sei es nur in separaten Aufruffunktionen oder einem anderen Parameter gekapselt).

    Gruß,

    Simon2.



  • Simon2 schrieb:

    pktm schrieb:

    ..
    Und in Prolog hab ich das damals so gemacht, dass ich mir gemerkt habe, in welchem Kontext eine Kante in die Chart eingetragen wurde um die implizite Kanten-Repräsentation umzusetzen.
    ...

    Also "Kontext" ist doch eigentlich immer nur ein Euphemismus für "globale Variable" - in der Hoffnung, dass man mit dem Namen auch deren Probleme ablegen könnte. 😉
    Mach's doch mit globalen Variablen, wenn's sein muss - ich würde einen Parameter vorziehen (und sei es nur in separaten Aufruffunktionen oder einem anderen Parameter gekapselt).

    Gruß,

    Simon2.

    Nix globale Varibale - pfui! ^^
    Das wurde in Prolog auch schön mit einem Parameter gelöst, auch wenn das eher der untypischere Weg war.



  • Wie schön zu sehen, dass mein kleiner Beitrag wieder mal eine Riesendiskussion aufgeworfen hat 😃

    camper schrieb:

    Nexus schrieb:

    Mit Methoden bezeichnet man im Übrigen nur die Funktionen von Klassen und Strukturen (ich sehe bei dir weder noch).

    1. Strukturen sind Klassen.
    2. Der Begriff "Methode" ist im Kontext von C++ nicht eindeutig, der Standard benutzt dieses Wort nicht. Der Begriff wird primär in der objektorientierten Programmierung gerne verwendet; da C++ nicht rein objektorientiert ist, gibt es dort dafür aber keine exakte Entsprechung. Je nach Kontext könnten nur virtuelle Funktionen, oder sonst nur nicht-statische Memberfunktionen, oder sonst jede Art Memberfunktion, oder sonst jede Memberfunktion und solche freien Funktionen, die mit der Klasse direkt assoziert sind, gemeint sein. Aus diesem Grunde sollte der Begriff hier nur mit Bedacht verwendet werden und jedenfalls kann er nicht so ohne Weiteres auf obige Definition reduziert werden - oder man legt das "von" sehr weit aus.

    1. Ich bin mir im Klaren darüber, dass struct und class in C++ bis auf die Zugriffsrechte identisch sind, aber kann man sie deshalb nicht namentechnisch trennen? Also "Struktur" für alle mit public als Defaultberechtigung, "Klasse" für jene mit private? Selber brauche ich eigentlich auch eher "Klasse", hier wollte ich betonen, dass es für beide gelte.

    2. Danke für die Berichtigung; ich war mir relativ sicher, mit Methode eine Klassen-Memberfunktion zu bezeichnen.

    In C++ ist es aber relativ häufig so, dass irgendwelche Bezeichnungen nicht ganz eindeutig sind, oder? Gerade wenn man z.B. von Struktur spricht, kann man neben dem Schlüsselwort struct und dessen Anwendung auch z.B. Programmstruktur, Dateistruktur etc. meinen... Klar muss man das halt eindeutig schreiben, meistens ist es auch aus dem Kontext ersichtlich. Ich denke nur, es gibt einige Begriffe, die sich nicht so leicht definieren lassen.



  • Um auf die eigentliche Fragestellung zurückzukommen: Unter Vernachlässigung einiger weniger Spezialfälle kenne ich nur folgende Möglichkeiten die Sinn machen. (Und Vernachlässigung von allem was mit jetzt u.u. entgangen ist)

    1. Man übergibt der Funktion alles was sie braucht um zu entscheiden was sie tun muss
    2. Man macht unterschiedliche Funktionen die unterschiedliche Dinge tun
      3a) Man entscheidet anhand von Member-Variablen was zu tun ist
      3b) Man entscheidet anhand der konkreten Klasse eines Objekts was zu tun ist

    Jede dieser Möglichkeiten kann man gut anwenden, allerdings kommt es sehr darauf an worum es geht. Wo z.B. viel konfiguriert und gescriptet wird wird man um (1) nicht herumkommen. (2) hat ansich keinen eigentlichen "Zweck", sondern ist IMO eher als "Normalzustand" anzusehen bzw. anzustreben. Und (3) ist bei Objektorientierter Programmierung oft angesagt, z.B. immer dort wo man Programmteile hat die mit einem abstrakten Interface arbeiten.

    Globale Variablen sind IMO böse, und sollten vermieden werden solange nicht sehr gute Gründe für deren Einsatz sprechen. Und das tun sie wie Anfangs angedeutet nur ganz selten.



  • hustbaer schrieb:

    Um auf die eigentliche Fragestellung zurückzukommen: Unter Vernachlässigung einiger weniger Spezialfälle kenne ich nur folgende Möglichkeiten die Sinn machen. (Und Vernachlässigung von allem was mit jetzt u.u. entgangen ist)

    👍

    Mit anderen Worten:
    Unter Vernachlässigung dessen, was ich nicht weis, kenne ich folgende Möglichkeiten:

    👍



  • pktm schrieb:

    So wird es halt ein Parameter.

    ja.



  • Simon2 schrieb:

    Also "Kontext" ist doch eigentlich immer nur ein Euphemismus für "globale Variable" - in der Hoffnung, dass man mit dem Namen auch deren Probleme ablegen könnte. 😉

    In diesem Sinne habe ich das Wort noch nie verstanden. Alles was ich programmiere lebt normalerweise in einem gewissen Kontext, darunter fällt für mich jeglicher Programmzustand von dem die Ausführung einer Funktion (oder Methode ;)) abhängt. Wo kommen da jetzt die globalen Variablen ins Spiel?



  • Jester schrieb:

    Simon2 schrieb:

    Also "Kontext" ist doch eigentlich immer nur ein Euphemismus für "globale Variable" - in der Hoffnung, dass man mit dem Namen auch deren Probleme ablegen könnte. 😉

    In diesem Sinne habe ich das Wort noch nie verstanden. Alles was ich programmiere lebt normalerweise in einem gewissen Kontext, darunter fällt für mich jeglicher Programmzustand von dem die Ausführung einer Funktion (oder Methode ;)) abhängt. Wo kommen da jetzt die globalen Variablen ins Spiel?

    Ja und der Wertekontext der CDU hat auch nichts mit globalen Variablen zu tun.... :p 😉
    Ich kenne den Ausdruck "Kontext" (u.a.) aus folgendem Kontext: "Ja ... und woher weiß jetzt das Objekt, in welchem Subsystem es liegt ? ... ach, das kann es ja aus dem 'Kontext' lesen !" ... und damit ist dann eine bestimmte technische Datenstruktur gemeint, die von überall zugänglich ist.
    So ein Vorgehen hatte ich beim Threadersteller vermutet, aber das hat er ja bereits weiter oben widerlegt.

    Gruß,

    Simon2.



  • das heißt dein "eigentlich immer" ist zu lesen als "auch manchmal"?



  • Jester schrieb:

    das heißt dein "eigentlich immer" ist zu lesen als "auch manchmal"?

    Nein, sondern es heißt "... in meinem Umfeld und in solchen Fragestellungen eigentlich immer ...".
    Hätte jetzt nicht gedacht, dass das sooo außergewöhnlich ist.

    Gruß,

    Simon2.



  • Nachtrag: Bäh - ausgeloggt ist blöd. 😃

    Simon2_ausgeloggt schrieb:

    Jester schrieb:

    das heißt dein "eigentlich immer" ist zu lesen als "auch manchmal"?

    Nein, sondern es heißt "... in meinem Umfeld und in solchen Fragestellungen eigentlich immer ...".
    Hätte jetzt nicht gedacht, dass es sooo außergewöhnlich ist, wenn man hier von seiner eigenen Meinung spricht.

    Gruß,

    Simon2.


Anmelden zum Antworten