
【伝わる!モデリング】
Google Androidで携帯アプリ設計
第3回:クラス図でプログラムの構造を整理する!
著者:株式会社豆蔵 藤田 泰介
公開日:2008/04/17(木)
クラス図をプログラムに反映しよう!
図3はMame Talkのソースコードの抜粋です。AbstractChatActivityクラスのonCreateメソッドとonResumeメソッドに注目してください。onCreateメソッドは画面の初期化処理を行うイベントメソッドでイベントリスナーの設定や呼び出し元画面からパラメータを受け取って設定しています。
このメソッドでは連絡先一覧画面からデータの表示に使う検索条件を受け取る必要があるのですが、チャットとグループチャットで検索条件が違うため、reflectExtras抽象メソッドを定義して処理を子クラスに委ねています(図3の13行目)。
onResumeメソッドは画面がアクティブになるたびに呼ばれるイベントメソッドで、表示データの取得やフォーカス処理を行っています。表示データの取得はチャットとグループチャットで参照先が違うため、fillData抽象メソッドを定義して処理を子クラスに委ねています(図3の27行目)。
このように親クラスで処理の流れを定義し、独自機能を抽象メソッドに切り出して呼び出せるので、子クラスは処理の流れを気にせず独自処理を実装するだけでよくなります。
今回は紙面の都合上、すべてのプログラムを紹介できませんでした。興味のあるかたは「SourceForge.JP: Project Info - Mame Talk」のWebサイトですべてのソースコードを公開していますので、ダウンロードしてください。

(画像をクリックすると別ウィンドウに拡大図を表示します)
クラス図はプログラムの構造を表すのに最適
図2と図3の例を見るとクラス図とプログラムが1対1で対応しているということが分かると思います。このようにクラス図はプログラムの構造を正確に表せるので、プログラムの整理に非常に役立ちます。
ただし、クラス図では処理の流れやどういったタイミングでメソッドが呼ばれているかまでは分かりません。Mame Talkのようにユーザとのインタラクション(やり取り)が多いアプリケーションでは、処理の流れが複雑になることがあります。このような場合、クラス図でプログラムの構造を整理してから、シーケンス図で処理の流れを整理するとプログラムの見通しがよくなり、複雑になるのを防いでくれます。
さて次回はシーケンス図を使ってプログラムの流れを整理する方法を紹介します。
タイトルへ戻る