Variable Actions for objects
Full definitions
Examples: A a = new A()
, A a2 = a
, A a = A.create()
.
Action: define each object member and then define the object itself.
Where? Each location that defines objects, where the variable is a reference type.
Partial definitions
Examples: a.x = 10
, a.setX(10)
, this.x = 10
.
Action: define the object member that has changed value, then define the object itself.
Where? Any definition location where the variable being define may be an object or object field.
Object usage
Examples: a.f()
, new B(a)
, a2 = a
from the perspective of a
.
Action: use the object.
Where? Any usage of an object that doesn't also use a member of such object.
Member usage
Examples: a.getX()
, int i = a.x
both use a.x
.
Action: use the member and then the object.
Where? Any usage of an object member. If a call uses multiple object members, they can be merged as USE{obj.member1}, USE{obj.member2}, ..., USE{obj}
.