Jump to content

GOOP Development Suite v4.5 is released


Recommended Posts

FYI we are working on documenation that soon will be ready.

Here are just some images of what's new, (an image says more than 1000 words, and I don't have time to write to much right now)

------------------------------------------------------------------------------------------

To activate the ACTOR framework menus in GDS, you have to add the Framework library to the project.

One easy way is to right click on My Computer

post-941-0-45611500-1351628744.png

post-941-0-31365200-1351628748.png

When creating a class select to inherit from an Actor, and select a class Template

post-941-0-12362800-1351628752.png

post-941-0-58824900-1351628755.png

When creating a class method in an actor class, the “Create AF class for this actor method” will be pre-ticked.

post-941-0-41583400-1351628759_thumb.png

post-941-0-95388700-1351628763.png

If you change the connector pane of a method, you need to update the message class.

post-941-0-03304400-1351628768.png To post-941-0-21463400-1351628773.png

Then do:

post-941-0-70494000-1351628777.png

..or..

post-941-0-43003800-1351628781.png

..or..

post-941-0-23428300-1351628785.png

We’ve added some extra Actor analysis in the UML modeller.

Other functions that is added are:

For Icon editor:

TEXT OCR

Icons/glyphs support

Smaller icons

post-941-0-72188800-1351628788.png

post-941-0-98029300-1351628795_thumb.png

Cheers,

Mike

  • Like 1
Link to comment
  • 2 weeks later...
  • 3 months later...

Looks great! I am looking forward to testing this out with some Actor Framework projects.

 

 

Hi Michael,

 

GOOP 4.5 is great, but due to my ignorance it is hard to take advantage of it.

 

I am trying to use the UML to generate all the classes needed to create a strategy pattern. From the picture attached (LAVA does not allow me to attach the UML  file) you can see what I am trying to do. However, when I generate the code, the interface does not seem to be created. There is no way to apply the Fly method in the FlyWithWings class to the MallardDuck class. Probably I am doing something wrong....could you give me a help with that?

Thanks

 

Helciopost-15546-0-27228300-1361585254_thumb.p

Link to comment

You’re right the interface isn't created, and that's because LabVIEW don't support Interface natively.

Maybe a normal inheritance association will work for you.

If not, there are ways of creating interfaces.

 

I have a Design pattern, add-on you can add to a class to let it Implement an Interface class.

But in your case just normal Inheritance might work just fine.

 

Let me know how it goes.

Cheers,

Mike

Link to comment
You’re right the interface isn't created, and that's because LabVIEW don't support Interface natively.

Maybe a normal inheritance association will work for you.

If not, there are ways of creating interfaces.

 

I have a Design pattern, add-on you can add to a class to let it Implement an Interface class.

But in your case just normal Inheritance might work just fine.

 

Let me know how it goes.

Cheers,

Mike

Hi Mikael

 

I believe that using the GOOP 4.5 Interface template I was able to build the strategy pattern. Please, give a look and let me know. 

The goop 4.5 provides a easy way to build an interface. I tried other methods before like the Interface Framework but I found it far too cumbersome.

