[Tutor] Why Won't My Pizza Fall?

Tiger12506 keridee at jayco.net
Tue Jan 15 01:52:42 CET 2008

[Background from Alan]
> If some other factor were to determine its behhaviour more
> closely - such as determining whether the Pizza was within
> the coordinate boundaries or in collision with another Pizza
> then that could be implemented via a message protocol.
> Thus the context object should respond to some message
> from Pizza and in this case the Pizza should hold a reference
> to its context manager(probably a screen or grid of some sort).

This email has particularly strong personal opinions about coding practices. 
I do not wish to personally offend anyone, and if you feel that you have 
been offended as such, or that you disagree, please do not bother emailing 
this list to tell me, excepting that you provide an excellent case promoting 
your views that someone may be able to apply to make their code more 
intuitive/sensible. This email was provided for just such a reason.

> The context manager is responsible for tracking the objects
> being managed, but the objects remain responsible for
> managing their own state.

This phrase right here is a dead giveaway to me that Pizza should have 
little control over how it moves. A Pizza must be completely aware of its 
current position (being part of its state) and at the very *most* a set of 
rules governing general falling behaviour. I like the idea of a context 
manager that is perhaps a container for Pizzas that oversees their behavior, 
but I dislike the idea that a Pizza knows specifics about its rules for 
positioning such as collisions or etc. that it has to communicate to the 
context manager and/or other Pizzas. Maybe I am becoming too used to lower 
level languages, not fully siding with abstraction. I just see that we have 
suddenly introduced to new levels of redirection to achieve the same result, 
like a company that must use interdepartmental communication by messages 
through possibly more than one department instead of just simply 
communicating directly. Or like the elements of a list changing each other, 
instead of the list changing the elements. Definite benefits for messaging 
models, but this /feels/ akin to filling out tax forms so that the 
government can tell you how you filled them out incorrectly.

A similar somewhat questionably connected problem involves my dealings with 
the Render method of the IPicture interface. Sure, you can directly apply 
the picture to the device context or if you like we have a Render method 
that will automatically change the coordinates so that you have to convert 
them back to display it. Abstraction isn't everything.

More information about the Tutor mailing list