[Zope-dev] Formal argument for acquisition and aq_self
Steve Alexander
steve@cat-box.net
Tue, 13 Feb 2001 18:01:33 +0000
I've just been reading through some academic papers by Tom Mens.
The paper at this link looks interesting, as it appears to me to
describe a problem that is addressed in Zope by acquisition wrappers.
http://prog.vub.ac.be/Research/ResearchPublicationsDetail2.asp?paperID=51
Abstract
Most object-oriented languages provide a self pseudo variable that
serves two purposes: invoking methods through self sends and returning a
self reference. Current formal models capture this behaviour by
introducing a self parameter that fulfils both roles. We will show that
this double functionality is incompatible with object-based
encapsulation. Moreover we will point out that the separation of both
functionalities is needed in type systems. We propose a formal model
based on a primitive self send construct, and present its denotational
semantics. A self reference is implemented through a self send instead
of the other way around. This model is extended formally with an
object-based encapsulation mechanism. It allows us to keep inheritance,
encapsulation and typing orthogonal. This way we obtain a flexible and
incremental software development scheme.
In the case of Zope, the "self sends" are represented by the way an
acquisition wrapper dispatches messages. The "self reference" is given
by aq_base (or one of the other aq_ attributes, depending on what you
want "self" to mean at the time).
--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net