10.04.2010, 10:03
Abrissbirne hat hier eine spezifische Frage zum Vorgehen bei Erstellen einer Klasse gestellt. eg hat ein Posting gemacht, auf das ich mit einem neuen Thema antworten will - weil ich eine Frage aufwerfen möchte, die nichts mit der von abrissbirne zu tun hat:
Eine LabVIEW-spezifische Eigenschaft jedoch behindert die "lebensnahe Umsetzung der Beziehungen" zwischen unterscheidlichen Instanzen erheblich: der Datenfluß.
In Realität sind Instanzen nicht sequenziert (naja, vielleicht manche). In LV soll die Instanz-Variable als Datenfluß geführt werden. Das führt aber ganz schnell zu großen Problemen bei der Verwendung von Instanzen. z.B. dann, wenn ich in parallel laufenden Prozessen auf diese eine Instanz zugreifen will. Man kann diese Probleme natürlich mit Tricks umgehen (z.B. FGVs) - was dann aber die Übersichtlichkeit und das Debuggen erschwert.
In einer textorientierten Sprache kann die Instanz-Variable global vorliegen. Jeder(, der die Erlaubnis bekommen hat) hat Zugriff auf die Instanz und kennt deren Typ (verwendbar sind natürlich nur die öffentlichen bzw. veröffentlichten Elemente). Das entspricht in LV also einer "Globalen Variablen" (in LV nicht zu verwenden), der Zugriff gilt als "by reference".
Hier die Vorgeschichte zu meiner Frage:
Ich will auch mal eine Klasse machen und zwar von einem Modul, was bereits existiert und hervorragend funktioniert. Es handelt sich um das Modul "Bitte Warten", von dem ich die verschiedenen LV-Versionen mal als ZIP-Files angehängt habe. Eine (1) Klasseninstanz soll in beliebigen parallelen Prozessen aufrufbar sein. Später soll es möglich sein, mehrere dieser Instanzen parallel und aus parellelen Prozessen heraus aufzurufen.
Jetzt die Frage:
Wie mach ich das mit LVOOP, eine einzige Klassen-Variable ohne deren Datenfluß zu verwenden? Und ohne sie als global zu definieren.
Hinweis zur den Lizenzbedingungen für "BitteWarten":
Einzige Bedingung: Sollten die LV-Tassen wider Erwarten doch nicht ankommen, bitte dem Admin auf die Füße treten!
' schrieb:Man handelt mit OOP-Objekten im Programm genauso wie mit realen Objekten im Leben.Diese Aussage ist allgemein betrachtet natürlich richtig.
Eine LabVIEW-spezifische Eigenschaft jedoch behindert die "lebensnahe Umsetzung der Beziehungen" zwischen unterscheidlichen Instanzen erheblich: der Datenfluß.
In Realität sind Instanzen nicht sequenziert (naja, vielleicht manche). In LV soll die Instanz-Variable als Datenfluß geführt werden. Das führt aber ganz schnell zu großen Problemen bei der Verwendung von Instanzen. z.B. dann, wenn ich in parallel laufenden Prozessen auf diese eine Instanz zugreifen will. Man kann diese Probleme natürlich mit Tricks umgehen (z.B. FGVs) - was dann aber die Übersichtlichkeit und das Debuggen erschwert.
In einer textorientierten Sprache kann die Instanz-Variable global vorliegen. Jeder(, der die Erlaubnis bekommen hat) hat Zugriff auf die Instanz und kennt deren Typ (verwendbar sind natürlich nur die öffentlichen bzw. veröffentlichten Elemente). Das entspricht in LV also einer "Globalen Variablen" (in LV nicht zu verwenden), der Zugriff gilt als "by reference".
Hier die Vorgeschichte zu meiner Frage:
Ich will auch mal eine Klasse machen und zwar von einem Modul, was bereits existiert und hervorragend funktioniert. Es handelt sich um das Modul "Bitte Warten", von dem ich die verschiedenen LV-Versionen mal als ZIP-Files angehängt habe. Eine (1) Klasseninstanz soll in beliebigen parallelen Prozessen aufrufbar sein. Später soll es möglich sein, mehrere dieser Instanzen parallel und aus parellelen Prozessen heraus aufzurufen.
Jetzt die Frage:
Wie mach ich das mit LVOOP, eine einzige Klassen-Variable ohne deren Datenfluß zu verwenden? Und ohne sie als global zu definieren.
Hinweis zur den Lizenzbedingungen für "BitteWarten":
Einzige Bedingung: Sollten die LV-Tassen wider Erwarten doch nicht ankommen, bitte dem Admin auf die Füße treten!