Instance Variable in Peoplecode - Application packages
It might be confusing for many of them, how is instance variables different from the Private and Public variables.
Myth :- specific object (instance of a class) would only have access to its own instance variables.
Instance variable is very different to Private or Public. Infact it is not right comparison of Instance with Private and Public.
Instance variables equal to Static variables in the other Object oriented programing language (like C++ and Java).
Instance - Defines the scope of the variable where as private and public key words define access levels/Visiblity of the variables. If variable is not defined as Instance then SCOPE of the variable is Local by defult (Local to the created object of the class).
Instance - scope of the variable is across the objects of the same class and scope of the Instance variable is at the class level.
The variables are created when the first object of the class is creted and will be present till last object of the same class is present in the memory.
If the Instance variable is declared as Private it is accessed the way it is accessed i,e only with in the class methods. if variable is declared as Public it is accessed the way you access other public variables. (i,e both within the class and outside of the class).
Simple comparison that can be done..(just for understanding purpose).
Component variables has scope within the component similarly instance variables has scope at the class level across the objects of the same class.
Big question arise when do we need these kind of variables.
1) if you want to count how many objects of the class was created you increment this variable in the constructor of the class.
2) If you have constant value that needs to shared across the objects of the class then you can use the instance variables.
3) Shared variable across the objects like component variable (across the different events of the component).
7 comments:
-
one of my friend read this and started correlating component variable to an Instance variable.
and object is identified by its class, again if multiple instances of the same class are present as different objects each instance variable is different than the other one.
-
I wrote the below code inside one Application Package whose name was ZC_TEST
class zc_test
method zc_test();
method printcount();
private
instance number &objectcount;
end-class;
method zc_test
&objectcount = &objectcount + 1;
end-method;
method printcount
MessageBox(0, "", 0, 0, "The value of &objectcount = " | &objectcount);
end-method;
Then created one small Application Engine program to access the same class using the below code:
import ZC_TEST:*;
Local ZC_TEST:zc_test &obj1 = create ZC_TEST:zc_test();
&obj1.printcount();
Local zc_test:zc_test &obj2 = create zc_test:zc_test();
&obj2.printcount();
But the out of the program is not as desired.
PeopleTools 8.50.09 - Application Engine
Copyright (c) 1988-2010 PeopleSoft, Inc.
All Rights Reserved
The value of &objectcount = 1 (0,0)
Message Set Number: 0
Message Number: 0
Message Reason: The value of &objectcount = 1 (0,0) (0,0)
The value of &objectcount = 1 (0,0)
Message Set Number: 0
Message Number: 0
Message Reason: The value of &objectcount = 1 (0,0) (0,0)
Application Engine program Z_TEST ended normally
After looking at the log file I did not feel that instance variables are same like static variables. Please suggest.
Thanks,
-Kiran P
-
AG,
If each instance variable is different from another one, what is the difference from normal variable and instance variable ?
Private instance variable and
private variable - how are they different ?
-
Are you really sure peoplesoft Instance variables equal to Java static variables? I think Peoplesoft Instance variable is the opposite of Java static variables.
-
Sorry but instance variable are != static variables. That is just plain wrong.
See here more about private variables:
http://jjmpsj.blogspot.com.au/2014/07/private-app-class-members.html
-
if you wanted to do
1) if you want to count how many objects of the class was created you increment this variable in the constructor of the class.
you would need to declare the variable outside the class as global scope and increment the counter in the constructor of the class.
-
Hi All,
Sorry for the confusion Instance variable is not the static variable, similar to Java application, hope it was same, but not.
Private variable cannot manipulated by other objects.
Private Instance Variable can be manipulated by other objects of the same class and not by objects on the different class.