INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Objektorientiertes Programmieren mit LV



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.08.2009, 14:39 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2009 14:39 von eg.)
Beitrag #31

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Objektorientiertes Programmieren mit LV
Klasse erstellen in der alle Bilderinfos abgespeichert sind und na ja, wie immer halt ein Schieberegister, eine While-Schleife mit Event-Struktur. Abhängig vom Event das eine oder das andere VI aufrufen. Aber wie denn sonst?

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.08.2009, 14:39
Beitrag #32

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Aus diesem Grund nutze ich sie nicht. Ich versuche so zu programmieren, wie es vom Jeff Kodosky ursprünglich gedacht war. Also keine unsichtbaren Leitungen und uninitialisierten Schieberegister.
Wer sagt denn das die Schieberegister in FGV's uninitialisiert sind? Es gibt das Zustandsautomaten und ein Zustand ist "Initialisiere" Wink Diese Art der Programmierung wird einem im Intermediate Kurs sogar beigebracht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 14:48 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2009 15:26 von eg.)
Beitrag #33

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Objektorientiertes Programmieren mit LV
@ Y-P, das ist es genau. LVOOP-Klasse ist nichts anderes als Cluster, nur ist es ein wenig bequemer zu benutzen.
@ abrissbirne, ich sage ja nicht, dass man es nicht initialisieren kann, ich sage nur dass FGVs mit Reintrance und Instanziirung Probleme haben. Es kann also schnell passieren, dass wenn man nicht alles im Griff hat, können unerwartete Probleme auftreten.

Bleiben wir bei dem Beispiel mit Bilder. Im Prinzip ist es ein 2D-Array. Jetzt will man zum Beispiel das eine Bild schwarz und das andere weiß machen. Mit FGVs macht man entweder pro Bild ein FGV oder man nimmt ein Array aus Bilder oder auch man macht zwei Schieberegister in einer FGV.
Mit LVOOP (oder sagen wir mal einfach ohne FGVs) hat man eine Klasse und zwei Objekte. Das entsprechende VI zum Füllen mit der Farbe hat man nur ein Mal implementiert. Man kann ja dieses VI für das eine und für das andere Bild aufrufen. Dabei bleibt der Code übersichtlich und man hat nicht eine Funktion zwei mal zu implementieren.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 15:12
Beitrag #34

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Objektorientiertes Programmieren mit LV
LV-Klassen erwecken den Eindruck eigentlich nichts anderes als eine Sammlung von SubVI zu sein. Eigentlich könnte man alles zu Fuß ohne Klasse erledigen. Dem ist nicht ganz so: es gibt halt die Vererbung und die Kapselung.

Genauso könnte man in textbasierten Sprachen objektorientiert Programmieren indem nur mit bestimmten Funktionen auf bestimmte Daten zurückgreift und niemals die 'Daten direkt benutzt. Alles eine Frage der Disziplin!?

Objektorientierte Programmierung ist aber nicht nur eine Frage des Stils, wobei die Klassen-Objekte bestimmte Programmierweisen erfordern (in LV als auch in Text) und gleichzeitig die Arbeitsweise erleichtern. Auch die Philosophie die hinter der Bedeutung der Objektorientierung steckt ist unterschiedlich. Diese ist aber auch bei den textbasierten Sprachen nicht ganz einheitlich. LVOOP ist da sicherlich etwas besonderes, weil es auch noch den Datenfluss umsetzt. Dennoch ist es auch mit LVOOP möglich, Klassen erst zur Laufzeit zu laden. Oder klassenspezifische Funktionen aufzurufen, wobei in dem Blockdiagramm dann nur das VI der Basisklasse steht und zur Laufzeit das jeweils spezifische VI aufgrund des Klasse des übergebenen Objektes aufgerufen wird. Die Klasse des übergebenen Objektes muss natürlich von der Basisklasse abgeleitet sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 15:25
Beitrag #35

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:LV-Klassen erwecken den Eindruck eigentlich nichts anderes als eine Sammlung von SubVI zu sein. Eigentlich könnte man alles zu Fuß ohne Klasse erledigen. Dem ist nicht ganz so: es gibt halt die Vererbung und die Kapselung.
Top1
Und weil ich Vererbung und zwangsweise Kapselung bisher nicht brauche, sehe ich keinen Grund vieles nicht zu Fuß zu machen.

Zitat:Genauso könnte man in textbasierten Sprachen objektorientiert Programmieren indem nur mit bestimmten Funktionen auf bestimmte Daten zurückgreift und niemals die 'Daten direkt benutzt.
Ph34r

