Sachool Engineering Blog

プログラミング学習の記録

【課題】ビデオカメラのクラス図を考える

| Comments

仙台ファクトリーのkish(@31_kish)です。

ビデオカメラのクラス図と聞いたとき、機能が多く、膨大なクラスの数になるだろうと思った。
IDEなどでクラスを作った場合、処理の流れがテストできるが
図だけで作ると処理の流れが見えないので、メソッドやプロパティを考えるのが難しい。

クラス図を元にプログラミングを行うと勘違いをしていたが
クラス図とはクラス間の関係を表現するものであり、細かいメソッドの処理などは考慮しなくても良いらしい。

クラス図を作るまでの過程を以下にまとめた。

機能を洗い出す

実際にビデオカメラを触りながら大まかに機能を洗い出した。
あれ、意外と少ない。

  • 各種ボタンの動き
  • 液晶画面に表示される内容
  • 動画・静止画の撮影
  • 動画・静止画のプレビュー

機能をMVCで考える

次に行ったことは、MVCで表現すること。

コントローラー

  • 電源の管理(入・切)
  • ACアダプタの状態を監視
  • 録画状態のビューを呼ぶ
  • ビューの入力を監視
  • 録画ボタンの状態を監視(開始・停止)
  • ズームボタンの状態を監視(拡大・縮小)
  • 撮影モードの状態を監視(動画・静止画)
  • 画面の状態を監視、状態によるビューを呼ぶ(録画・再生・メニュー)
  • 端子の状態を監視(接続済み・未接続)
  • モデルに状態を通知

ビュー

  • 時計を表示
  • 録画時間を表示
  • バッテリーの表示
  • モードを表示
  • メニューを表示
  • ズームボタンの表示
  • 傾きを表示

モデル

  • コントローラーから通知を受け取る
  • 傾きを補正
  • 電源を切る
  • 電源を入れる
  • ACアダプタの状態を受け取り、バッテリ、外部電源を変更
  • 録画を開始
  • 録画を停止
  • 録画した動画を保存する
  • ズームボタンの状態を受け取り、レンズの状態を変更(拡大・縮小)
  • 撮影モードの状態を受け取り、撮影モードの変更(動画・静止画)
  • 端子の状態を受け取り、機器への接続を開始・停止

クラス図をつくった

クラス図

はじめはViewがModelのインスタンスを持っていて複雑になっていたが
ご指摘をいただき、シンプルにまとめることができた。

Comments