To help you organize this project (or feel better about it), read these Class Responsibility Collaboration(crc) links, and writeup a version of these cards for your project (you can use asciio (if you got Gtk2) when you've got a version you want to share)
html version (no overlapping or closeness)
View |
- Render the Model
- Transform coordinates
-
-
-
|
|
Controller |
- Interpret user input
- Distribute control
-
-
-
|
|
Model |
- Maintain problem related info
- Broadcast change notification
-
-
-
|
|
YAML (HoHoA), (no overlapping or closeness)
---
View:
Responsibilities:
- (what the class does)
- Render the Model
- Transform coordinates
-
-
-
Collaborations:
- (related objects)
- Controller
- Model
-
-
-
---
Controller:
Responsibilities:
- (what the class does)
- Interpret user input
- Distribute control
-
-
-
Collaborations:
- (related objects)
- View
- Model
-
-
-
---
Model:
Responsibilities:
- (what the class does)
- Maintain problem related info
- Broadcast change notification
-
Collaborations:
- (related objects)
-
-
-
App::asciio text diagram, both overlapping and closeness
.----------------------------------------.
| View |
.-------------------------.--------------.
| - Render the Model | - Controller |
| - Transform coordinates | - Model |
| | |
| | .---------------------------------------
+-.
| | | Controller
+ |
'-------------------------'--.-------------------------.-------------
+-.
| - Interpret user input. | - View
+ |
| - Distribute control | - Model
+ |
| |
+ |
| |
+ |
| |
+ |
'-------------------------'-------------
+-'
.----------------------------------------.
| Model |
.-------------------------.--------------.
| - Maintain problem | |
| realted info. | |
| - Broadcast change | |
| notification. | |
| | |
'-------------------------'--------------'
Note that the cards are placed such that
View and Controller are overlapping (implying close collaboration)
and placed above Model (implying supervision.)