[Modeling] Modeling an Agent Class

James Odell email@jamesodell.com
Wed, 11 Jun 2003 16:00:25 -0400


Giovanni,

Good points.  I was using the property, or association end, name.  The end
name for the association from Namespace to NamedElement (Fig. 1-6) is called
"member".   The end name for the association from Classifier to NamedElement
(Fig. 1-22) is called "inherited member" -- and is constrained to be a
subset of the Namespace "member".   This is the reason why  I was saying
that the instances of Classifiers are members.  Does that make sense?  So,
to glue our two approaches together, one could say that the
InstanceSpecification property of a classifier is a member (or more
precisely, an inheritedMember -- which is derived from the Namespace
property of member).

In this way, it could also be stated as:
UML members = UML objects + AUML agents + <other instance-level stuff>

Or as you quite rightly stated in your email:
UML Classifiers = UML classes + AUML AgentClasses + <other type-level stuff>

Are we in violent agreement, now.  Or, do we still differ.


Cheers,

Jim 


On 6/11/03 4:59 AM, "Giovanni Rimassa" indited:

>> So, on to your question: In UML 2.0, an Object is defined as an instance of
>> Class.  So, Classes have objects, and Classifiers have members.  So, would
>> it be useful to use the following, instead:
>>        UML members = UML objects + AUML agents + UML Actors + UML Signals +
>> UML Activity + ....
>> 
> 
>> Would this work?
>> 
>> 
> 
> 
> I'm not sure. It looks to me that if 'Classes have Objects' means
> Object-instanceOf-Class, then 'Classifiers have InstanceSpecifications'.
> Now, the definition of Classifier says 'A Classifiers is a namespace
> whose members can include features'.
> If I understand correctly, Classifier and Feature are in the type
> space, whereas InstanceSpecification and Slot are in the instance
> space (with 'in the type space' I mean that they appear on the right
> hand side of an 'instanceOf' relationship, with 'in the instance space'
> I mean that they appear on the left hand side of the same).
> 
> So, I would say InstanceSpecification-instanceOf-Classifier and
> Slot-instanceOf-Feature (actually, it is StructuralFeature, page 34)
> 
> I couldn't find the definition of Member, but my 'natural' understanding
> from OO languages terminology is:
> 
> 
> class Point {
> 
> public:
> 
> Point(double x, double y);
> 
> double getX();
> double getY();
> 
> private:
> 
> double m_x;
> double m_y;
> 
> }
> 
> };
> 
> 
> Point p(0.12, 3.14);
> 
> 
> In terms of the UML metamodel, 'Point' is a Class, 'p' is an Object,
> and both 'm_x' and 'm_y' are members (and they could have features, if
> they were of some non-primitive type).
> 
> So, to me, 'Point has p' and 'Point has m_x' are both true but 'has'
> means two different things.
> 
> 
> I would rewrite the equation in the type space as follows:
> 
> 
> UML Classifiers = UML classes + AUML AgentClasses + <other type-level
> stuff>
> 
> And, in the instance space:
> 
> UML InstanceSpecifications = UML objects + AUML Agents + <other
> instance-level stuff>
> 
> 
> I wrote <other XXXX-level stuff> because I don't know whether Actors,
> Activities and the like are type-level or instance-level. Moreover, I
> don't know whether for each type-level element (read: for each subclass
> of Classifier) there is a corresponding instance-level element (read:
> a subclass of InstanceSpecification).
> 
> Do you think it works now? If so, do you know whether we can write the
> two equations completely, and with one-to-one correspondence between
> type-level and instance-level equation parts?
>