Article: Object-flow Programming - Merging Dataflow and Object-Oriented Programming
I just posted an ExpressionFlow article:
Object-flow Programming - Merging Dataflow and Object-Oriented Programming
I guess you may find it interesting. If you like it, you should
bookmark it with one of the social bookmarking tools (click the
bookmark link next to the timeline image in the article). That may help
us to get readers and comments from outside the LabVIEW community. And
don't hesitate to participate the discussion. I'd love to hear you
comments on the subject.
Tomi
Tomi Maila
After having problems with spam block software malfunction, I was able recover the following comments to the EXPRESSIONFLOW article Object-flow Programming - Merging Dataflow and Object-Oriented Programming
Written by Zen:
Some combination of data-flow and object-oriented programming, I think,
could make a great impact on sysytem development. However, I see it in
slightly different way than yours....
Written by Matt Holt:
I don't believe NI can get object-flow programming to move far enough
into mainstream that Forbes would cover it. NI has a bit of a
stranglehold on LabVIEW with it's price as compared to say… VS2005. It
seems that by promoting it as "easy to use" that NI may have shot
itself in the foot….
Written by Jim Kring:
Hi Tomi, In my opinion, LabVIEW's native object-oriented programming
capabilities (LabVOOP) do not currently provide a complete tool for
allowing us to implement our OOP system designs. Nearly all of my
system designs require distributed active objects by reference. I think
that National Instruments certainly can evolve LabVIEW to address such
requirements, but I think that it is not a real focus of NI....
If anybody else is missing their comments, I'm sorry I was unable to recover them. Please repost your comments, I appology for the inconvenience.
Tomi Maila
Similar Messages
-
Program on ALV_Grid and objects..... Urgent
can any help me to write the coding of this report program
1. Define selection screen with KNA1-KUNNR, VBRK-FKDAT
2. Select Data from Database (with "inner join")
Tables: Customer KNA1, KNVV
SalesDocument VBAK - Head, VBAP - Positions
Invoice VBRK - Head, VBRP - Positions
Document Flow VBFA -
Invoice (VBFA_VBTYP_V = M) ->
Delivery (VBFA_VBTYP_V = J) ->
SalesOrder (VBFA-VBTYP_V = C) ->
Sales Document Data
Sales Document Partner Data VBPA (Parvw = AG, WE) - Partner Number
Customer Adress Data etc. KNA1, KNVV
3. Create Dictionary Structure for Output Data
4. Create Dynpro (Screen 9000)
5. Create ALV Grid Object and Call Method "set_table_for_first_display" of alv obj in PBO Module of ScreenHello
You may have a look at my sample report
Alv
Using function module <b>LVC_FIELDCATALOG_MERGE</b> repetively you can easily build any kind of required fieldcatalog for your ALV output.
Have a look at the sample report <b>ZUS_SDN_REUSE_ALV_GRID_DISP</b>.
*& Report ZUS_SDN_REUSE_ALV_GRID_DISP
REPORT zus_sdn_reuse_alv_grid_disp.
TYPES: BEGIN OF ty_s_outtab.
TYPES: status TYPE i_status.
INCLUDE TYPE knb1.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA:
gs_variant TYPE disvariant,
gs_layout TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat,
gs_outtab TYPE ty_s_outtab,
gt_outtab TYPE ty_t_outtab.
START-OF-SELECTION.
SELECT * FROM knb1 INTO CORRESPONDING FIELDS OF TABLE gt_outtab
WHERE bukrs = '1000'.
PERFORM build_fieldcatalog.
PERFORM set_layout_and_variant.
PERFORM modify_list.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT_LVC = gs_layout
it_fieldcat_lvc = gt_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
is_variant = gs_variant
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_outtab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
END-OF-SELECTION.
*& Form BUILD_FIELDCATALOG
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
REFRESH: gt_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'KNB1'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
" Add I_STATUS field from this structure to fieldcatalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'RIHEA'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE gt_fcat WHERE ( ref_table = 'RIHEA' AND
fieldname NE 'I_STATUS' ).
READ TABLE gt_fcat INTO ls_fcat
WITH KEY fieldname = 'I_STATUS'.
IF ( syst-subrc = 0 ).
DELETE gt_fcat INDEX syst-tabix.
ls_fcat-fieldname = 'STATUS'.
INSERT ls_fcat INTO gt_fcat INDEX 1.
ENDIF.
" Renumbering of columns
LOOP AT gt_fcat INTO ls_fcat.
ls_fcat-col_pos = syst-tabix.
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG
*& Form SET_LAYOUT_AND_VARIANT
* text
* --> p1 text
* <-- p2 text
FORM set_layout_and_variant .
CLEAR: gs_layout,
gs_variant.
gs_layout-zebra = 'X'.
gs_layout-cwidth_opt = 'X'.
gs_layout-excp_fname = 'STATUS'.
gs_layout-excp_led = 'X'. " display LED instead of lights
gs_variant-report = syst-repid.
gs_variant-handle = 'GRID'. " required for saving variants
ENDFORM. " SET_LAYOUT_AND_VARIANT
*& Form MODIFY_LIST
* text
* --> p1 text
* <-- p2 text
FORM modify_list .
* define local data
DATA:
ls_outtab TYPE ty_s_outtab.
LOOP AT gt_outtab INTO ls_outtab.
" Define reasonable conditions for status
IF ( syst-tabix > 20 ).
ls_outtab-status = '3'. " = green
ELSEIF ( syst-tabix > 10 ).
ls_outtab-status = '2'. " = yellow
ELSEIF ( syst-tabix > 5 ).
ls_outtab-status = '1'. " = red
ELSE.
ls_outtab-status = '0'. " = no status
ENDIF.
MODIFY gt_outtab FROM ls_outtab.
ENDLOOP.
ENDFORM. " MODIFY_LIST
Regards
Uwe -
It's the biggest tease ever haha! I can see the photo beautifully merged but then it forces me to close the program! I have tried this a few times and it's always the same. So annoying. I have never had this problem before until I recently updates to CC from CS6. Any thoughts? Do I just simple reinstall the program?
This panorama consists of at least eight single shots which were (in my opinion) not taken
using a tripod by rotating the viewline about a fixed point. They are more or less somewhat
arbitrary shots.
Merging these requires a kind of optimization which can fail because of numerical problems,
though the intermediate result seems to be convincing. A crash log cannot help.
A remedy would be the manual arrangement of the single shots, varying the degree of
overlapping. That was available in older versions of Photoshop (for me in CS2).
Enlarging your example, we can see some hairlines, like edges of torn paper. What's that?
Best regards --Gernot Hoffmann -
BPEL and Aspect Oriented Programming ?
Is there any way to have croscutting concerns (e.g. logging, security, compensation, etc.) in BPEL processes ?
I have to write several BPEL processes with common functionality and I would like to know if this can be achieved reusing functionality, or I have to copy-and-paste common functionality in all my processes.
If I change some functionality, do I have to change all my processes ?
Any suggestion or recommendation is welcome.You could try having some seperate BPEL processes to address some of the aspects. This will be easier with some aspects than others.
If you always invoke the default version of the aspect processes then as you modify the aspects then it will be possible to modify behaviour by redploying the aspect process and promoting it to be the default. -
Ready-Made Effects and Object Oriented Timeline
As an actionscript programmer and designer all we need to
effects. But when i searched for ready-effects there is no an
add-on for this. But Adobe must have done this until now. Why there
aren't lot of ready-made effects in Flash?
And one more suggestion to Adobe developers: Every object
must shown as an object in timeline. Not as a layer part. Thus,
programming ability of Flash will arise.After having problems with spam block software malfunction, I was able recover the following comments to the EXPRESSIONFLOW article Object-flow Programming - Merging Dataflow and Object-Oriented Programming
Written by Zen:
Some combination of data-flow and object-oriented programming, I think,
could make a great impact on sysytem development. However, I see it in
slightly different way than yours....
Written by Matt Holt:
I don't believe NI can get object-flow programming to move far enough
into mainstream that Forbes would cover it. NI has a bit of a
stranglehold on LabVIEW with it's price as compared to say… VS2005. It
seems that by promoting it as "easy to use" that NI may have shot
itself in the foot….
Written by Jim Kring:
Hi Tomi, In my opinion, LabVIEW's native object-oriented programming
capabilities (LabVOOP) do not currently provide a complete tool for
allowing us to implement our OOP system designs. Nearly all of my
system designs require distributed active objects by reference. I think
that National Instruments certainly can evolve LabVIEW to address such
requirements, but I think that it is not a real focus of NI....
If anybody else is missing their comments, I'm sorry I was unable to recover them. Please repost your comments, I appology for the inconvenience.
Tomi Maila -
want program using extended_program_check and extended_program_check_show
Type the program name in SE38 and go to the menu program->check->extenced Program Check to find the EPC errors in the program
reward points if helpful
Message was edited by:
Pavan Kumar TSS -
Object-oriented programming: state and behaivor
First of all, sorry for my level english.
In Object-Oriented programming, should an object save always some state?
What about session stateless bean service? What is the sense?
These objects have only behaivour and not state.
Perhaps, the sense is that you can send a message to this object, in oposite of a static methods in utility class?
Thanks and regards.I suppose you could argue that if it doesn't have any state, then it's not really an "object" in the OOP sense, but who cares, really.
Personally, I use state and behavior as a way to help clarify the responsibilities of various classes in the system, and if I see a codebase with a lot of objects with state but no behavior or behavior but no state, then it's a a red flag that it's a messy, poorly-thought-out design (and it usually turns out to be exactly that). The whole point of OOP (IMHO) is encapsulation, and bundling state and behavior together makes things encapsulated (you can prove that state changes only in certain areas in certain circumstances). Encapsulation makes for more easily maintainable code.
It's easy to spot the blue squares in a Mondrian. It's difficult to spot the blue bits in a Pollock. The former is well-encapsulated OOP and the latter is poorly-encapsulated spaghetti code.
That said, it's not the end of the world if you have a static utility class here and there. -
Object oriented programming in LabVIEW
Please send this message to everybody who has an opinion about this.
Please try to keep it short, but if you can't control yourselves, let
it all out!
I would like to have your opinions about the nature of Labview and it's
ability to support object oriented programming.
I have a couple of questions to fire the discussion.
1- Do you think that LV was built to support OO Programming?
2- Is OO the only way we have to support large applications, or is it
feasible to support it with a good dataflow architecture including all
the flowcharts and all the data definitions?
3- Is LV going to stay "dataflow" or is it going to become OO?
4- What would be the great benefits of turning LV to OO that we don't
already have w
ith the dataflow approach?
5- My opinion is that trying to implement OO in LabVIEW, is like trying
to
Thank you all for your time.
Sent via Deja.com
http://www.deja.com/> 1- Do you think that LV was built to support OO Programming?
LV was initially designed in 1983. OOP existed at that point,
but LV wasn't designed to be OO. It was designed to allow
engineers and researchers a simple language appropriate
for controlling their research labs from a computer.
> 2- Is OO the only way we have to support large applications, or is it
> feasible to support it with a good dataflow architecture including all
> the flowcharts and all the data definitions?
OO lends itself to large projects because it provides
abstraction, encapsulation, and organizes code into
modules that can more easily be implemented independent
of one another since they can be specified in finer
detail. Also, the compilers help to enforce the
specifications providing they can be encoded in the
interface between objects.
These OO principles were already a part of big projects
long before there were OO languages. It was just that
the language didn't necessarily have features which
supported it. Similarly, they can be a part of big
projects today despite the language being used.
LV 2 style globals, which as the name suggests were
in use long ago, encapsulate data with an interface.
They disallow arbitrary access to the data and can be
used to enforce correct access. With other functions
layered on top, you get a nice interface to stored data.
Functions and structs/clusters abstract away details.
Building a subVI that does an FFT means that for 99%
of the uses, you don't need any more information except
that this block performs an abstract mathematical function,
an FFT. The implementation can be completely changed
to speed it up or make it more accurate and your code
isn't affected. Its abstract definition still holds, so
your code still works.
There are other things that OO languages bring to the
table that LV, and GOOP don't yet offer. In my opinion,
a few more OO features can be added to LV to allow for
even larger projects in the future provided they are used
well.
Earlier posts pointed out that C++ doesn't guarantee that
a project will succeed. OO features are just another tool,
and the tool can be misused leading to a failed project.
This is true to LV, C, C++, and all other engineering tools.
The key is using the tools at hand to best solve the
problems we face. Not glorifying or blaming the tools for
the state of the project.
> 3- Is LV going to stay "dataflow" or is it going to become OO?
LV is dataflow to the core. The definition of what data
is flowing may be expanded, but it will still be data
flowing down wires from one node to another that accounts
for how the program executes.
One of the limitations of the current GOOP is that all
objects are dealt with by a reference. By adding
language features, objects could be made to flow down
the wire, just like strings and arrays, meaning that
branching a wire doesn't lead to side-effects,
and there is no need to dispose objects.
> 4- What would be the great benefits of turning LV to OO that we don't
> already have with the dataflow approach?
Remember when LV didn't have typedefs? It was easy for
a cluster datatype to change once a project was underway.
That usually led to lots of edits on other panels to get
them back in synch. Without the unbundle by name, you
then went through the diagrams fixing all of the bundlers
and unbundlers to have the right number of terminals.
Changing the order of the cluster was even worse since
the diagrams may not bread, they might just access the
wrong field instead.
In many respects, an object is just another step along the
same path. An object is a typedef that can have code
associated with it for access -- maybe like Array and
Cluster Tools. Some of the typedef contents might be
publicly accessable, like now, while other elements are
hidden, only available to the implementation of the
typedef. That would force the user to use your functions
to manipulate things rather than hacking away at the
typedef contents. As an example, a LV string is really
just a cluster of size and characters. Since the diagram
can only modify the string using the string functions, you
never get the size and characters out of synch. That is
until you take it into LV generated code, a DLL or CIN
where you have access to the inner fields.
A related problem is that current typedefs are transparent
to built-in LV functions. If your typedef is just some
numbers, LV will be happy to perform arithmetic on your
typedef. Maybe this is what you want, but if this doesn't
make sense on your typedef, then your left with adding a
Boolean or a string so that the arithmetic isn't allowed.
Ideally, you would be able to state that = makes sense, >
and < don't, + and - only operates on the first numeric, and
* is something that you implement yourself. There would be
some safeguards so that the user of your typedef, which
includes you, wouldn't accidentally mangle the typedef
contents.
These may not seem like much at first, but they allow for
much more abstraction and better encapsulation. Finally,
there is a technique called inheritance that allows for
similar objects to be acted on by common code in one
location, and by specific code in another location depending
on which type of object is actually there at runtime.
This of usually done today by switching out on some inner
tag and dealing with each type in its own diagram. This
works fine until projects get large and teams get large.
Inheritance is a different way of implementing the exact
same thing that usually works much better for bigger teams
and bigger projects.
> 5- My opinion is that trying to implement OO in LabVIEW, is like trying
> to
Is this a fill-in-the blank question? It is difficult today
because the LV language doesn't yet support OO very well.
Early C++ was implemented on top of C using just a bunch
of macros and the preprocessor to mangle the C++ back into
C so that it could be compiled and run. Debugging was
done on practically unreadable text that vaguely resembled
your original code. By comparison, GOOP actually looks
pretty good. It is written entirely on top of the current
LV language and makes clever use of things like datalog
refnums to make strict types.
Over time I think GOOP will mature, and like typedefs,
some users will come to rely on it in a big way.
Other users will hopefully not even notice that anything
changed. If their project grows in complexity and they
need another tool to manage things, it will be just
another feature that helps them to get useful things done.
Greg McKaskle -
Team,
I am trying to Install Exchange on my Lab, getting below error
message.
The Schema Role is installed on Root Domain and trying to install
exchange on Child domain.
1 Root Domain - 1 Child domain. both are located on single site.
“Setup encountered a problem while validating
the state of Active Directory: Exchange organization-level objects have not been created, and setup cannot create them because the local computer is not in the same domain and site as the schema master. Run setup with the /prepareAD parameter and wait for
replication to complete.”
Followed below articles:
http://support.risualblogs.com/blog/2012/02/21/exchange-2010-sp2-upgrade-issue-exchange-organization-level-objects-have-not-been-created-and-setup-cannot-create-them-because-the-local-computer-is-not-in-the-same-domain-and-site-as-the-sche/
http://www.petenetlive.com/KB/Article/0000793.htm
transferred the schema roles to different server on root domain, still no luck.
can someone please help me.
regards
Srinivasa k
Srinivasa KHi Srinivasa,
I guess, you didn't completed the initial setup schemaprep and adprep before starting the installation. You can do it as follows:
1. Open command Prompt as administrator and browse to the root of installation cd and run Setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms
After finishing this,
2. Setup.exe /PrepareAD /OrganizationName:"<organization name>" /IAcceptExchangeServerLicenseTerms
3. To prepare all domains within the forest run Setup.exe /PrepareAllDomains /IAcceptExchangeServerLicenseTerms. If you want to prepare a specific domain run Setup.exe /PrepareDomain:<FQDN of the domain you want to prepare> /IAcceptExchangeServerLicenseTerms
4. Once you complete all of the 3 steps, install the pre-requisities for Exchange 2013
5. Finally, run the setup program
Hope this will help you
Regards from Visit ExchangeOnline |
Visit WindowsAdmin -
Trying to understand the basic concept of object oriented programming.
I am trying to understand the basic concept of object oriented programming.
Object - a region of storage that define is defined by both state/behavior.
( An object is the actual thing that behavior affects.)
State - Represented by a set of variables and the values they contain.
(Is the location or movement or action that is the goal that the behavior is trying to accomplish.)
Variables- (What does this mean?)
Value - (What does this mean?)
Behavior - Represented by a set of methods and the logic they implement.
( A set of methods that is built up to tell's the how object to change it's state. )
Methods - A procedure that is executed when an object receives a message.
( A very basic comand.For example the method tells the object to move up, another method tells the method to go left. Thus making the object move up/left that combination is the behavior.)
Class - A template from which the objects are created.
( I am very confused on what classes are.)
- The definitions of the words I obtained from the "Osborne Teach Yourself Java". The () statements are how I interperate the Mechanisms (I do not know if Thats what you call them.) interact with each other. I understand my interpretation may be horribly wrong. I will incredibly appreciate all the support I may get from you.
Thank youObject oriented programming is a replacement for the older idea of procedural programming (you can research procedural programming in google). As I understand it, in procedural programming, you have a step by step set of function calls to accomplish some task. Each function receives a data structure, manipulates it, and passes it to the next function. The problem with this is that each function preforms some action for the overall task and can't easily be reused by some other task. Its also harder to read the flow of what is happening with raw data structures flying all over the place.
In object oriented programming, an object calls a function of another object and receives back, not a data structure, but another object. Objects contain a data structure that can only be accessed by its functions. An object is not so much a sub component of a bigger task, as it is a service that any other task can use for any purpose. Also, when you pass an object to the caller, the caller can ask questions about the data structure via its functions. The developer doesnt have to know what the previous function did to the data by reading up on any documentation, or having to reverse engineer the code.
I suggest the best way of learning this is to code something like a library object.
A library object contains a collection of book objects
A book object contains a collection of chapter objects
A chapter object contains a collection of paragraph objects
A paragraph object contains a collection of sentence objects
A sentence object contains a collection of word objects.
Add functions to each object to provide a service
Example: A library object should have a:
public void addBook(Book book)
public Book getBook(String title)
public boolean isBookInLibrary(String title)
The key is to add functions to provide a service to anyone who uses your object(s)
For example, what functions (service) should a paragraph object provide?
It shouldn't provide a function that tells how many words there are in a sentence. That function belongs to a sentence object.
Lets say you want to add a new chapter to a book. The task is easy to read
if you write your objects well:
Sentence sentence1=new Sentence("It was a dark and stormy night");
Sentence sentence2=new Sentence("Suddenly, a shot ran out");
Paragraph paragraph=new Paragraph();
paragraph.addSentence(sentence1);
paragraph.addSentence(sentence2);
Paragraphs paragraphs=new Paragraphs();
paragraphs.addParagraph(paragraph);
Library library= new Library();
library.getBook("My Novel").addChapter("Chapter 1",paragraphs).
Now, lets say you want to have a word count for the entire book.
The book should ask each chapter how many words it contains.
Each chapter should ask its paragraphs, each paragraph should ask
its sentences. The total of words should ripple up and be tallied at each
stage until it reaches the book. The book can then report the total.
Only the sentence object actually counts words. The other objects just tallies the counts.
Now, where would you assign a librarian? What object(s) and functions would you provide?
If written well, the project is easily extensible. -
Video - LabVIEW Object-Oriented Programming Introductory Walktrough
LabVIEW Object-Oriented
Programming, or LVOOP for short, has been around for about a year now.
Have you had time to take a look at it? If not, it's about the time. I
made you a short video on the very basics of LVOOP development process.
It doesn't go into details of inheritance and all that but it gives you
and idea on how to get started.
LabVIEW Object-Oriented Programming Introductory Walktrough
Tomi MailaThe video was offline for a while as I accidentally modified YouTube video properties inproperly. The video is online again.
p.s. If you like the video, don't forget to press the digg button below the article to submit the article to digg.com
Tomi Maila -
Difference b/w DATA TYPE and DATA OBJECT & differences b/w TYPE and LIKE
hai
can any one say the differences between Data type and Data Object.
And also differences between TYPE and LIKE
thanks
Ganihi,
_Data Types and Data Objects_
Programs work with local program data that is, with byte sequences in the working memory. Byte sequences that belong together are called fields and are characterized by a length, an identity (name), and as a further attribute by a data type. All programming languages have a concept that describes how the contents of a field are interpreted according to the data type.
In the ABAP type concept, fields are called data objects. Each data object is thus an instance of an abstract data type. There are separate name spaces for data objects and data types. This means that a name can be the name of a data object as well as the name of a data type simultaneously.
Data Types
As well as occurring as attributes of a data object, data types can also be defined independently. You can then use them later on in conjunction with a data object. The definition of a user-defined data type is based on a set of predefined elementary data types. You can define data types either locally in the declaration part of a program using the TYPESstatement) or globally in the ABAP Dictionary. You can use your own data types to declare data objects or to check the types of parameters in generic operations.
All programming languages distinguish between various types of data with various uses, such as .. type data for storing or displaying values and numerical data for calculations. The attributes in question are described using data types. You can define, for example, how data is stored in the repository, and how the ABAP statements work with the data.
Data types can be divided into elementary, reference, and complex types.
a. Elementary Types
These are data types of fixed or variable length that are not made up of other types.
The difference between variable length data types and fixed length data types is that the length and the memory space required by data objects of variable length data types can change dynamically during runtime, and that these data types cannot be defined irreversibly while the data object is being declared.
Predefined and User-Defined Elementary Data Types
You can also define your own elementary data types in ABAP using the TYPES statement. You base these on the predefined data types. This determines all of the technical attributes of the new data type. For example, you could define a data type P_2 with two decimal places, based on the predefined data type P. You could then use this new type in your data declarations.
b. Reference Types
Reference types are deep data types that describe reference variables, that is, data objects that contain references. A reference variable can be defined as a component of a complex data object such as a structure or internal table as well as a single field.
c. Complex Data Types
Complex data types are made up of other data types. A distinction is made here between structured types and table types.
Data Objects
Data objects are the physical units with which ABAP statements work at runtime. The contents of a data object occupy memory space in the program. ABAP statements access these contents by addressing the name of the data object and interpret them according to the data type.. For example, statements can write the contents of data objects in lists or in the database, they can pass them to and receive them from routines, they can change them by assigning new values, and they can compare them in logical expressions.
Each ABAP data object has a set of technical attributes, which are fully defined at all times when an ABAP program is running (field length, number of decimal places, and data type). You declare data objects either statically in the declaration part of an ABAP program (the most important statement for this is DATA), or dynamically at runtime (for example, when you call procedures). As well as fields in the memory area of the program, the program also treats literals like data objects.
A data object is a part of the repository whose content can be addressed and interpreted by the program. All data objects must be declared in the ABAP program and are not persistent, meaning that they only exist while the program is being executed. Before you can process persistent data (such as data from a database table or from a sequential file), you must read it into data objects first. Conversely, if you want to retain the contents of a data object beyond the end of the program, you must save it in a persistent form.
Declaring Data Objects
Apart from the interface parameters of procedures, you declare all of the data objects in an ABAP program or procedure in its declaration part. These declarative statements establish the data type of the object, along with any missing technical attributes. This takes place before the program is actually executed. The technical attributes can then be queried while the program is running.
The interface parameters of procedures are generated as local data objects, but only when the procedure is actually called. You can define the technical attributes of the interface parameters in the procedure itself. If you do not, they adopt the attributes of the parameters from which they receive their values.
ABAP contains the following kinds of data objects:
a. Literals
Literals are not created by declarative statements. Instead, they exist in the program source code. Like all data objects, they have fixed technical attributes (field length, number of decimal places, data type), but no name. They are therefore referred to as unnamed data objects.
b. Named Data Objects
Data objects that have a name that you can use to address the ABAP program are known as named objects. These can be objects of various types, including text symbols, variables and constants.
Text symbols are pointers to texts in the text pool of the ABAP program. When the program starts, the corresponding data objects are generated from the texts stored in the text pool. They can be addressed using the name of the text symbol.
Variables are data objects whose contents can be changed using ABAP statements. You declare variables using the DATA, CLASS-DATA, STATICS, PARAMETERS, SELECT-OPTIONS, and RANGESstatements.
Constants are data objects whose contents cannot be changed. You declare constants using the CONSTANTSstatement.
c. Anonymous Data Objects
Data objects that cannot be addressed using a name are known as anonymous data objects. They are created using the CREATE DATAstatement and can be addressed using reference variables.
d. System-Defined Data Objects
System-defined data objects do not have to be declared explicitly - they are always available at runtime.
e. Interface Work Areas
Interface work areas are special variables that serve as interfaces between programs, screens, and logical databases. You declare interface work areas using the TABLES and NODESstatements.
What is the difference between Type and Like?
Answer1:
TYPE, you assign datatype directly to the data object while declaring.
LIKE,you assign the datatype of another object to the declaring data object. The datatype is referenced indirectly.
Answer2:
Type is a keyword used to refer to a data type whereas Like is a keyword used to copy the existing properties of already existing data object.
Answer3:
type refers the existing data type
like refers the existing data object
reward if useful
thanks and regards
suma sailaja pvn -
Trying to understand object oriented programming
Hi all,
I'm new to programming and I'm trying to learn C and Objective-C to eventually write an iPhone/iPad app.
I want to make sure I'm understanding some fundamental Object Oriented principles and so I'm starting with a very basic program.
I've produced a class called CartesianPoint which has an x and y variable plus methods to set and return these variables and also a method to calculate the magnitude from the origin.
What I would like to do now is to extend the program to have a CartesianVector class.
I'm a little unsure as to whether a Vector is a subclass of a Point or whether a Point is a subclass of a Vector... or neither?
Secondly, I'm a little unsure of how to implement the vector class to use two point objects. How should the header and implementation files be set up to receive point objects from the main.m program?
I'd like to also try and extend the program to include other ways of defining a vector (i.e. origin, unity vector and magnitude).... and then use the vectors to build 2D shapes.
Many thanks,
Glyn
Message was edited by: GlynC
Message was edited by: GlynCHi Glyn -
I agree with William and would vote for "neither". I see a subclass as a specialization of its superclass, not, for example, something contained by its superclass. A container relationship might apply to a subview and its superview, yet the class of the superview could be a specialization of the subview's class so the subview's class might be the parent of the superview's class. The classic example of cat as a subclass of animal (cat:animal) can be misleading if we see the relationship as member:group. Cat is a subclass of animal because it's a specialization.
Also ask, "What's accomplished by making a subclass"? Does the subclass want to use all or most of the parent's instance variables and methods? Could the job be done any other way? Are any of those ways simpler or do they lead to more reusable code?
One of the best examples (from the Cocoa docs?) is about a programmer who needs a specialized array. A newbie might immediately attempt a subclass of NSArray (a rather tricky subclassing job as it happens). In most cases however, the correct solution would be a class which includes an NSArray* type instance variable.
Hope some of the above is helpful!
\- Ray -
I'm trying to create a java plugin for AWM that is only valid for items in Object view (eg Variables, Programs etc... all the primitive Express objects).
According to the interface defined for AWMPlugin methods:
void handle(Frame parent, Connection conn, String type, Object obj,
AW aw, Map param);The 'type' and 'obj' represent either a String or an Object that is associated with the selected tree item, or null.
My problem is that type and obj are always null when operating in Object view, but pass a non-null value in Model view .
Has anyone encountered this? Does it mean the AWM plugin interface is only valid for the Model view?
Does anyone know of a way to get a handle to something like a Variable or Program in Object view using the AWMPlugin interface?I am certainly not an expert on this but this would be my thoughts on this topic -
AWM plugins are supposed to only work on model view since this view over the AW uses the public APIs called Standard Form. The Object view uses a non-public API which addresses the internal AW catalog (i.e. the NAME dimension). Therefore, it would not surprise me that the API you are calling returns NULL when you try to access non-Standard Form objects.
I will try and contact one of the OLAP PM's this afternoon and get his opinion and let you know.
Keith Laker
Oracle EMEA Consulting
BI Blog: http://oraclebi.blogspot.com/
DM Blog: http://oracledmt.blogspot.com/
BI on Oracle: http://www.oracle.com/bi/
BI on OTN: http://www.oracle.com/technology/products/bi/
BI Samples: http://www.oracle.com/technology/products/bi/samples/ -
After converting a windows-based Powerpoint 2007 presentation to an Acrobat Pro 9.0 PDF, the file path location of all photos and objects are shown in a dialogue box when the cursor is moved over the image as seen in this screenshot below. How can I stop this from happening and remove this feature on my pdf documents?
I saw that referenced on a forum, but it does not seem to address the issue I am having.
As per Adobe Acrobat X Standard * What’s new, the equivalent to the "Tools > Protection > Remove Hidden Information" utility found in Acrobat X Standard is the same as the "Document > Examine Document" feature in Acrobat Pro 9.0. Those tools seem to cover meta data, book marks, hidden text, and deleted or cropped content, but not the file path listings that appear on images and objects converted from Powerpoint presentations and other MS Office programs.
I have reviewed the settings used while creating a pdf, and have also tried the “Advanced > Preflight tool”, but could not find anything to apply to the issue at hand.
Thus, this issue has not been resolved, but seems like it should be an easy fix that anyone who publishes pdf documents would want to use to publish clean, professional documents without anyone seeing the file path location of every object and image shown in the document on their hard drive.
Maybe you are looking for
-
How do I BACK UP my emails ?
What I mean by back up in this instance is, I am wiping my OS and starting clean... and this time is the first time I have some emails that I have in my mailbox(s) sent, personal, business, etc... that I want/need. So how do I find the file(s) that a
-
Built A MSI Mega PC and installed the optional TV Tuner Card (MS 8606). The drivers have loaded on ok and the card is working, however the is software which is suppossed to be on the installation disc which I cannot load. I cannot find MSI PVS 2.0 no
-
Locking Files or Folders -- Password protected access?
I know how to simply lock a folder or file so it can't be altered or deleted, by selecting 'Locked' in the file or folder's information box. But is it possible to lock a folder or file so it requires a password to be accessed, without having to use a
-
hi to all, In CS03 t-code, I m providing Material no., Plant, Bom Usage and Alternative Bom, then pressing enter , another screen is displayed, in which all the bom component are dislayed. Now my problem is that all this component are coming from STP
-
Is there any technical details about T400 builtin camera available for public?
Hi Can someone please let me know what is the model or brand of T400 integrated webcamera. I just want to search and see whether it is supported by linuc or not. Thanks.