スポンサーリンク

【応用情報技術者試験】集約ー分解の関係

集約ー分解の関係とは、全体(上位クラス)が部分(下位クラス)で構成される「has-a」(〜を持っている)という関係を指し、オブジェクト指向設計における重要な概念で、「部分は全体の一部である (is-part-of)」という関係性(例:コンピュータはCPUやメモリで構成される)で表現され、コードの再利用性や保守性を高めるために、複雑なクラスをより単純なクラスに分解(集約)する手法です。 

画像参照:https://www.momoyama-usagi.com/entry/info-software06

集約

  • 概念: 関連する複数のオブジェクトを一つのまとまり(集約ルート)として管理する手法。
  • 特徴: 全体と部分の関係(例:コンピュータCPUメモリを「持っている」)で、has-a関係とも呼ばれます。
  • 目的: ビジネスルールとデータの整合性を維持し、複雑なシステムを管理しやすくする。 

分解

  • 概念: 集約とは逆に、一つの大きなクラスや機能を、より小さな、管理しやすい複数のクラスや機能に分割する(集約の逆)こと。
  • 特徴: 繰り返される部分を別のクラスに切り出すことで、コードの重複を防ぎ、凝集度を高め、結合度を下げる(疎結合化)効果がある。 

具体例

  • 集約自動車クラスがエンジンクラスやタイヤクラスのインスタンスをメンバー変数として持つ(自動車はエンジンを持っている)。
  • 分解注文管理システムという大きなクラスを、注文顧客商品といった小さなクラスに分解する。 

is-a関係(継承)との違い

  • 集約/分解(has-a): 部分と全体の関係(例:タイヤ持つ)。
  • 汎化/特化(is-a): 継承関係(例:動物一種である)。 

これらの関係を適切に設計することで、効率的で保守性の高いオブジェクト指向システムを構築できます。 

コメント