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!

11.08.2009, 14:59
Beitrag #71

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Objektorientiertes Programmieren mit LV
Ist das Array aus Klasse2 Bestandteil der Klasse1? Wenn ja, dann kanst du dir eine Methode erstellen die das Array indexiert und den Namen des ausgewählten Objektes ausgibt.
Weteres ist, wieso gibst du ein Array aus Objekten aufs FP aus? Was soll der Benutzer damit anfangen?

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2009, 15:17
Beitrag #72

cabua Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 57
Registriert seit: Aug 2009

8.6
2006
DE

44
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Ist das Array aus Klasse2 Bestandteil der Klasse1? Wenn ja, dann kanst du dir eine Methode erstellen die das Array indexiert und den Namen des ausgewählten Objektes ausgibt.
Weteres ist, wieso gibst du ein Array aus Objekten aufs FP aus? Was soll der Benutzer damit anfangen?


Nein ist kein Bestandteil.
Der User soll es als ganz normales Auswahl Element verwenden nur mit dem Vorteil, dass ich direkt das Objekt im Code verarbeiten kann.
Beispiel:

Klasse: Mp3 (Member: Pfad, Dateiname, Sänger, Zeit, Title, .....)

Ich erstelle jetzt eine Methode LESE VERZEICHNIS.
Alle vorkommenden Mp3 Dateien werden als Objekte gespeichert und deren Member ausgefüllt. Ich erhalte folgende Mp3 Objekte

c:mp3, WollePetry-Lied1.mp3, Wolle, 2min, Lied1,....
c:mp3, WollePetry-Lied2.mp3, Wolle, 2min, Lied2,....


Wenn ich jetzt eine Liste(Array) auf dem FrontPanel mache, sollte automatisch der Titel + Sänger angezeigt werden.

Wolle-Lied1
Wolle-Lied2

Es handelt sich hierbei nicht um Strings, sondern um Objekte von Mp3, der Benutzer sieht allerdings nur Titel+Sänger.
Bei einem Klick auf Wolle-Lied1 wird ein Event jetzt aufgerufen und führt dazu, dass ich ganz einfach im EventCase, das mp3 objekt bekomme (durch casten).
(mp3)ArrayElement

Und nun kann ich auf alle Methoden und Member von dem ausgewählten Objekt des Benutzers zugreifen.
z.B. mp3.Zeit

Ich arbeite also mit Objekten und nicht mit irgendwelchen Variablen wie Indizes, wo ich erst noch in anderen Arrays suchen muss und so.


Zusätzlich zu der noch offenen stehenden Frage, wie man Objekte im Array auf dem FP anders darstellen kann, wollte ich gerne wissen: Wie kann ich Member Variablen Public machen? So das ich darauf zugreifen kann ohne extra eine Methoden-Klasse


Gruß und Danke.

p.s:Ich hab jetzt schluß und gucke dann heute abend oder morgen früh nochmal rein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2009, 19:22
Beitrag #73

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Das ist tatsächlich das grösste Problem bei FGVs im allgemeinen. Hinzufügen neuer Methoden macht das ganze schnell einmal unübersichtlich. Aber ansonsten ist es für mich noch immer die erste Wahl, bis ich mich vielleicht doch mal dazu durchringen kann doch mal LVOOP wirklich in Betracht zu nehmen.
Yahoo

Wenn RolfK und i2dx kein LVOOP verwenden, ist für mich die Sache jetzt hier erledigt. Meine eigenen FGVs und Klassen, die mit Queues verbunden sind, sind also nicht ganz falsch. Guru1

Beinahe hätten es unicorn und eq geschafft, mich auf die LVOOP-Seite zu ziehen. Jetzt bleibt mir also vier Arbeit erspart. Prost

Ich häng jetzt noch Wäsche auf und dann geh ich für den Rest der Woche in Urlaub. Nach Schwerin auf die Bundesgartenschau. Laber

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
11.08.2009, 20:21
Beitrag #74

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:..
für den Erhalt des Datenfluss-Modells reicht doch der Error-Cluster. Race Conditions sind per se ausgeschlossen, weil die Methoden immer noch VIs sind und die werden nicht parallel abgearbeitet sofern sie nicht reentrant sind ...

