ソフトウェア設計

◆ オブジェクト指向設計

 オブジェクト指向の概念を問われる問題です。 結構出題されるので用語をしっかり覚えておきましょう。特に継承(インヘリタンス)と多相性(ポリモーフィズム)は出題されるみたいです。 (特にインヘリタンスとは何かみたいな感じで)

基本概念

継承
(インヘリタンス)
・・・ ある特定のクラスが持つメソッドやデータを、そのクラス(スーパークラス)から派生して生成したクラス(サブクラス、派生クラス)が受け継ぐ事を言います。

カプセル化 ・・・ そのクラスが持つデータや内部構造、細かい仕様など隠して、それを扱うためのメソッドだけを公開する手法です。

抽象化
凡化・特化
・・・ 似たような複数のクラスを、上位クラスとして新規に定義する事を言います。 例えば「自動車」と「バイク」というクラスがあったとしたら、「乗り物」というクラスを定義するという感じです。

集約・分解 ・・・ 例として「自動車」というクラスがあったら「タイヤ」、「エンジン」というクラスがあると言った関係の事を言います。
抽象化、凡化・特化のクラス関係は、関連のあるクラスとしたら、集約・分解は、そのクラスの一部の関係です。

応用概念

多相性
(ポリモーフィズム)
・・・ スーパークラスとサブクラスで同じメソッド名を定義してあった場合、サブクラスの方が優先的に実行されます。 この時同じメソッド名でも別々の振る舞いをする場合を多相性といいます。 (多態性とも言います。)


◆ モジュール結合とモジュール強度

 2つあるので注意してください。
 まず、モジュールとは何かですが、容易に追加や削除ができ、ひとまとまりの機能を持った部品の事を言います。 プログラム的には何らかの機能を持ったクラスとか、または普通にマザーボードみたいな部品もモジュールと言われています。

 モジュール結合とは、モジュールと他のモジュールとどれだけ依存・関連するか示す指標です。
 モジュール強度とは、プログラムの中にあるモジュール群の、その中にある機能の独立度を表す指標です。
 モジュール結合が弱い、またはモジュール強度が強いと、いわゆる独立性が高いと言われ再利用しやすいというのを覚えておきましょう。

 過去問題では、結合度の種類と強度の種類の意味を問うのが多いですので、下に各種類を記述します。 下の表は独立性が高い順に表示、過去問題で出題されたものを出しています。 (過去問題は最も強度が強いものとか、結合が強いものとかで出題されています。)

 モジュール結合
結合 意味と出題例
データ結合
(結合度 弱/独立性 高)
データ項目だけをモジュール間の引数として渡す。
制御結合 制御パラメータを引数として渡し、モジュールの実行順序を制御する。
外部結合 必要なデータを外部宣言して共有する。
共通結合 共通域に定義したデータを、関係するモジュールが参照する。
内容結合
(結合度 強/独立性 低)
あるモジュールがCALL命令を使用せず、JUMP命令で他のモジュールを呼び出す事。


 モジュール強度
強度 意味と出題例
情報的強度
(強度 強/独立性 高)
単独の機能をモジュールにまとめる事。

ある機構造データを扱う機能をデータと共に1つにまとめ、木構造データをモジュールの外から見えないようにした。
連絡的強度 一定の順番どおりに実行され、かつ先に実行される機能の結果など、後で実行する機能が使うような、連続したモジュールをまとめた事を言います。

2つの機能A,Bは必ずA,Bの順番で実行され、しかもAで実行した結果をBでしようすることがあるので1つにまとめた。
時間的強度 近い時間内にまとめて実行される事が多い複数の機能を1つのモジュールにまとめる事を言います。

複数の機能のそれぞれに必要な初期設定の操作が、ある時点で一括して実行できるので1つのモジュールにまとめた。
論理的強度
(強度 弱/独立性 低)
関係のある(似たような処理)複数の機能を1つのモジュール内にまとめて、引数なのでどの処理を実行するか選択できるようにまとめた事を言います。

2つの機能A,Bのコードは重複する部分が多いので、A,Bを1つのモジュールとしてA,Bを使い分ける引数を設けた。


TOPページに戻る