[Seaside] Smalltalk design advice - howtoimplement genericbi-directional pointers?

Aaron Rosenzweig aaron at cocoanutstech.com
Sun Dec 23 21:23:04 UTC 2007


Hi Sebastian. You just turned my world on its head :-)

On Dec 23, 2007, at 3:43 PM, Sebastian Sastre wrote:

> Almost allways objects should not know about "their parents". But  
> parents
> often want to know what is going on with it's children even when the
> children do not pass a message "directly" (hard coupling).

And I just read part of Ramon's blog that says the same kind of thing  
but with the specific example of Seaside components and the  
Announcements framework:

http://onsmalltalk.com/programming/smalltalk/maintaining-loose- 
coupling-in-seaside-components/

This is great, you both make valid arguments. While I understand what  
you say my past still haunts me so I popped open the system browser  
to examine "WAComponent" which is the general Seaside page component.  
It's just as you say. There is a "WAComponent>>children" message and  
a "WAComponent>>parent" message is AWOL.

"How can this be?" was my first guttural reaction.

You see, I'm a WebObjects weenie. "WOComponent" is to WebObjects what  
"WAComponent" is to Seaside. In a "WOComponent" you have  
"WOComponent.parent()" but you do not have "WOComponent.children()".  
It's the exact opposite of what you are recommending and what Seaside  
is doing. Combing through the cob webs of my recollection, I remember  
struggling with this notion years ago. I naively thought that both  
relationships should exist because there were times when I really  
wanted at the children of a particular component. And you know, if  
you dig into Apple's java code, you'll realize that they do have a  
hidden concept of children for a particular component, but they don't  
expose it in the public API. You kind of have to know your children  
when you are asked to generate the HTML response string and you want  
to give your "children" components a chance to "speak".

So, after I peel back the layers of the onion, I see that Apple  
consciously decided components should only know their parent. Yet,  
behind the scenes, they secretly have a way to get to the children.  
Kind of bizarre, I wish I knew what their design decision was but I  
don't. I had always just assumed there was a "very good reason" for  
modeling components the way Apple did, but maybe, in light of what  
you are telling me, there isn't one.

-- Aaron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20071223/b3664e27/attachment.htm


More information about the seaside mailing list