-Original Message-
From: Luke Palmer [mailto:[EMAIL PROTECTED]
Sent: Friday, December 12, 2003 6:23 AM
So I'm seeing a lot of inconsistent OO-vocabulary around here, and it
makes things pretty hard to understand.
So here's how Perl 6 is using said inconsistent terms, AFAIK:
- attribute
A concrete data member of a class. Used with Chas.
- property
An out-of-band sticky note to be placed on a single object.
Used with Cbut.
- trait
A compile time sticky note to be placed on a wide variety
of things. Used with Cis.
Did I miss something with IS and OF?
That is, I think:
Cis means storage type, while Cof means trait or class:
my @a is Herd of Cat;
declares a Herd (presumably a base class of some collection type) with the trait that,
in this case, members will be of Class Cat.
Did this change when I wasn't looking?
- role
A collection of methods to be incorporated into a class sans
inheritance (and maybe some other stuff, too). Used with Cdoes.
No comment, since this is still hovering (see Larry's reply).
So for example:
class Dog
does Boolean# role
is extended # trait
is Mammal # [1]
The only difference I can see here between Cdoes Boolean and Cis extended would be
the declaration of Boolean or extended (unless Cis can only be used with built-in
traits, which seems unnecessarily restrictive...)
{
has $.tail; # attribute
has @.legs; # attribute
}
my $fido = Dog.new
but false; # property
Hope that clears things up.
Luke
[1] This is a base class, which is an overloaded use of Cis. Though,
upon A12 release, we'll probably find out that it's not overloaded but
instead, elegantly unified, somehow.
Thanks for bringing this out.
=Austin