Zitat:Alles eine Frage der Disziplin!?
Das war es schon vor 25 Jahren, das wird es auch noch in 25 Jahren sein.

Zitat:Objektorientierte Programmierung ist aber nicht nur eine Frage des Stils, wobei die Klassen-Objekte bestimmte Programmierweisen erfordern (in LV als auch in Text) und gleichzeitig die Arbeitsweise erleichtern.
Letzteres ist auf jeden Fall ein Grund, LVOOP doch zu machen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 15:49
Beitrag #36

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Objektorientiertes Programmieren mit LV
Eine einfache Multiplikation für mein Bildbeispiel zeigt, dass wir es mit 747 MB zu tun haben.

Die möchte bestimmt niemand als Datenfluss von VI zu VI schicken. Und es wird auch klar, dass man davon in der Regel nur ein Objekt gleichzeitig im Speicher hat. Ich gehe mal von einer üblichen PC-Konfiguration aus.

Wenn es als Datenfluss nicht geht, scheidet eine Klasse zunächst aus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 15:52
Beitrag #37

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Objektorientiertes Programmieren mit LV
Wenn es nun so ist, dann würde ich es aus dem RAM in eine oder mehrere Dateien auslagern.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 15:54 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2009 15:55 von Y-P.)
Beitrag #38

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Objektorientiertes Programmieren mit LV
Bin mal gespannt, wann der LabVIEW-Advanced II - Lehrgang endlich mal kommt. Dort soll es nämlich genau um LVOOP gehen. Vielleicht kann ich dann auch von LVOOP überzeugt werden (wenn ich verstehe, was das Ganze soll und wie es funktioniert). Big Grin

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 16:08
Beitrag #39

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Objektorientiertes Programmieren mit LV
Stell Dir vor Du hast einen komplexen Messstand und Du kannst oder möchtest nicht immer davor sitzen, um an dem Programm für den Messstand zu arbeiten. Also baust Du ein virtuelles Instrument statt der realen Datenerfassung und an jeder stelle, wo der Messstand konfiguriert, Daten erfasst werden, Daten gespeichert werden kann ein Case hin, der je nach einem Wert in der Konfigurationsdatei das eine oder das andere Instrument benutzt. Etwas aufwändig.

Nun wird eine Variante des Messstandes gesbaut (andere Geräte gleich Funktionalität) und es kommen neue Anforderung an das was getan werden muss hinzu. Jetzt wird es schon ziemlich aufwändig die Ganzen Cases zu aktualisieren.

Nimm ein Klasse für jeden Messstand und das virtuelle Gerät, die von einer Basisklasse abgeleitet werden. Dann gibt nur noch eine Case-Struktur in der die Klasse nach Lesen der Konfiguration eingestellt wird. Das ganze Programm enthält keine Cases mehr sondern nur noch die VIs (Methoden) der Basisklasse. LV übernimmt die Entscheidung, welches VI jeweils benutzt wird.
Natürlich musst Du immer die VI (Methoden) aller Klassen programmieren. Das kann Dir niemand abnehmen egal ob Du nun Cases oder Klassen verwendest. Mit Klassen behälst Du in jedem Falle den Überblick was noch fehlt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2009, 16:15
Beitrag #40

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Eine einfache Multiplikation für mein Bildbeispiel zeigt, dass wir es mit 747 MB zu tun haben.

Die möchte bestimmt niemand als Datenfluss von VI zu VI schicken. Und es wird auch klar, dass man davon in der Regel nur ein Objekt gleichzeitig im Speicher hat. Ich gehe mal von einer üblichen PC-Konfiguration aus.

Wenn es als Datenfluss nicht geht, scheidet eine Klasse zunächst aus.

Kann ich auch von folgendem ausgehen: Daten, die in einer Klasse liegen - ob als private oder public - werden nicht mehr (so oft) kopiert?

Wenn ich also ein größerer 2D-Array habe, das bearbeitet werden muss, dann wird das ja mit normalem DF ständig (naja sagen wir sehr oft) kopiert. Was viel Arbeit macht. Ich könnte mir durchaus vorstellen, dass, liege dieses Array als private in einer Instanz, erheblich Kopierarbeit gespart werden könnte.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Objekt-Orientiertes Programmieren mit LV8.5 robertow 1 8.782 16.08.2008 23:10
Letzter Beitrag: eg

Gehe zu: