Aristos Queue Posted February 13, 2007 Report Share Posted February 13, 2007 RFC == Request For Comments. I got a number of requests at NI Week for some standard iconography for LabVIEW classes. So, I've asked the iconographers internal to NI to produce some glyphs that could be used to annotate icons for classes that have particular functionality. Those glyphs will probably be available later this year. But one in particular is difficult to get right. An "abstract" class is one that you never intend to actually use for real data. It is an ancestor class that is defining a bunch of methods, but all the real work is done on child classes. So, what is a good glyph for "abstract"? I suggested a Campbell's soup can and Andy Warhol's signature, but that's a bit hard to fit in 16x16 (remember that this is a glyph to be applied to other icons, so we don't have 32x32 to play with). Iconographer Laura Hayden hit upon an interesting idea, and I'd like to get some feedback on it. Drawing on the idea that the abstract class is the ancestor of the real class, and is the prototype for the descendant, she came up with this glyph: The double-helix of DNA. I kinda like it. I had resigned myself to "abstract" getting an arbitrary symbol, the way that "create" has the yellow star glyph -- there's no natural association between a yellow star and create, but by repeated usage, the association has been built up in our collective minds. This almost has the right feel -- the genotype that will be shaped by the environment to create the phenotype of the descendant classes. Maybe that's carrying the metaphor too far, but it works for me. I'm curious how others feel. Quote Link to comment
PJM_labview Posted February 14, 2007 Report Share Posted February 14, 2007 Frankly this glyph has no meaning whatsoever for me. When I think of an abstract class, I am thinking more like a pass through "object". So what about a glyph that carry this concept? What about something like this ?PJM Quote Link to comment
Jim Kring Posted February 14, 2007 Report Share Posted February 14, 2007 I don't like the DNA helix -- it signifies heredity, but not abstraction. Abstraction implies the following: indirect, hallow, empty, shell, uncertainty, dynamic, virtual. I've seen conventions where abstract class icons have grey backgrounds and concrete classes have white backgrounds. Grey signifies indirection (abstraction) -- at edit time, you don't know which implementation is actually going to be called. A cloud is another symbol of indirection (a gray cloud, even more so). Quote Link to comment
Tomi Maila Posted February 14, 2007 Report Share Posted February 14, 2007 I too don't like the DNA thing as it's not abstract at all. Especially not DNA if the name you are going to use is abstract. LabVIEW is uses a lot by life scientists and I don't think they link DNA to concept of abstract class. If you want a symbol for the inheritance, use inheritance tree. I also though of a ghost, but that's kind of stupid too. I think the best I can come up with is some geometrical object. Alternatively greek small letter alpha which symbols both beginning and abstract concept of mathematics. (I don't mean our firend alfa here at LAVA) Few geometrical objects I came up with. I think wireframe cube or some sort of hollow cube is the best as LabVIEW classes are symbolised by filled cube. Wireframe cube Klein Bottle Möbius strip Clebsch Diagonal Cubic Quote Link to comment
Jim Kring Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Tomi Maila @ Feb 12 2007, 11:28 PM) Few geometrical objects I came up with. I think wireframe cube or some sort of hollow cube is the best as LabVIEW classes are symbolised by filled cube. I like this idea. Here is my concept (no laughing, please). http://lavag.org/old_files/monthly_02_2007/post-17-1171352804.png' target="_blank"> Quote Link to comment
PJM_labview Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Jim Kring @ Feb 12 2007, 11:48 PM) I like this idea. Here is my concept (no laughing, please). http://lavag.org/old_files/monthly_02_2007/post-17-1171352804.png' target="_blank"> Ya, I like this concept too. I think may be the faces of the cube should be semi-transparent so you could see the other faces through and realized that it is empty has opposed to: "it is a white cube with blue edges". 1 Quote Link to comment
Jim Kring Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(PJM_labview @ Feb 13 2007, 12:08 AM) Ya, I like this concept too. I think may be the faces of the cube should be semi-transparent so you could see the other faces through and realized that it is empty has opposed to: "it is a white cube with blue edges". Maybe something like this? (still, please, no laughing) http://lavag.org/old_files/monthly_02_2007/post-17-1171355171.png' target="_blank"> Quote Link to comment
LAVA 1.0 Content Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Jim Kring @ Feb 13 2007, 09:26 AM) Maybe something like this? (still, please, no laughing) http://lavag.org/old_files/monthly_02_2007/post-17-1171355171.png' target="_blank"> I like this Idea... Quote Link to comment
Tomi Maila Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Jim Kring @ Feb 13 2007, 10:26 AM) Maybe something like this? (still, please, no laughing) Jim, you should have become an iconographer... Perhaps you can still change your career 1 Quote Link to comment
robijn Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Jim Kring @ Feb 13 2007, 09:26 AM) Maybe something like this? (still, please, no laughing) http://lavag.org/old_files/monthly_02_2007/post-17-1171355171.png' target="_blank"> Looks excelent ! I had been thinking earlier about partial things, as an abstract interface is always a partial interface, but I never found a good icon... This cube is very transparent Joris Quote Link to comment
MikaelH Posted February 14, 2007 Report Share Posted February 14, 2007 I'm working on implementing this in our(Endevos) GOOP Tool, it will probably look something like this. It's currently under beta testing and will soon be out there Cheers, Mikael Quote Link to comment
LAVA 1.0 Content Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(MikaelH @ Feb 13 2007, 11:36 AM) http://lavag.org/old_files/monthly_02_2007/post-941-1171362751.png' target="_blank"> I like this project tree! Quote Link to comment
PJM_labview Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Jim Kring @ Feb 13 2007, 12:26 AM) Maybe something like this? (still, please, no laughing) http://lavag.org/old_files/monthly_02_2007/post-17-1171355171.png' target="_blank"> Yop, this concept is good. I like it. Quote Link to comment
Tomi Maila Posted February 14, 2007 Report Share Posted February 14, 2007 Hi, I think we have consensus for the glyph of abstract class that is a wireframe cube. I'd like to challenge you with another glyph icon. What would be a proper symbol for mixin classes that hopefully will be added to LabVIEW in a future release... ? From wikipedia: In object-oriented programming languages, a mixin is a class that provides a certain functionality to be inherited by a subclass, but is not meant to stand alone. Inheriting from a mixin is not a form of specialisation but is rather a means to collect functionality. A subclass may even choose to inherit most or all of its functionality by inheriting from one or more mixins through multiple inheritance. So mixins are a generalization of Java like interfaces in that mixin class can already implement some of the methods. In languages with mixin classes a normal class can inherit from another normal or abstract class and in addition gather methods and private data members from one or more mixin classes. To avoid method name collisions, the directly inherited methods mask the mixin inherited methods. In addition when inheriting from multiple mixin clases, the mixin class that has been inherited first masks the methods in mixin class that is inhereted second and so on. Behind the scenes mixin classes are normally implemented so that mixin classes are really private data members of the class and method calls are delegated to the private data members by the runtime environment. A pseudocode example MyChildClass derives MyAbstractParentClass with MyFirstMixinClass with MySecondMixinClass{ MyMethod(x) { return MixinMethodOfFirstMixinClass(x)+MixinMethodOfSecondMixinClass(x) }} Tomi Quote Link to comment
Aristos Queue Posted February 14, 2007 Author Report Share Posted February 14, 2007 QUOTE(Tomi Maila @ Feb 13 2007, 10:16 AM) What would be a proper symbol for http://en.wikipedia.org/wiki/Mixin' target="_blank">mixin classes that hopefully will be added to LabVIEW in a future release... ? That one sounds easy ... a cube of two or more colors that is half empty (you add the rest when you inherit). Some people might think that as more of the "layered shot" class, and mixin should be a single color with chocolate chips in it. ;-) Quote Link to comment
LAVA 1.0 Content Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(Tomi Maila @ Feb 13 2007, 11:16 AM) What would be a proper symbol for mixin classes that hopefully will be added to LabVIEW in a future release... ? Maybe something based on art from the NI Icon Art Glossary. I like this one: External Mixer Quote Link to comment
Tomi Maila Posted February 14, 2007 Report Share Posted February 14, 2007 The reason I asked about mixin class icons is that if mixin classes will be implemented somtime in the future (Aristos?) then there may really not be difference in the way one creates an abstract class and the way one creates a mixin class. Both are abstract and may have some functionality. The difference becomes in the way developer uses these classes. If the developer directly inherits from the class then it could be called abstract class. On the other hand if developer mixin inherits from the class then the class would be called mixin class. So the usage of the class determines if it is a mixin class or an abstract class. If this will be so in LabVIEW future version, perhaps the icon or glyph of the abstract classes should be such that it also fits to mixin classes. Right? On the other hand if the concepts will be distinct or if mixin classes will never be implemented, then of course I don't give a damn. Tomi Quote Link to comment
robijn Posted February 14, 2007 Report Share Posted February 14, 2007 I don't think mixin is always very abstract... Quote Link to comment
Jim Kring Posted February 14, 2007 Report Share Posted February 14, 2007 QUOTE(robijn @ Feb 13 2007, 02:02 PM) I don't think mixin is always very abstract... http://lavag.org/old_files/monthly_02_2007/post-1555-1171403968.png' target="_blank"> Hehe Quote Link to comment
Tomi Maila Posted February 15, 2007 Report Share Posted February 15, 2007 QUOTE(robijn @ Feb 14 2007, 12:02 AM) http://lavag.org/old_files/monthly_02_2007/post-1555-1171403968.png' target="_blank"> Looks delicious! What is it that you are mixin... ? Quote Link to comment
MikaelH Posted February 21, 2007 Report Share Posted February 21, 2007 I manage to get the project add-on tool do this: Cheers, Mikael Quote Link to comment
Tomi Maila Posted February 21, 2007 Report Share Posted February 21, 2007 QUOTE(MikaelH @ Feb 20 2007, 12:21 PM) I manage to get the project add-on tool do this: Good work Mikael. Tomi Quote Link to comment
Ton Plomp Posted February 21, 2007 Report Share Posted February 21, 2007 QUOTE(MikaelH @ Feb 20 2007, 11:21 AM) I manage to get the project add-on tool do this:Cheers, Mikael Mikael, How did you get the extra options? Is that something for classes? Or part of the cooperation of Endevo en NI? Ton Quote Link to comment
MikaelH Posted February 22, 2007 Report Share Posted February 22, 2007 QUOTE(tcplomp @ Feb 21 2007, 12:37 AM) How did you get the extra options? Is that something for classes? Or part of the cooperation of Endevo and NI? Hi Ton It's a GOOP tool-kit I'm developing for Endevo. I'm using NIs addon possibilities for the project environment. I guess we're the first guys out trying this, and it's looking very promising. We have a beta version out for testing right now, and a release will soon be available at: http://www.endevo.se/' target="_blank">www.endevo.se Cheers, Mikael Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.