機能を中心に考え、大きな機能を段階的に詳細化し、上位の機能を満たすために、下位の機能を構成するように設計します。
構造化チャート | GOTOを表現する方法をもたず、論理の階層化を図的に表現し、を構造化して表現するのに都合の良い図式。階層構造の形でプログラムの全体構造を表現する。 |
---|---|
NSチャート | 矢印や線を使用せず、四角い枠の組み合わせで表現するため、構造化プログラミングの設計に適している。 |
HIPOチャート (ハイポ) |
システムの機能構造を階層的に図式化し、入力・処理・出力の関係をトップダウン方式で記述する方法。 |
システムにおいて操作や処理の対象となるものをオブジェクト(もの)と見なし、オブジェクト間の関係やオブジェクト同士のやり取りを定義することによってシステム全体を設計し、開発を推進する方法。
オブジェクトは、固有の姿・形・性質などを持ち、これを属性(attribute)の値で表現する。属性は一般的に名詞で表現します。
各オブジェクトは固有の振る舞いを持ちます。これを操作(operation)と呼び、動詞で表現します。
クラスとは、同じ特性を持つオブジェクトの集合に名前を付けたもので、オブジェクトの特性を抽象化したものとなります。クラスは一般的に名詞で表現します。
例えば、ある会社に在籍している人をオブジェクトと考えると、その会社で働いている人を「従業員」というクラスとして表現できます。
クラスに属するオブジェクトをインスタンスと呼びます。
インスタンスとは、クラスに属するオブジェクトの例で、普通、クラスは複数のインスタンスを持ちます。クラスをオブジェクトの集合ととらえるなら、集合の要素がインスタンスとなります。
クラスとクラスが関係を持つ事を「関連」と言います。
基準になるクラスを「スーパークラス(基底クラス)」、新しく作成するクラスを「サブクラス(派生クラス)」といいます。
スーパークラスを利用してサブクラスを作ることを「継承」「インヘリタンス」といいます。
ポリモフィズムとは、同じ名前の操作が多くの形を取る、異なる振る舞いをする、ということを意味します。
例えば会社で働いている人を考えると、「従業員」というクラスを分類すると、「プログラマ」「営業担当」「事務職」というサブクラスに分類することができます。
各サブクラスは「働く」という同じ名前の操作を持っていますが、その振る舞いはそれぞれのサブシステムに個別に定義されていて異なります。これがポリモフィズムです。
オブジェクト指向ソフトウェアを設計する際に繰り返し現れる経験的な要素を抽出したもので、効率の良いプログラミングをするためのテンプレートを「デザインパターン」と言います。
種類 | 説明 |
---|---|
GoFの23のパターン | デザインパターンと言えばこれを指すというくらいのバイブル的存在。基本的な23のパターンがカタログ化されている。 |
J2EEパターン | サーブレット/JSP/EJB/JMXを中心にJ2EEに特化したデザインパターン集。ここで紹介されたパターンはStrutsなどのフレームワークにも適用されている。 |
アーキテクチャパターン | MVCやレイヤなどシステム全体のアーキテクチャ(構造)をパターン化したもの。 |
アナリシスパターン | 医療、在庫管理、会計、金融などの具体的な業務システムにおける設計やモデリングのぱたーんをカタログ化したもの。 |
アンチパターン | デザインパターンが「こうあるべき」ものなのに対して、アンチパターンは「こうしてはいけない」ものをカタログ化したもの |
オブジェクト指向のソフトウェア開発における、プログラム設計図の統一表記法をUMLと呼びます。
図の名称 | 図の役割 |
---|---|
ユースケース図 | システムの機能を表す |
シーケンス図 | オブジェクトの関係を時間の流れで表す |
コラボレーション図 | オブジェクト間の相互作用を表す |
クラス図 | クラス間の関係を表す |
オブジェクト図 | オブジェクト間の関係を表す |
ステートチャート図 | オブジェクトの状態とその変化を表す |
アクティビティ図 | オブジェクトのアクティビティによる変化を表す |
コンポーネント図 | システムのコンポーネントを表す |
配置図 | システムの物理的な配置を表す |