オブジェクト指向アプローチ

オブジェクト指向アプローチでは、情報システムの構造と動作を、データとプロセスの両方を組み合わせた小さなモジュールに取り込むことに重点が置かれています。オブジェクト指向設計(OOD)の主な目的は、システムの分析と設計をより使いやすくすることで、品質と生産性を向上させることです。

分析フェーズでは、OOモデルを使用して、問題と解決策の間のギャップを埋めます。これは、システムが継続的な設計、適応、および保守を受けている状況でうまく機能します。問題のあるドメイン内のオブジェクトを識別し、データと動作の観点からそれらを分類します。

OOモデルは、次の点で有益です。

  • 低コストでシステムの変更を容易にします。

  • コンポーネントの再利用を促進します。

  • これにより、コンポーネントを統合して大規模なシステムを構成する問題が単純化されます。

  • 分散システムの設計を簡素化します。

オブジェクト指向システムの要素

オブジェクト指向システムの特徴を見てみましょう−

  • Objects−オブジェクトは、問題のドメイン内に存在し、データ(属性)または動作によって識別できるものです。すべての有形エンティティ(学生、患者)と一部の無形エンティティ(銀行口座)がオブジェクトとしてモデル化されます。

  • Attributes −オブジェクトに関する情報を記述します。

  • Behavior−オブジェクトが実行できることを指定します。オブジェクトに対して実行される操作を定義します。

  • Class−クラスはデータとその動作をカプセル化します。クラスとしてグループ化された、同様の意味と目的を持つオブジェクト。

  • Methods−メソッドはクラスの動作を決定します。これらは、オブジェクトが実行できるアクションにすぎません。

  • Message−メッセージは、あるオブジェクトから別のオブジェクトへの関数またはプロシージャの呼び出しです。これらは、メソッドをトリガーするためにオブジェクトに送信される情報です。基本的に、メッセージは、あるオブジェクトから別のオブジェクトへの関数またはプロシージャの呼び出しです。

オブジェクト指向システムの特徴

オブジェクト指向システムには、以下で説明するいくつかの優れた機能が付属しています。

カプセル化

カプセル化は、情報を隠すプロセスです。これは、プロセスとデータを1つのエンティティに組み合わせたものです。オブジェクトのデータはシステムの他の部分から隠されており、クラスのサービスを通じてのみ利用できます。これにより、システムの他の部分に影響を与えることなく、オブジェクトによって使用されるメソッドを改善または変更できます。

抽象化

これは、オブジェクトを指定するために必要なメソッドと属性を取得または選択するプロセスです。これは、ユーザーの視点に関連するオブジェクトの本質的な特性に焦点を当てています。

関係

システム内のすべてのクラスは相互に関連しています。オブジェクトは孤立して存在するのではなく、他のオブジェクトとの関係で存在します。

オブジェクト関係には3つのタイプがあります-

  • Aggregation −全体とその一部の関係を示します。

  • Association −この場合、1つのクラスが別のクラスと連携してタスクを実行したり、1つのクラスが他のクラスに作用したりするなど、2つのクラスが何らかの方法で関連付けまたは接続されます。

  • Generalization−子クラスは親クラスに基づいています。これは、2つのクラスが類似しているが、いくつかの違いがあることを示しています。

継承

継承は、既存のクラスの属性や操作を継承することにより、既存のクラスからサブクラスを作成できる優れた機能です。

ポリモーフィズムと動的バインディング

ポリモーフィズムは、さまざまな形をとる能力です。これは、オブジェクトと操作の両方に適用されます。ポリモーフィックオブジェクトは、真の型がスーパークラスまたは親クラス内に隠れているオブジェクトです。

多態的操作では、操作は、異なるクラスのオブジェクトによって異なる方法で実行される場合があります。これにより、共通のプロパティのみを知ることで、さまざまなクラスのオブジェクトを操作できます。

構造化アプローチ対。オブジェクト指向アプローチ

次の表は、オブジェクト指向アプローチが従来の構造化アプローチとどのように異なるかを説明しています。

構造化アプローチ オブジェクト指向アプローチ
トップダウンアプローチで動作します。 ボトムアップアプローチで動作します。
プログラムは、いくつかのサブモジュールまたは機能に分割されています。 プログラムは、クラスとオブジェクトの数を持つことによって編成されています。
関数呼び出しが使用されます。 メッセージパッシングが使用されます。
ソフトウェアの再利用はできません。 再利用が可能です。
構造化設計プログラミングは通常、最終段階まで残されます。 他のフェーズと同時に行われるオブジェクト指向設計プログラミング。
構造化設計はオフショアリングに適しています。 社内開発に適しています。
設計から実装への明確な移行を示しています。 設計から実装への移行はそれほど明確ではありません。
これは、リアルタイムシステム、組み込みシステム、およびオブジェクトが最も有用な抽象化レベルではないプロジェクトに適しています。 これは、カスタマイズまたは拡張が期待されるほとんどのビジネスアプリケーション、ゲーム開発プロジェクトに適しています。
DFD&ER図はデータをモデル化します。 クラス図、シーケンス図、状態チャート図、およびユースケースはすべて貢献しています。
この場合、明確に識別可能なフェーズにより、プロジェクトを簡単に管理できます。 このアプローチでは、フェーズ間の移行が不確実であるため、プロジェクトの管理が困難になる可能性があります。

統一モデリング言語(UML)

UMLは、システムアーキテクチャの設計を表現するために、プロセス、ソフトウェア、およびシステムをモデル化できる視覚言語です。これは、技術アーキテクトが開発者と通信できるようにするオブジェクト指向の方法でシステムを設計および文書化するための標準言語です。

これは、Object ManagementGroupによって作成および配布された一連の仕様として定義されています。UMLは拡張可能でスケーラブルです。

UMLの目的は、分析から実装までのシステム開発プロジェクトをモデル化するのに十分な豊富なオブジェクト指向用語とダイアグラム作成手法の一般的な語彙を提供することです。

UMLは-で構成されています

  • Diagrams −これは、プロセス、システム、またはその一部を図で表したものです。

  • Notations −コネクタ、記号、メモなど、図で連携して機能する要素で構成されています。

クラスのUML表記の例

インスタンス図-UML表記

オブジェクトに対して実行される操作

オブジェクトに対して次の操作が実行されます-

  • Constructor/Destructor−クラスの新しいインスタンスを作成し、クラスの既存のインスタンスを削除します。たとえば、新しい従業員を追加します。

  • Query−値を変更せずに状態にアクセスしても、副作用はありません。たとえば、特定の従業員の住所を検索します。

  • Update − 1つ以上の属性の値を変更し、オブジェクトの状態に影響を与えます。たとえば、従業員の住所を変更します。

UMLの使用

UMLは次の目的に非常に役立ちます-

  • ビジネスプロセスのモデリング
  • システムアーキテクチャの説明
  • アプリケーション構造を表示する
  • システムの動作をキャプチャする
  • データ構造のモデリング
  • システムの詳細仕様の構築
  • アイデアをスケッチする
  • プログラムコードの生成

静的モデル

静的モデルは、システムの構造特性を示し、そのシステム構造を記述し、システムを構成する部分に重点を置いています。

  • これらは、クラス名、属性、メソッド、署名、およびパッケージを定義するために使用されます。

  • 静的モデルを表すUMLダイアグラムには、クラスダイアグラム、オブジェクトダイアグラム、およびユースケースダイアグラムが含まれます。

動的モデル

動的モデルは、システムの動作特性、つまり、外部イベントに応答してシステムがどのように動作するかを示します。

  • 動的モデルは、必要なオブジェクトと、メソッドとメッセージを介してそれらがどのように連携するかを識別します。

  • これらは、システムのロジックと動作を設計するために使用されます。

  • UMLダイアグラムは、シーケンスダイアグラム、通信ダイアグラム、状態ダイアグラム、アクティビティダイアグラムを含む動的モデルを表します。

オブジェクト指向システム開発ライフサイクル

これは3つのマクロプロセスで構成されています-

  • オブジェクト指向分析(OOA)
  • オブジェクト指向設計(OOD)
  • オブジェクト指向実装(OOI)

オブジェクト指向システム開発活動

オブジェクト指向システムの開発には、次の段階が含まれます。

  • オブジェクト指向分析
  • オブジェクト指向設計
  • Prototyping
  • Implementation
  • インクリメンタルテスト

オブジェクト指向分析

このフェーズは、システム要件を決定し、システム要件を理解して構築することに関係します。 use-case model。ユースケースは、ユーザーとコンピューターシステム間の相互作用を説明するシナリオです。このモデルは、システムのユーザーニーズまたはユーザービューを表します。

また、アプリケーションを構成する、問題のあるドメイン内の他のクラスとのクラスおよびそれらの関係を識別することも含まれます。

オブジェクト指向設計

このフェーズの目的は、分析フェーズ、ユーザーインターフェイス、およびデータアクセス中に識別されるクラス、属性、メソッド、および構造を設計および改良することです。このフェーズでは、要件の実装をサポートする追加のクラスまたはオブジェクトも識別および定義します。

プロトタイピング

プロトタイピングにより、システムの一部の機能を実装することがどれほど簡単か難しいかを完全に理解できます。

また、ユーザーがデザインの使いやすさと有用性についてコメントする機会を与えることもできます。さらにユースケースを定義し、ユースケースモデリングをはるかに簡単にすることができます。

実装

コンポーネントベース開発(CBD)またはRapid Application Development(RAD)のいずれかを使用します。

コンポーネントベースの開発(CBD)

CODDは、CASEツールなどのさまざまなテクノロジを使用したソフトウェア開発プロセスへの工業化されたアプローチです。アプリケーション開発は、カスタム開発から、相互に動作する事前構築済み、事前テスト済み、再利用可能なソフトウェアコンポーネントのアセンブリに移行します。CBD開発者は、コンポーネントを組み立てて完全なソフトウェアシステムを構築できます。

迅速なアプリケーション開発(RAD)

RADは、従来の方法で通常可能であるよりも速くアプリケーションを構築するために使用できるツールと手法のセットです。SDLCに置き換わるものではありませんが、プロセスの説明に重点を置き、オブジェクト指向アプローチと完全に組み合わせることができるため、SDLCを補完します。

そのタスクは、Visual Basic、Power Builderなどのツールを使用して、アプリケーションを迅速かつ段階的に実装することです。

インクリメンタルテスト

ソフトウェア開発とテストを含むそのすべての活動は、反復的なプロセスです。したがって、製品が完全に開発された後でのみテストを待つと、コストがかかる可能性があります。ここで、製品が開発のさまざまな段階でテストされる増分テストが明らかになります。