280 likes | 401 Views
第五回 ソフトウエアの再利用. オブジェクト指向プログラミング(3) 静的分析(1). オブジェクト指向開発の手順. 1.システム分析 要件の分析を行う。システムがしなければならないこと、そして、やらないことを定義する。ここでシステムが対象としている問題領域のモデル化を行い、大まかな構成を決定する。 2.システム設計 分析した結果を実際のシステム上稼動させるにはどうしたよいかということを考える。 3.実装 コーディング/テスト/デバッグ. クラスの抽出の前に分析とは. 分析とは
E N D
第五回 ソフトウエアの再利用 オブジェクト指向プログラミング(3) 静的分析(1)
オブジェクト指向開発の手順 1.システム分析 要件の分析を行う。システムがしなければならないこと、そして、やらないことを定義する。ここでシステムが対象としている問題領域のモデル化を行い、大まかな構成を決定する。 2.システム設計 分析した結果を実際のシステム上稼動させるにはどうしたよいかということを考える。 3.実装 コーディング/テスト/デバッグ
クラスの抽出の前に分析とは • 分析とは そのプログラムが何をしなければならないのか、システムに何がもとめられているのか、ということを整理することです。 分析段階での成果物は、環境に対して依存性がないものになる。
分析 • 分析は、大きく静的モデリングと動的モデリング 分かれる。 <静的モデリング> システムがどのようなクラスで構成されてい るのかを分析する。 <動的モデリング> そのクラスから生成されたインスタンス(実 体)がどのように振る舞うかを分析する。
最初にするべきこと • システムを作成する際には、そのシステムが何をするのか、そして何をしないのかということを決定する必要があります。 「仕様」
クラスの抽出 • クラスをさがしだす作業というのは、システムの仕様から名詞をさがす作業 • 分析段階では、問題領域のクラスのみを考える
問題領域 • 問題領域とは 私たちがシステムを開発する際に、そのシステムがこれから解決しようとしている現状の問題のことである。 たとえば、 文書を作成するという行為。 宿泊予約システムであれば、宿泊先の空き室があったら予約するという一連の作業の流れ。
コンピュータ領域 • コンピュータ領域とは コンピュータを使って実現する手段に登場するものことである。 たとえば、 GUIにグラフィックボタンを使用する。 ある予約システムにモデムを使用する。
課題1:インベーダーゲーム • 複数列複数行のインベーダーが、ミサイルを撃ちながら画面上から迫ってくる。 • オペレータは、戦車をレバーで左右に操作し、ボタンを押すことによってミサイルでインベーダーを撃ち、破壊する。 • インベーダーのミサイルに撃たれると、戦車は破壊される。 • ゲーム中に上方にUFOが左右に横切り、それをミサイルで撃つことも可能。 • インベーダーと戦車の間には4つの防護壁が存在しており、ミサイルは、防護壁に当たると爆破する。その際に防護壁は部分的に破損する。
名詞の抽出 • クラス候補 インベーダー、ミサイル、画面、オペレータ、 戦車、レバー、ボタン、UFO、防護壁など
問題領域とコンピュータ領域 インベーダー UFO ミサイル 戦車 防護壁 問題領域 画面 レバー ボタン アプリケーション領域 アプリケーション
課題2 学習塾管理システム • 学習塾があり、各学年ごとに複数の学級がある。 • 1学級には複数人の生徒がおり、各科目ごとに担当する教師がいる。 • 月に1回模擬試験があり、その成績を管理する。 • 成績は志望校の合格判定に使用され、その結果はプリンタから出力され、家庭に郵送される。
分析時の視点からのクラス • 名前 あまり考えずにずれた名前をつけてしまうと、あとでそれに影響されてそのクラスの分析が誤った方向に進んでしまう。 そのクラスの本質を表した名前をつける。
分析時の視点からのクラス • 属性 そのクラスの成り立ちを示すデータ 属性はプログラム的にはデータメンバに該当する。
分析時の視点からのクラス • 操作 クラスに用意された、クラスの対する命令の受付窓口 操作は、プログラム的には、メンバ関数に相当する。
分析時の視点からのクラス • 以上、3つのことを考えていくことが クラスの静的モデリングという作業です。
クラス図の作成 • クラス図 クラス図はオブジェクト指向システム分析設計でかかすことのできない極めて重要な図である。 クラス図に書かれていることが最終的にシステムの構成を決定します。
クラス図の作成 • クラス図の例 クラス名 生徒 属性 氏名 住所 学級 学年 操作 平均点算出 偏差値取得
クラス図の作成 • クラス図の作成順序 ・クラスの仕様の決定 ・「操作」の洗い出し(属性よりも先) ・そのために必要な「属性」を考える
クラス図の例 学習塾管理システムの例
クラス仕様の範囲 • 「この仕様はどのクラスの仕様であるか」という認識は、オブジェクト指向では非常に重要な視点である。 「何をするか」だけを考えてはだめ。 「それを誰がするか」ということが重要。
インベーダーゲームの戦車の仕様 別紙参照
操作の抽出 • 操作名は、たいてい動詞になる。 多くの操作名は「~する」の「する」を省略した形になることが多い。 「操作する側が主語」というのが原則
操作の抽出 • 操作抽出後の「戦車」のクラス図 戦車 右へ移動 左へ移動 停止 ミサイル発射 破壊
属性の抽出 • 属性は、操作に比べると、その重要性はそれほど高くない。なぜなら、属性というのは外部に対して隠蔽されているものだから。 • クラスのモデリングには正解は複数あるというより、正解はない、と言ったほうが正しいかもしれない。
属性の抽出 • 属性抽出後の「戦車」のクラス図 戦車 現在位置 大きさ(巾) 右へ移動 左へ移動 停止 ミサイル発射 破壊 位置を取得