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

Reply via email to