Designing the Concept Sharing Themes
We can now design the base themes for
sms, game, voice call
, and
media player
. These themes are quite simple, so we don't need to investigate their
The only interesting base theme is
menu
, which dominated the postponed requirement, R1. The individual view for the
menu
theme is shown in Figure 8-4. R2 describes the main
menu
theme operation. R2's functionality will be
Figure 8-4. Menu individual-theme view.
The design for each of the base themes is displayed in Figure 8-5. You can see that we have added an
audible
theme to describe in detail the behavior
Figure 8-5. Concept-sharing themes and their merge specifications.
Because we have specified merge integration (as denoted by arrows at each end of the composition relationship), all the themes will simply be merged together and any redundancy removed. For instance, there is a Menu class in each of the themes, with the exception of the audible theme. The menu theme itself includes only the behavior from R2 ( scroll() and select_item() ) from the menu individual-theme view in Figure 8-4. The postponed R1 requirement ( the menu consists of several options... ) is not designed as being "owned" by a particular theme. Instead, each theme has its own Menu class that will be merged to the main Menu class (found in the menu theme) on composition. The phone theme is the product of the merge, as specified by the ThemeName["Phone"] tag.
You'll probably spot that these themes together would not make a working phone. At this point, that's fine. The requirements that we were given for the phone were not comprehensive enough to allow us to make all the design decisions we needed to in order to
|