Für den Datenfluss reicht natürlich auch der Error-Cluster. Wenn man ihn vergisst oder bewusst weglässt, würde man es unter Umständen nicht sofort merken. Ich denke bei einer vergessenen Klassen-Strippe fällt das schneller auf.

Das mit den Race-Condition könnte schon auftreten (wohlgemerkt ohne Datenfluss über Error-Cluster). Sicherlich nicht mit ein und demselben nicht-reentrant VI/Methode, sondern mit verschiedenen Methoden, die die Klassen-Daten verändern. Die Reihenfolge ohne Datenfluss wäre nicht automatisch gegeben. Verbindest Du immer alle Error-Cluster und wertest sie aus?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2009, 22:02
Beitrag #75

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Nein ist kein Bestandteil.
Der User soll es als ganz normales Auswahl Element verwenden nur mit dem Vorteil, dass ich direkt das Objekt im Code verarbeiten kann.
Beispiel:

Klasse: Mp3 (Member: Pfad, Dateiname, Sänger, Zeit, Title, .....)

Ich erstelle jetzt eine Methode LESE VERZEICHNIS.
Alle vorkommenden Mp3 Dateien werden als Objekte gespeichert und deren Member ausgefüllt. Ich erhalte folgende Mp3 Objekte

c:mp3, WollePetry-Lied1.mp3, Wolle, 2min, Lied1,....
c:mp3, WollePetry-Lied2.mp3, Wolle, 2min, Lied2,....
Wenn ich jetzt eine Liste(Array) auf dem FrontPanel mache, sollte automatisch der Titel + Sänger angezeigt werden.

Wolle-Lied1
Wolle-Lied2

Es handelt sich hierbei nicht um Strings, sondern um Objekte von Mp3, der Benutzer sieht allerdings nur Titel+Sänger.
Bei einem Klick auf Wolle-Lied1 wird ein Event jetzt aufgerufen und führt dazu, dass ich ganz einfach im EventCase, das mp3 objekt bekomme (durch casten).
(mp3)ArrayElement

Und nun kann ich auf alle Methoden und Member von dem ausgewählten Objekt des Benutzers zugreifen.
z.B. mp3.Zeit

Ich arbeite also mit Objekten und nicht mit irgendwelchen Variablen wie Indizes, wo ich erst noch in anderen Arrays suchen muss und so.
Zusätzlich zu der noch offenen stehenden Frage, wie man Objekte im Array auf dem FP anders darstellen kann, wollte ich gerne wissen: Wie kann ich Member Variablen Public machen? So das ich darauf zugreifen kann ohne extra eine Methoden-Klasse
Gruß und Danke.

p.s:Ich hab jetzt schluß und gucke dann heute abend oder morgen früh nochmal rein.

Das was Du beschreibst ist möglich. Um die Daten (ganz oder teilweise) eines Klassenobjektes anzuzeigen würde ich ein XControl verwenden. Hier lässt sich die ganze Formattierung und Zugriff über die Methoden der Klasse gut Verpacken. Leider lassen sich XControls nicht in Arrays packen (LV8.61f1), so dass ein besonderes XControl für Dein beschriebenes Problem erstellt werden muss: Über einen Property-Node wird das Array von MP3 Objekt an das XControl gegeben, das nun z.B. die Titel aller Objekte in einer Listbox darstellt. Wird nun eine Zeile der Listbox doppelt geklickt, so liefert das XControl aus dem Array das zu dem Titel gehörige Objekt (was natürlich über die indizierung eines Arrays geschied). Im Main.vi wird auf das Event Value change des Xcontrols gewartet und dann das Objekt ausgewertet. Anbei ein Projekt mit Main.VI, MP3-Klasse und einem XControl.

Ansonsten kommt man an die Member-Variablen nur über die Methoden der Klasse heran. Die Member Variablen public machen widerspricht dem Geheimnisprinzips der OOP.


Angehängte Datei(en)
Sonstige .zip  MP3.zip (Größe: 86,76 KB / Downloads: 164)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2009, 22:56 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2009 22:57 von unicorn.)
Beitrag #76

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Yahoo

