<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://labviewwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gb119</id>
	<title>LabVIEW Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://labviewwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gb119"/>
	<link rel="alternate" type="text/html" href="https://labviewwiki.org/wiki/Special:Contributions/Gb119"/>
	<updated>2026-04-20T23:48:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming_FAQ&amp;diff=3744</id>
		<title>LabVIEW object-oriented programming FAQ</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming_FAQ&amp;diff=3744"/>
		<updated>2008-10-20T08:23:34Z</updated>

		<summary type="html">&lt;p&gt;Gb119: Add new QA about black border controls&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a stub page for Frequently Asked Questions (FAQ) about LVOOP.  Please feel free to add to the list of FAQ and answer any of the questions that have been posted.&lt;br /&gt;
&lt;br /&gt;
You may find many questions already answered on the [http://zone.ni.com/devzone/cda/tut/p/id/3573 LVOOP FAQ on NI&#039;s website]. That FAQ will be updated by NI for new versions of LabVIEW and new OO tools as they become available. &lt;br /&gt;
==Why is class data private?==&lt;br /&gt;
In general object-oriented programming terms, attributes (like methods) can have private, protected, or public visibility.  In practice individual object-oriented programming languages have differing capabilities when it comes to specifying visibility.  In the UML attributes are generally assumed to have private visibility unless otherwise specified.  (Operations, on the other hand, are assumed to be public unless otherwise specified.)  Generally, OOP style guides say never to give attributes public visibility, and the so-called “Law of Demeter” in its strong form limits attribute visibilities to private.  In other words, access to data in a class from outside the class is always through accessor methods (‘set’ or ‘get’) methods.  In LVOOP this is the only choice, a decision designed to promote good code designs with minimal coupling.  (See further here: [http://zone.ni.com/devzone/cda/tut/p/id/3574]).  (Note that LabVIEW 8.5 introduces a “Create Accessor” dialog box to simplify the creation of accessor methods.  For more information on this dialog box see the LabVIEW 8.5 Upgrade Notes here: [http://digital.ni.com/manuals.nsf/websearch/7A60FDCEA6D2D8C4862572FD00159F5A].)&lt;br /&gt;
&lt;br /&gt;
==What are the differences between public, protected, and private class members?==&lt;br /&gt;
In Object-Oriented Programming terms these generally mean:&lt;br /&gt;
&lt;br /&gt;
A private feature (UML abbreviation -) is accessible only from the defining class.&lt;br /&gt;
A public feature (+) is accessible from outside the class.&lt;br /&gt;
A protected feature (#) is (in C++, for example) accessible from the defining class and any of its child classes.&lt;br /&gt;
The UML also has an abbreviation for package (~) visibility.&lt;br /&gt;
The exact meaning of the different visibilities varies among different programming languages.&lt;br /&gt;
&lt;br /&gt;
==Why are there no class constructor and destructor?==&lt;br /&gt;
&lt;br /&gt;
==Are objects by value or by reference?==&lt;br /&gt;
&lt;br /&gt;
==What does LVOOP mean?==&lt;br /&gt;
&lt;br /&gt;
==How can I create by reference objects?==&lt;br /&gt;
&lt;br /&gt;
==How can I create active objects?==&lt;br /&gt;
&lt;br /&gt;
==Are there any add on tools for LVOOP?==&lt;br /&gt;
&lt;br /&gt;
==What does the &amp;quot;Dynamic Dispatch&amp;quot; connector pane terminal setting do?==&lt;br /&gt;
&lt;br /&gt;
==My LVOOP class control has a black border, what does that mean ? ==&lt;br /&gt;
&lt;br /&gt;
A LVOOP class has a default value that is determined by the default value of the private data control in the .lvclass file. However, a control on a vi front panel, or a constant on a block diagram can also have a default value that is different from the default data for the class as a whole. When this happens the control (or constant) is given a black border.&lt;br /&gt;
&lt;br /&gt;
When there is a class heirarchy, it is possible for a parent class method to process an instance of a child class. Similarily, it is possible to set the default value of a parent class control or constant to be an instance of a child class. This will also result in a black border around the parent class control or constant. When this happens with a member vi of the parent class, the parent class becomes dependent on the child class in addition to the normal dependency of the child on the parent. This can be confusing and awkward to locate.&lt;br /&gt;
&lt;br /&gt;
[[Category:GOOP]]&lt;/div&gt;</summary>
		<author><name>Gb119</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=XControl&amp;diff=3495</id>
		<title>XControl</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=XControl&amp;diff=3495"/>
		<updated>2008-03-11T21:07:53Z</updated>

		<summary type="html">&lt;p&gt;Gb119: /* Limitations */  Add note about lvclasses in XControl state crashing LV&amp;lt;8.5.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| align=&amp;quot;right&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|__TOC__&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Introduction==&lt;br /&gt;
XControls are introduced in LabVIEW 8.0 and enhance the power of front panel objects in great ways.&lt;br /&gt;
&lt;br /&gt;
Essentially an XControl is a front panel object with dedicated code linked in to react on certain user events.&lt;br /&gt;
&lt;br /&gt;
An XControl exists of several parts, managed in a .xctl file. The .xctl file is a XML-file like the project-file. Other parts of the XControl are abilities. &lt;br /&gt;
==[[XControl:Abilities|Abilites]]==&lt;br /&gt;
&lt;br /&gt;
==[[XControl:Properties|Properties]]==&lt;br /&gt;
&lt;br /&gt;
==[[XControl:Methods|Methods]]==&lt;br /&gt;
&lt;br /&gt;
==Caveats/Limitations==&lt;br /&gt;
===Limitations===&lt;br /&gt;
An XControl functions like a subpanel in the hosting VI. Subpanels (and therefore XControls) &#039;&#039;can not&#039;&#039; be placed inside an array. Note that you &#039;&#039;can&#039;&#039; define your XControl data as an array of any LabVIEW data type, and you &#039;&#039;can&#039;&#039; use array controls in the facade vi.&lt;br /&gt;
&lt;br /&gt;
Using LabVIEW native objects (.lvclass files) inside the state control of an XControl tends to crash LabVIEW for versions less than 8.5.1 when the XControl is used in a different application instance.&lt;br /&gt;
&lt;br /&gt;
===Tricks===&lt;br /&gt;
* If you require a variable number of runtime instances of your XControl,  Jarrod Slocum of [[National Instruments]] has created an example [http://community.ni.com/examples/linked-object-list-in-labview-8-0-using-xcontrols Linked Object List] based on a Subpanel &#039;&#039;inside&#039;&#039; an XControl.&lt;br /&gt;
&lt;br /&gt;
* If you want to react to dynamic events (or user events) you need them to register at the XControl Facade &#039;&#039;&#039;before&#039;&#039;&#039; the event happens.&lt;br /&gt;
[[Category:XControl]]&lt;/div&gt;</summary>
		<author><name>Gb119</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming&amp;diff=1877</id>
		<title>LabVIEW object-oriented programming</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=LabVIEW_object-oriented_programming&amp;diff=1877"/>
		<updated>2007-07-07T20:12:45Z</updated>

		<summary type="html">&lt;p&gt;Gb119: Removed a duplication of the linl tp the NI LVOOP FAQ.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LVOOP (pronounced &amp;quot;el vee oop&amp;quot;) is the native implementation of by-value object orientated programming that appeared in LabVIEW 8.20.&lt;br /&gt;
*NI has a comprehensive LabVIEW Object-Oriented Programming FAQ for their native LVOOP (native by-value OOP) [url=http://zone.ni.com/devzone/cda/tut/p/id/3573]here[/url]. It includes links to many other online resources, including the NI Week presentations that the NI R&amp;amp;D team have given to customers.&lt;br /&gt;
*There are multiple example programs that ship with LV. They are located in &amp;lt;labview&amp;gt;exampleslvoop&lt;br /&gt;
*The National Instruments LabVOOP FAQ references the [url=http://zone.ni.com/devzone/cda/tut/p/id/3574]LabVOOP White Paper[/url] several times. If you&#039;re an experienced LabVIEW developer, you&#039;ll probably enjoy it more than other forms of documentation.&lt;br /&gt;
*Christina Rogers (National Instruments R&amp;amp;D) has some excellent discussion about refactoring code, specifically the Getting Started Window, to use LabVIEW classes. See her blog at [url=http://eyesonvis.blogspot.com/]http://eyesonvis.blogspot.com/[/url] and look at the posts in August 2006.&lt;br /&gt;
*[url=http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=216094&amp;amp;requireLogin=False]The LabVOOP Design Patterns[/url] is a work-in-progress that [url=http://forums.lavag.org/Aristos-Queue-m5877.html]Aristos Queue[/url] (National Instruments R&amp;amp;D) is working on to help new LabVOOP customers choose architectures appropriate to different types of software projects.[/list]&lt;br /&gt;
== See Also ==&lt;br /&gt;
{{Portal|GOOP}}&lt;br /&gt;
[[Category:GOOP]]&lt;/div&gt;</summary>
		<author><name>Gb119</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=XNodes&amp;diff=921</id>
		<title>XNodes</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=XNodes&amp;diff=921"/>
		<updated>2007-05-03T22:48:55Z</updated>

		<summary type="html">&lt;p&gt;Gb119: Correct earlier mistakes in how to set the icon for the palette - why did I think it was other than this ?!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;XNodes&#039;&#039;&#039; are a technology built into [[LabVIEW 8.0]]+ that allows dynamic edit-time macro support.&lt;br /&gt;
&lt;br /&gt;
XNodes are [[Library|Libraries]] that feature several &amp;quot;Ability&amp;quot; [[VI]]s which consist of various events and methods of the XNode.&lt;br /&gt;
&lt;br /&gt;
==XNodes used in LabVIEW 8.2==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Class Aggregate Handler? || ([[vi.lib]]\Utility\AggHandler\Cls_AggHandler.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Class Grow Array Handler? || ([[vi.lib]]\Utility\XGrowArr-llb\Cls_GrowArr.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Regular Expression || ([[vi.lib]]\regexp\Match Regular Expression.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Shared Variables || ([[vi.lib]]\variable\varXNode.llb\vi.lib\variable\varXNode.llb\varXNode.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Timed Loops || ([[vi.lib]]\Platform\TimedLoop\XDataNode\XDataNode.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Database Variant To Data || ([[vi.lib]]\addons\database\_DB Variant To Data\Database Variant To Data.xnode)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ability VIs ==&lt;br /&gt;
:&#039;&#039;Main Article: [[XNodes:List of XNode Abilities|List of XNode Abilities]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== XNodes in the Development Environment==&lt;br /&gt;
XNodes can be added to palettes as if they were plain [[VI]]s, however the icon&lt;br /&gt;
that is displayed in the palette is that stored in the .xnode file and not the image created by the [[Image (XNode Ability)|Image]] Ability vi. It is possible to set the icon in the .xnode file by manually editing the xml file. One way of doing this is to create a LabVIEW library (.lvlib, not .llb) from within LabVIEW and edit the icon for this library. Then making sure that all references to the Xnode are closed, open both the .lvlib file and .xnode file in a text editor and copy across the &amp;lt;Property Name=&amp;quot;NI.Lib.Icon&amp;quot;... line.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{portal}}&lt;br /&gt;
*[[External Nodes]]&lt;br /&gt;
*[[XControls]]&lt;/div&gt;</summary>
		<author><name>Gb119</name></author>
	</entry>
	<entry>
		<id>https://labviewwiki.org/w/index.php?title=XNodes&amp;diff=643</id>
		<title>XNodes</title>
		<link rel="alternate" type="text/html" href="https://labviewwiki.org/w/index.php?title=XNodes&amp;diff=643"/>
		<updated>2007-03-28T14:46:02Z</updated>

		<summary type="html">&lt;p&gt;Gb119: Add note about adding XNodes to palattes and where the icon in the palatte comes from.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;XNodes&#039;&#039;&#039; are a technology built into [[LabVIEW 8.0]]+ that allows dynamic edit-time macro support.&lt;br /&gt;
&lt;br /&gt;
XNodes are [[Library|Libraries]] that feature several &amp;quot;Ability&amp;quot; [[VI]]s which consist of various events and methods of the XNode.&lt;br /&gt;
&lt;br /&gt;
==XNodes used in LabVIEW 8.2==&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Class Aggregate Handler? || ([[vi.lib]]\Utility\AggHandler\Cls_AggHandler.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Class Grow Array Handler? || ([[vi.lib]]\Utility\XGrowArr-llb\Cls_GrowArr.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Regular Expression || ([[vi.lib]]\regexp\Match Regular Expression.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Shared Variables || ([[vi.lib]]\variable\varXNode.llb\vi.lib\variable\varXNode.llb\varXNode.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Timed Loops || ([[vi.lib]]\Platform\TimedLoop\XDataNode\XDataNode.xnode)&lt;br /&gt;
|-&lt;br /&gt;
| Database Variant To Data || ([[vi.lib]]\addons\database\_DB Variant To Data\Database Variant To Data.xnode)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ability VIs ==&lt;br /&gt;
:&#039;&#039;Main Article: [[XNodes:List of XNode Abilities|List of XNode Abilities]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== XNodes in the Development Environment==&lt;br /&gt;
XNodes can be added to palattes as if they were plain [[VI]]s, however the icon&lt;br /&gt;
that is displayed in the palatte is that of the [[Initialize (XNode Ability)|Initialize]] Ability vi and not the image created by the [[Image (XNode Ability)|Image]] Ability vi.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{portal}}&lt;br /&gt;
*[[External Nodes]]&lt;br /&gt;
*[[XControls]]&lt;/div&gt;</summary>
		<author><name>Gb119</name></author>
	</entry>
</feed>