I am more confident to work with OOP in Labview because I know that at least I have the interface support from Endevo GOOP (Why does't NI provide interface support????). I can live without constructors, but without interface I don't think I can.

 

thanks for the tips!

 

Helcio

Simuduck.zip

Edited by burd
Link to comment

I’m sure we’ll get interface sooner or later to LabVIEW, in the mean time we have to implement it ourselves in different ways.

Here a thread and one example I use: http://lavag.org/topic/10621-interface/

 

I’ve not documented the Interface class template and how to use it, that comes with GDS.

But here is a quick instruction, this design only makes sense to Referenced Objects.

 

post-941-0-43208000-1361701841.png

 

Add Interface Methods

post-941-0-71377000-1361701867_thumb.png

 

Create a Normal class that should implement the interface

post-941-0-26061800-1361701846.png

 

Add a design pattern: Interface

post-941-0-07553600-1361701856_thumb.png

 

This is what gets created

post-941-0-00443000-1361701862.png

post-941-0-87717300-1361701871.png

 

Interface.zip

 

Cheers,

Mike

  • Like 1
Link to comment
  • 1 month later...
  • 4 months later...

Hello Mikael,
I am sending the timer goop.vip file attached. In this example there is a class called timer created with the GDS,
I do not know why the attribute "Number of Timers in Memory" is not being updated the way I think it should work. I would expect that when the class is created, this attribute is updated and somehow kept in memory, so that another object of the same class type can access and modify it.

 

post-15546-0-03239800-1377641658_thumb.p

 

In the example sent, why the attribute  Number of timers in memory (in the Example 1.vi and Example 2.vi ) are always resulting in 1? I would expect this value to be the total number of timer objects created, and in this case it is certainly more than 1.

 

thanks

 

Helcio

Timer GOOP.vip

Link to comment
Hello Mikael,

I am sending the timer goop.vip file attached. In this example there is a class called timer created with the GDS,

I do not know why the attribute "Number of Timers in Memory" is not being updated the way I think it should work. I would expect that when the class is created, this attribute is updated and somehow kept in memory, so that another object of the same class type can access and modify it.

 

 

In the example sent, why the attribute  Number of timers in memory (in the Example 1.vi and Example 2.vi ) are always resulting in 1? I would expect this value to be the total number of timer objects created, and in this case it is certainly more than 1.

 

thanks

 

Helcio

Remember that the Object Attribute is unique to the wire coming out of Create.

If you want to know the number of Timers created totally of one class, you have to either use Class Attributes (Add that Design Pattern to the class).

Or you have to name the object and share the same object.

 

Do you know how Class Attribute works, or should I create an example for you?

 

BTW there is a bug, if you add the Debugger/Persistent Design pattern to the class (but you are not in this case), for LV 2013.

This bug is being solved and GDS 4.7 will soon be released.

Remember that the Object Attribute is unique to the wire coming out of Create.

If you want to know the number of Timers created totally of one class, you have to either use Class Attributes (Add that Design Pattern to the class).

Or you have to name the object and share the same object.

 

Do you know how Class Attribute works, or should I create an example for you?

 

BTW there is a bug, if you add the Debugger/Persistent Design pattern to the class (but you are not in this case), for LV 2013.

This bug is being solved and GDS 4.7 will soon be released.

Oops, I saw another thing; you are mixing by value and by reference in this class.

You probably would like to go with By Reference in a class like this.

Be sure you don’t modify the Class Private Data with the attributes you have done, move them into the file: ObjectAttributes.ctl, and use the IPE-Structure to modify them.

Link to comment

Hello Mikael,

 

I redone the timer based on the advices you gave me: Everything is now by ref, and the class atributes design pattern was apllied.

Now the attribute is updated when the opject is created like this:

 

post-15546-0-69618600-1377703112_thumb.p

 

Now it works,and  the class attributes design pattern woks like magic. Now I have similar functionality to static variables in java (I think). If you can check and see if everything is really fine would be nice.

 

Follow attached the package with the vis.

Timer GOOP 2.vip

Thank you for the help!

 

Helcio

Edited by burd
Link to comment

Hi Helcio

You are getting closer and closer ;-)

Everything looks good, but when you like to update the Number Of Timers that you store in the class attribute.

Make sure you do that inside the same IPE structure.
So do it something like this.

post-941-0-04813600-1377836517.png

 

And also, you don't need (and shouldn't), wire the Class Ref input to the Create method.

This input is only used by the framework when you inherit a base class.

Try to create an extended Timer and inherit it from your Timer class

Edited by MikaelH
Link to comment
Hi Helcio

You are getting closer and closer ;-)

Everything looks good, but when you like to update the Number Of Timers that you store in the class attribute.

Make sure you do that inside the same IPE structure.

So do it something like this.

attachicon.gifIPE.png

 

And also, you don't need (and shouldn't), wire the Class Ref input to the Create method.

This input is only used by the framework when you inherit a base class.

Try to create an extended Timer and inherit it from your Timer class

Hello Mikael,

 

I have modified the example as you suggested:

 

post-15546-0-98150700-1377889058_thumb.p

 

post-15546-0-66541300-1377889212_thumb.p

 

and also created 2 extended classes to observe how the Create Class Method behaves for an extended object:

 

And in example 3 are the extended classes at work:

 

post-15546-0-13595500-1377888675_thumb.p

 

follow attached the files:

 

hb_lib_goop_timer-1.0.0.4.vip

 

Please, let me know if those procedures are fine,

 

thanks again for your help!

 

Helcio

post-15546-0-64114600-1377888628_thumb.p

Link to comment
  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.