Rony,

Thanks again for this overview.
In fact, in place of the ???, I was searching for a sentence which explains
the impacts (or consequences), like it's done for the instance methods below
:

5.1.1
The Object class is the root of the class hierarchy.
The instance methods of the Object class are, therefore, available on all
objects.
[JLF] The class methods of the Object class are ??? <a sentence which
summarizes the impacts.>

I try to make a mental model of ooRexx internals...
Something that would be similar to :
http://www.iam.unibe.ch/~ducasse/Teaching/Archives/STOBJ/allPapers.pdf
See section 2 The ObjVlisp model on 3rd page. There is a set of definitions,
and I just try to write similar postulates for ooRexx... I can't say that I
understand all the subtleties of ObjVlisp :-) And the situation is currently
the same for ooRexx, but trying to describe in plain words the ooRexx model
should help me to understand better.


Jean Louis

2011/8/8 Rony G. Flatscher <rony.flatsc...@wu-wien.ac.at>

> **
> Hi Jean-Louis,
>
> totally overlooked your original questions related to the reference
> documentations:
>
> On 08.08.2011 10:23, Jean-Louis Faucher wrote:
>
> I can't find a suitable definition for the ??? below.
>
> Extracted from rexxref :
>
> 5.1.1
> The Object class is the root of the class hierarchy.
> The instance methods of the Object class are, therefore, available on all
> objects.
> [JLF] The class methods of the Object class are ???
>
> All methods of the class "Class": "=", "\=", "==", "\==", "<>", "><",
> "baseClass", "defaultName", "define", "delete", "enhanced", "hashcode",
> "id", "inherit", "isSubclassOf", "metaClass", "method", "methods",
> "mixinClass", "new", "queryMixinClass", "subClass", "subClasses",
> "superClass", "superClasses", "uninherit".
>
> Plus all methods of the root class "Object" via inheritance.
>
> 5.1.2
> The Class class is like a factory that produces the factories that produce
> objects. It is a subclass of the
> Object class.
> The instance methods of the Class class are also the class methods of all
> classes.
> [JLF] The class methods of the Class class are ???
>
> All methods of the class "Class": "=", "\=", "==", "\==", "<>", "><",
> "baseClass", "defaultName", "define", "delete", "enhanced", "hashcode",
> "id", "inherit", "isSubclassOf", "metaClass", "method", "methods",
> "mixinClass", "new", "queryMixinClass", "subClass", "subClasses",
> "superClass", "superClasses", "uninherit".
>
> Plus all methods of the root class "Object" via inheritance.
>
> 4.1.4
> A metaclass is a class you can use to create another class. The only
> metaclass that Rexx provides is .Class, the Class class. The Class class is
> the metaclass of all the classes Rexx provides. This means that instances of
> .Class are themselves classes.
> [JLF] The instance methods of a metaclass are ??? : [proposition] the class
> methods of all the classes associated to this metaclass.
>
> All methods of the class "Class": "=", "\=", "==", "\==", "<>", "><",
> "baseClass", "defaultName", "define", "delete", "enhanced", "hashcode",
> "id", "inherit", "isSubclassOf", "metaClass", "method", "methods",
> "mixinClass", "new", "queryMixinClass", "subClass", "subClasses",
> "superClass", "superClasses", "uninherit".
>
> Plus all methods of the root class "Object" via inheritance.
>
> ---
>
> If you think about a metaclass you defined yourself, that needs to be a
> subclass of .Class, then:
>
> All methods you defined.
>
> Plus all methods of all superclasses, among them all instance methods of
> the class "Class" via inheritance: "=", "\=", "==", "\==", "<>", "><",
> "baseClass", "defaultName", "define", "delete", "enhanced", "hashcode",
> "id", "inherit", "isSubclassOf", "metaClass", "method", "methods",
> "mixinClass", "new", "queryMixinClass", "subClass", "subClasses",
> "superClass", "superClasses", "uninherit".
>
> Plus all methods of the root class "Object" via inheritance.
>
> [JLF] The class methods of a metaclass are ???
>
> All methods of the class "Class": "=", "\=", "==", "\==", "<>", "><",
> "baseClass", "defaultName", "define", "delete", "enhanced", "hashcode",
> "id", "inherit", "isSubclassOf", "metaClass", "method", "methods",
> "mixinClass", "new", "queryMixinClass", "subClass", "subClasses",
> "superClass", "superClasses", "uninherit".
>
> Plus all methods of the root class "Object" via inheritance.
>
> ---
>
> If you think about a metaclass you defined yourself, that needs to be a
> subclass of .Class, then:
>
> All methods you defined with the subkeyword "class".
>
> Plus all class methods of all superclasses, among them all methods of the
> class "Class" via inheritance: "=", "\=", "==", "\==", "<>", "><",
> "baseClass", "defaultName", "define", "delete", "enhanced", "hashcode",
> "id", "inherit", "isSubclassOf", "metaClass", "method", "methods",
> "mixinClass", "new", "queryMixinClass", "subClass", "subClasses",
> "superClass", "superClasses", "uninherit".
>
> Plus all methods of the root class "Object" via inheritance.
>
> ---
>
> You could look at the methods interactively, e.g. with "rgf_util2.rgf" in
> rexxtry sessions resp. your shell:
>
> call "rgf_util2.rex"
> call dump2 .class~methods -- lists all methods defined for instances of the
> class "Class", includes inherited methods
> call dump2 .class~methods(.class) -- lists all methods defined for
> instances of the class "Class" only
> call dump2 .class~methods(.object) -- lists all methods defined for
> instances of the class "Object" only
> call dump2 .class~instanceMethods -- lists all instance methods defined for
> the class "Class", includes inherited methods
> call dump2 .class~instanceMethods(.class) -- lists all instance methods
> defined for the class "Class" only
> call dump2 .class~instanceMethods(.object) -- lists all instance methods
> defined for the class "Object" only
> ...
>
> If you then compare the methods for the "Class" class object with those
> that instances of that class will get, you will notice that the "Class"
> class object instance has the method "NEW" in addition. (It is missing from
> the "Class" methods collection of methods to give to instances. It seems
> that the "NEW" method gets added via setMethod while the class objects get
> created.)
>
> Not sure, why this got implemented this way, but Rick would know.
>
> ---
>
> Also a final remark ad metaclasses: as they are normal ooRexx classes it is
> possible to employ multiple inheritance among metaclasses which opens a lot
> of interesting and powerful problem solution capabilities!
>
> E.g. you could create a metaclass for the singleton pattern, another one to
> server as a counter or a manager of created instances and later combine the
> functionality of such metaclasses through multiple inheritance, which is
> simply great!
>
> HTH,
>
> ---rony
>
>
>
>
> ------------------------------------------------------------------------------
> BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
> The must-attend event for mobile developers. Connect with experts.
> Get tools for creating Super Apps. See the latest technologies.
> Sessions, hands-on labs, demos & much more. Register early & save!
> http://p.sf.net/sfu/rim-blackberry-1
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>
------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to