LabVIEWForum.de
Mehrere Instanzen einer Klasse in einem Projekt anlegen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: LVOOP (/Forum-LVOOP)
+---- Thema: Mehrere Instanzen einer Klasse in einem Projekt anlegen (/Thread-Mehrere-Instanzen-einer-Klasse-in-einem-Projekt-anlegen)



Mehrere Instanzen einer Klasse in einem Projekt anlegen - Michael5 - 08.12.2023 11:06

Guten Morgen zusammen,
ich möchte für eine unserer neuen Anwendungen die OOP-Programmierung in LabVIEW anwenden.
Zu der Anwendung ist zu sagen, dass ich einen Bus habe, der mit einer beliebigen Anzahl von Steckplätzen ausgestattet sein kann.
In den Steckplätzen können mehrere identische, aber auch unterschiedliche Baugruppen stecken.
Der Bus hat ein Interface und steuert die Steckplätze über eine Schnittstelle an.

Nun ist meine Idee für jeden Baugruppen Typ eine Klasse zu schreiben, die die Klasse Steckplatz-Schnittstelle erbt.
Jetzt können aber von einem Baugruppen-Typ mehrere in diesem BUS stecken. Demzufolge sollte ich dann von dieser Baugruppen Klasse mehrere Instanzen anlegen.
Leider verstehe ich die Herangehensweise nicht.
Wenn ich in meiner Ereignisschleife oder in meiner State-Maschine auf die VIs oder Eigenschaften dieser Klasse zugreife, gehen die Daten verloren.
Ganz schlimm wird es, wenn die Instanzen der Baugruppen im Projekt in mehreren Parallelschleifen laufen.

Kann mir jemand ein Tutorial empfehlen, wo die Herangehensweise, mehrere Instanzen einer LabVIEW Klasse in einem LabVIEW Projekt anlegen und anwenden, gut beschrieben wird?

Liebe Grüße aus Tübingen


RE: Mehrere Instanzen einer Klasse in einem Projekt anlegen - GerdW - 08.12.2023 16:07

Hallo Michael,

Zitat:Nun ist meine Idee für jeden Baugruppen Typ eine Klasse zu schreiben, die die Klasse Steckplatz-Schnittstelle erbt.
Jetzt können aber von einem Baugruppen-Typ mehrere in diesem BUS stecken. Demzufolge sollte ich dann von dieser Baugruppen Klasse mehrere Instanzen anlegen.
Sollten deine Baugruppen nicht Kinder von der Klasse Steckplatz sein?
Also ein Bus mit mehreren Steckplätzen (=Objekte von Steckplatz) und jede Baugruppe ist ein Child von Steckplatz.
Wenn du jetzt mehrere Steckplätze verwalten willst, benötigst du ein Array of "Steckplatz"-Objekten. Und da jede Baugruppe von Steckplatz vererbt ist, kannst du die "Steckplatz"-Objekte auch durch "Baugruppen"-Objekte ersetzen…

Zitat:Herangehensweise, mehrere Instanzen einer LabVIEW Klasse in einem LabVIEW Projekt anlegen und anwenden
Wenn du mehrere "Instanzen" eines Klassenobjektes benötigst, dann musst du ein Array of Objects erstellen…
Genauso wie du sonst auch mehrere Elemente eines Datentyps in einem Array verwaltest!


RE: Mehrere Instanzen einer Klasse in einem Projekt anlegen - BNT - 09.12.2023 23:19

Hi Michael
Sieh Dir mal folgenden Thread an.
https://www.labviewforum.de/Thread-NI-Actor-Framework-Eine-Einfuehrung
und folgende Repositories:
https://git.gsi.de/EE-LV/Libraries/VIP2012
und
https://git.gsi.de/EE-LV/Libraries/UPN-Calculator
und
https://git.gsi.de/EE-LV/EE-HB/AF-HelloWorld

Die Repos auf github.com werden nicht weiter gepflegt.

Gruß Holger


RE: Mehrere Instanzen einer Klasse in einem Projekt anlegen - Michael5 - 12.12.2023 10:19

Hallo Holger, hallo GerdW,
Danke für die Antworten.

Entschuldigung, dass ich jetzt erst antworte. Ich bin gerade ein wenig angeschlagen und musste ein wenig pausieren.

Der Vorschlag von Gerd, dass ich Baugruppen anlege, die von der Klasse Steckplatz erben ist sehr gut. Das ist für die objektorientierte Herangehensweise der bessere Programmierstil.
Die Steckplatz Klassen dann in einem Array bündeln macht auch Sinn.

Die Beispiele von Holger muss ich mir noch genauer anschauen. Die Herangehensweise in den Beispielen ist schon LabVIEW Oberliga. Da brauche ich ein bisschen, um die Zusammenhänge zu verstehen. Aus der Dokumentation konnte ich aber entnehmen, dass es nicht geht, mit Referenzen (Pointer) auf Klassen in unterschiedlichen Schleifen, in einem LabVIEW Projekt, zu arbeiten. So wie ich das bis jetzt verstanden habe, komme ich um Queues nicht herum.

Gruß
Michael


RE: Mehrere Instanzen einer Klasse in einem Projekt anlegen - BNT - 12.12.2023 11:42

"Referenzen (Pointer) auf Klassen in unterschiedlichen Schleifen"

Benutze eine Queue mit der Größe 1 für den Austausch von Objekten zwischen den Schleifen. Damit ist auch gleich der wechselseitige Ausschluss für den Zugriff auf das Objekt gewährleistet.

Datenfluss!

Gruß Holger


RE: Mehrere Instanzen einer Klasse in einem Projekt anlegen - BNT - 12.12.2023 12:31

Es git auch das sogenannte Singleton Design Pattern.

Siehe: https://git.gsi.de/EE-LV/EE-HB/HGF_Lib/-/tree/master/HGF_LVC/HGF_DesignPatterns
in https://git.gsi.de/EE-LV/EE-HB/HGF_Lib

Gruß Holger