Wenn RolfK und i2dx kein LVOOP verwenden, ist für mich die Sache jetzt hier erledigt. Meine eigenen FGVs und Klassen, die mit Queues verbunden sind, sind also nicht ganz falsch. Guru1

Beinahe hätten es unicorn und eq geschafft, mich auf die LVOOP-Seite zu ziehen. Jetzt bleibt mir also vier Arbeit erspart. Prost

Ich häng jetzt noch Wäsche auf und dann geh ich für den Rest der Woche in Urlaub. Nach Schwerin auf die Bundesgartenschau. Laber

Ich zitiere mal aus Bernd Oestereich, "Objektorientiere Softwareentwicklung", R. Oldenbourg, 4. Aufl., S. 35, 1998

"Die Grundzüge der Objektorientierung sind mit wenigen Beispielen erläutert. Auch KHV's (Kinder, Hausfrauen/-männer, Vorstände) finden einen schnellen Einstieg ins Thema. Neulinge finden meistens sogar einen einfacheren Zugang als erfahrene Informatiker. Während Profis sich von ihren bewährten und liebgewonnenen Daten-, Funktions-, Prozeßmodellen und ähnlichem nicht so richtig trennen können und stets versuchen, die neuen Ideen auf die eingefahrenen Denkgleise zu setzen, können Einsteiger ganz unbeschwert die Objektorientierung als eine leicht zugängliche Herangehensweise kennenlernen."

Das Buch ist mir nur zufällig in die Hände gekommen. Wirklich!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.08.2009, 23:14
Beitrag #77

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Objektorientiertes Programmieren mit LV
Und ich zitiere mich selbst aus meinem Tutorial:
Zitat:So können wir also in diesem Projekt ruhig LVOOP anwenden. Der Vorteil wäre, wie schon gesagt, dass man im Programm diese Objekte virtuell nachbildet und wie mit realen umgeht. Der Programmierer denkt dabei nicht wie ein Programmierer, sondern wie ein Mensch. Er hat dabei besseren Überblick, weil die Objekte im Programm "greifbar" sind.

Ansonsten wirklich eine sehr interessante Diskussion hier. Danke an cabua fürs Thread.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.08.2009, 07:26
Beitrag #78

cabua Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 57
Registriert seit: Aug 2009

8.6
2006
DE

44
Deutschland
Objektorientiertes Programmieren mit LV
Guten Morgen,

@unicorn

Interessant und danke für den Anhang. Ich werde mir das mal anschauen und gucken was ich davon übernehmen kann.


Um das Thema noch ein wenig anzuheizen:

Ich habe auf Lavag.org gelesen, dass mit LV 2009 (ist das die neuste Version?) man noch einen Schritt näher an objektorientierte Programmierung gegangen ist.
Mir ist auch aufgefallen, dass bei den Stellenausschreibungen inzwischen öfters steht, dass man OO Kenntnisse in LabVIEW mitbringen sollte.

So...der Tag ist Jung und der Thread noch warmBig Grin. Dann probier ich mal ein wenig aus (Pccrash) .

Bis gleich
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.08.2009, 07:28
Beitrag #79

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
Wo soll man so was brauchen?! :???:Alles was mit OOP gemacht werden kann, kann mit bisherigen Mitteln schon lange gemacht werden. OOP ist nur eine andere, viel komliziertere Denkweise.

Gruß Markus

' schrieb:Mir ist auch aufgefallen, dass bei den Stellenausschreibungen inzwischen öfters steht, dass man OO Kenntnisse in LabVIEW mitbringen sollte.

--------------------------------------------------------------------------
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
12.08.2009, 07:44 (Dieser Beitrag wurde zuletzt bearbeitet: 12.08.2009 07:47 von abrissbirne.)
Beitrag #80

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Objektorientiertes Programmieren mit LV
' schrieb:Verbindest Du immer alle Error-Cluster und wertest sie aus?
In meinen Projekten gibt es wirklich kein Error-Wire der nicht verbunden ist und ausgewertet wird. Ich denke das dies auch ein huter Programmierstil ist. Es ist doch kein Problem ein Error-Handler zu entwickeln und alle Error-Wire abzufangen bzw. auszuwerten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


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

Gehe zu: