オブジェクト指向(関係)

UML

オブジェクト指向とは,ソフトウェアの考え方,とらえ方の一方法である.

1968年第1回NATOソフトウェア工学会議にてソフトウェア危機が叫ばれた.これは,ハードウェアの進化の急速な向上に対して,規模の拡大や機能の増大などによるソフトウェア 開発の問題提起がなされたことである.

そこで様々な施策が提案されてきた.ソフトウェアのとらえ方や分割の仕方などのアイディアが提案されてきた.

例えば,「構造化プログラミング」は,機能を処理を小さなまとまった単位で分割し,階層的な構造をとるように構成する考え方である.これにより,プログラムの構造をとらえやすくする.構造化プログラミングの中で,制御構造として「順次,分岐,反復」のみを用いることを原則としている.

オブジェクト指向プログラミングでは,ソフトウェアをオブジェクトと呼ばれる部品でとらえて構成する考え方である.構造化プログラミングで課題になった,複雑な構造における設計などの弱みを補うものである.ただし,構造化プログラミングをオブジェクト指向で置き換えるものということではない.

構造化プログラミングを表すための技法としてフローチャートやPADなどがある.一方,オブジェクトとしてとらえたときの分析・設計を考えるとき,オブジェクトおよびクラスといった概念や,オブジェクトの関係,振る舞いなどを表現する方法が必要である.その方法として,図を用いた方法が注目され,オブジェクト指向開発での分析,設計を表すための方法としてUMLとしてまとめられこれが広く用いられている.

UMLは,更新されていて2015年7月での最新版はUML 2.5であるが,UML2.0以降では13種類定義されている.

構造図

名称説明
クラス図クラスの仕様やクラス間関係を定義する
オブジェクト図インスタンスとその関係を定義する
パッケージ図モデルの要素を分類するパッケージを定義する
コンポジット構造図クラスの内部構造を定義する
コンポーネント図コンポーネントを定義する
配置図システムの物理的な構成を定義する

振る舞い図

名称説明
ユースケース図システムが提供する機能を定義する
アクティビティ図アクションの実行順序を定義する
状態マシン図状態と状態遷移を定義する
シーケンス図クラス間の相互作用を時系列に定義する
コミュニケーション図クラス間の相互作用をクラス間の関係に着目して定義する
相互作用概要図相互作用の実行順序を定義する
タイミング図相互作用と状態遷移に関する時間制約を定義する

関係の関係

クラスやオブジェクトでは,互いの「関係」が重要な意味を持つ.関係は,結びつきの強さなどで種類に分けられており,以下の図のように関係付けられている.


関係の表わしかた

関係
Relationship
表現説明Java言語での対応
関連
Association
関連するクラスにメッセージを送ることができる(メソッドを実行する).属性の一部として含む.関連するクラスのメソッドを実行できる.
集約
Aggregation
複数のオブジェクトからクラスを構成する. has-a関係を表す.(単独でなり立つ場合.) 集約されるクラスをフィールドとしてもつ.
合成
Composition
複数のインスタンスからクラスを構成する.has-a関係を表す.(単独で成り立たない場合.)合成されるクラスをフィールドとしてもつ.
汎化
Generalization
 サブクラスを抽象化するスーパークラスに向かう.is-a関係を表す. 継承(extends)によって,スーパークラスをサブクラスに拡張する.
実現
Realization
 宣言のみをしたメソッドに対して,具体的な実装を行う実装(implements)によってインターフェイスを実装する.
依存
Dependency
 動的または一時的に関係を持つほかのクラスのインスタンスにアクセスする.引数に取る.

UML図作成の準備

UML図を作成するために,以下のPDFでの説明にしたがって, astah* professionalをインストールしておくこと.

astah インストール説明

オブジェクト指向(関係)