logo       

Re: Traits (Was Design best practice : put state-independentmethodsonclass : msg#00171

lang.smalltalk.squeak.beginners

Subject: Re: Traits (Was Design best practice : put state-independentmethodsonclass side?)

I compare a trait to a superclass, in that it can provide implemented
methods, and require (i.e. like template method hooks or callbacks) other
"expected" methods in the class that uses that trait e.g. any state a trait
expects would have some expected accessors.

In your example you could use PetTraits with any class that implemented
#foodRequirements, not just Dog or Rock subclasses.

You can also re-name (actually, alias) provided methods when you use a
trait; you cannot (currently) re-name the required methods which is often
useful http://www.nabble.com/A-Traits-question-td15484148.html#a15600165 and
I would use them a lot more if I could do this kind of re-naming.

- Sophie


"Rob Rothwell" <r.j.rothwell@xxxxxxxxx> wrote in message
news:22f158f00803251855h3f9e1bbenf370cb5c4b2bffbc@xxxxxxxxxxxxxxxxx
> On Tue, Mar 25, 2008 at 8:02 PM, Matthew Fulmer <tapplek@xxxxxxxxx> wrote:
>
>> No. Traits are units of behavior that can be shared among
>> objects.
>
>
> So...if in a general sense a trait has no knowledge of the object it will
> be
> attached to, is it common practice to create traits to be used only by a
> specific group of objects so that some common behaviour can be assumed?
>
> Or at that point are you just creating a subclass and should just go ahead
> and duplicate the methods?
>
> As a trivial example, say you have Dog and Rock, and you want to make a
> Pet
> out of both of them even though they both have different base classes
> (like
> Animal or Mineral). Furthermore, Pet>>careInstructions needs to use "self
> foodRequirements," which you may provide for a Dog or a Rock, but not for
> all objects.
>
> In other words, would you expect to see PetTraits that are meant to be
> used
> with Dog or Rock subclasses only?
>
> Thanks!
>
> Rob
>


--------------------------------------------------------------------------------


> _______________________________________________
> Beginners mailing list
> Beginners@xxxxxxxxxxxxxxxxxxxxxxxxxx
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise