Object-oriented-analysis-design-ooad-object-oriented-principles

提供:Dev Guides
移動先:案内検索

OOAD-オブジェクト指向の原則

オブジェクト指向システムの原理

オブジェクト指向システムの概念的なフレームワークは、オブジェクトモデルに基づいています。 オブジェクト指向システムには要素の2つのカテゴリがあります-

メジャー要素-メジャーとは、モデルにこれらの要素が含まれていない場合、オブジェクト指向ではなくなることを意味します。 4つの主要な要素は-

  • 抽象化
  • カプセル化
  • モジュール性
  • 階層

マイナー要素-マイナーとは、これらの要素が有用であることを意味しますが、オブジェクトモデルの不可欠な部分ではありません。 3つのマイナーな要素は-

  • タイピング
  • 並行性
  • 持続性

抽象化

抽象化とは、OOPの要素またはオブジェクトの本質的な機能に焦点を当てることを意味し、その無関係または偶然の特性を無視します。 基本的な機能は、オブジェクトが使用されているコンテキストに関連しています。

Grady Boochは次のように抽象化を定義しています-

「抽象化とは、オブジェクトの本質的な特性を指し、他のすべての種類のオブジェクトと区別するため、視聴者の視点から見て明確に定義された概念的な境界を提供します。」

-クラスStudentが設計されると、属性enrolment_number、name、course、およびaddressが含まれますが、pulse_rateやsize_of_shoeなどの特性は、教育機関の観点からは無関係であるため削除されます。

カプセル化

カプセル化は、クラス内で属性とメソッドの両方をバインドするプロセスです。 カプセル化により、クラスの内部詳細を外部から隠すことができます。 クラスには、クラスが提供するサービスを使用するためのユーザーインターフェイスを提供するメソッドがあります。

モジュール性

モジュール性は、問題の全体的な複雑さを軽減するために、問題(プログラム)をモジュールのセットに分解するプロセスです。 Boochはモジュール性を次のように定義しています-

「モジュール性とは、まとまりのある疎結合モジュールのセットに分解されたシステムの特性です。」

モジュール性は、本質的にカプセル化とリンクしています。 モジュール化は、カプセル化された抽象化をモジュール内で高い凝集度を持ち、モジュール間の相互作用または結合が少ない実際の物理モジュールにマッピングする方法として視覚化できます。

階層

Grady Boochの言葉では、「階層とは抽象化のランキングまたは順序です」。 階層を介して、システムは相互に関連するサブシステムで構成され、最小レベルのコンポーネントに到達するまで独自のサブシステムなどを持つことができます。 「分割統治」の原則を使用しています。 階層により、コードを再利用できます。

OOAの階層の2つのタイプは-

  • 「IS-A」階層-継承の階層関係を定義します。これにより、スーパークラスから、サブクラスなどを含む複数のサブクラスを派生させることができます。 たとえば、FlowerクラスからRoseクラスを派生させる場合、バラは「花」であると言えます。
  • 「PART-OF」階層-クラスを他のクラスで構成できる集約の階層関係を定義します。 たとえば、花はがく片、花弁、雄しべ、および心皮で構成されます。 花びらは「一部」の花と言えます。

タイピング

抽象データ型の理論によれば、型は要素のセットの特徴付けです。 OOPでは、クラスは他のタイプとは異なるプロパティを持つタイプとして視覚化されます。 入力とは、オブジェクトが単一のクラスまたは型のインスタンスであるという概念の施行です。 また、異なるタイプのオブジェクトは一般的に交換できないことを強制します。どうしても必要な場合は、非常に制限された方法でのみ交換できます。

タイピングの2つのタイプは-

  • Strong Typing -ここでは、プログラミング言語Eiffelの場合のように、オブジェクトの操作がコンパイル時にチェックされます。
  • Weak Typing -ここでは、メッセージはどのクラスにも送信できます。 動作は、プログラミング言語Smalltalkのように、実行時にのみチェックされます。

並行性

オペレーティングシステムの同時実行により、複数のタスクまたはプロセスを同時に実行できます。 システムに単一のプロセスが存在する場合、単一の制御スレッドがあると言われています。 ただし、ほとんどのシステムには複数のスレッドがあり、一部はアクティブ、一部はCPUを待機、一部は中断、一部は終了しています。 複数のCPUを備えたシステムは、本質的に同時スレッドの制御を許可します。ただし、単一のCPUで実行されているシステムは、適切なアルゴリズムを使用して、スレッドに公平なCPU時間を与え、同時実行を可能にします。

オブジェクト指向環境では、アクティブなオブジェクトと非アクティブなオブジェクトがあります。 アクティブなオブジェクトには、他のオブジェクトのスレッドと同時に実行できる独立した制御スレッドがあります。 アクティブなオブジェクトは、相互に同期するだけでなく、純粋にシーケンシャルなオブジェクトとも同期します。

持続性

オブジェクトはメモリ空間を占有し、特定の期間存在します。 従来のプログラミングでは、オブジェクトの寿命は通常、それを作成したプログラムの実行の寿命でした。 ファイルまたはデータベースでは、オブジェクトの寿命はオブジェクトを作成するプロセスの期間よりも長くなります。 作成者が存在しなくなった後もオブジェクトが存在し続けるこのプロパティは、永続性と呼ばれます。