> If Perl is going to have data hiding (I think I read that this was a > goal), then you cannot declare these relationships outside of the > class that defines the method. That would be like putting a "friend" > delcaration only on the foriegn class in C++. It simply should not > work that way.
I have no objection to requiring a "friend" property for access to hidden data; or to allow addition of before and after methods. That's an orthogonal issue. > > Your suggestion also has the dubios honor of being a "come > from", which while amusing in Intercal, is probably not > desirable in Perl ;-) I'm sorry, I don't know Intercal. When I look at the problem of manipulating relations between functions, I see a Many:Many relationship. In special cases, this may reduce to 1:M or M:1 (or even 1:1). With any relationship, there are 3 places where it can potentially be formalized: the source, the target or an indirection table. Any of these possibilities may be correct, in a given situation. Perl isn't an RDB, so we aren't forced to formalize at the M end of an M:1. > AOP is intended as a design tool, not necessarily a code reuse > tool. I'm not sure that I like to make that distinction. One of the goals of OO design (even using AOP) is to minimize redundancy. Dave.