A. It's doing a lot of things; some are inherited, but it seems to have a variety of responsibilities. B. Go through the methods listed, and categorize them into 5 to 10 major areas of responsibility. My list is as follows (yours will vary): Columns Editing Rendering Model Selection Appearance Notification Other C. It might be possible to generalize addresses so there wouldn't be so much need to have symmetrical row and column functions. It's possible to pull out helper classes that would own some corner of the responsibility. Some of the methods appear simply to consult the table or column model for their answer. The appearance properties could be managed separately or through a simpler interface. D. I'm not a Smalltalk expert, but I think a few things contribute to the difference: -
Smalltalk's dynamic typing lets generic methods be defined more easily. -
Smalltalk has been around longer, and more methods have worked their way in. -
Smalltalk's interpreted (and more open ) environment has encouraged more experimentation. |