in reply to perspective and object-disorientation

While changing the ISA relationships of a class is possible - it's not something that you will often need to do.

A more common perl idiom for changing an objects behaviour is to bless it into another package. You can use this as one way to implement OO state transition systems in perl. Again, this is not something to be done casually.

Part of your confusion might be because of the common misconception that ISA is the only kind of relationship in OO development. It isn't - it's just the most obvious one because it's supported by explicit language constructs.

Other relationships you will see in OO design include:

All these relationships are largely orthagonal to isa relationships. Take a look at Class::Delegation for one way to make these other relationships more explicit.

I'd recommend reading some general OO texts. One of my personal favourites is Meyer's Object Oriented Software Construction. A good read.

Aspect-oriented programming (for perl take a look at the Aspect modules) is another way of looking at the various relationships between objects and classes. I'm not really convinced that this is as radical approach to development as some people say - but it makes interesting reading.

If your problem is purely about categorisation you may find it helpful to look at some of the methods and techniques from artifical intelligence research - the AI:: modules might be a useful starting point.

  • Comment on Re: perspective and object-disorientation