http://qs321.pair.com?node_id=110120


in reply to Re: (dws)Re: OO vs. global variables...
in thread OO vs. global variables...

You've got the general idea. Board can answer any next-to-ness question for a given Point. Consider this alternative to your fragment:
# determine if I am next to aPoint sub isNextTo { my $self = shift; my $aPoint = shift; my @neighbors = $self->{Board}->neighborsOf($self); return 0 != grep { $aPoint == $_ } @neighbors; }
Does that mean that the Board should be able to dip into the Point's inner workings and get its X and Y coordinates?

The word "Point" carries some baggage (but then so do some alternatives, like "Square"). Let's reframe the question by using "Cell".

Why should a Cell know its X and Y coordinates? Clearly, somebody needs to know them, but why Cell and not Board? (You might have good reasons to go one way and not the other, but this is a good question to ask yourself before deciding.)

Replies are listed 'Best First'.
Re: Re: Re: (dws)Re: OO vs. global variables...
by dragonchild (Archbishop) on Sep 04, 2001 at 22:55 UTC
    Uhhh... I'd just assumed that because a Point has a location, the Point would know its location. But, thinking about it, it doesn't have to, does it? A point is essentially a state-less object. Any point should be able to be picked up and moved to another spot on the board and no changes need be made (from the Point's point of view, so to speak.) It would be the Board's responsability to make sure that the Points are all working together, and that would include things like layout and the like. Ohhhh.

    Hrmmm... I think I like that thinking methodology. I'd started applying it to some of the application, but hadn't realized just how pervasive a paradigm-shift it really way.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Vote paco for President!