CTS-KB

オブジェクト指向

おぶじぇくとしこう

OOP Object-Oriented Programming オブジェクト指向プログラミング
#設計原則 #オブジェクト指向 #パラダイム

データと振る舞いを「オブジェクト」として一体化し、カプセル化・継承・ポリモーフィズムを核に設計するプログラミングパラダイム。Alan Kay が Smalltalk で体系化した。

概要

手続き型が「処理の手順」を中心に書くのに対し、オブジェクト指向は 「誰が何の責務を持つか」 を中心に書く。データ構造とそれを操作するロジックを 1 つのクラスに閉じ込め、外からは公開された振る舞いだけを通じて利用させる。

3 つの基本概念

概念説明
カプセル化データと操作を 1 つにまとめ、内部状態を隠蔽するAccount クラスが残高を private に持ち、withdraw() 経由でしか変更できない
継承既存クラスの責務を引き継ぎつつ拡張するSavingsAccount extends Account
ポリモーフィズム同じインターフェースで異なる実装を切り替えるPaymentMethod を実装した CreditCard / BankTransfer

なぜ階層分離が必要なのか

オブジェクト指向の真価は「クラスの数」ではなく 責務の分離にある。ドメインロジック・アプリケーション制御・インフラアクセス・UI を別レイヤーに配置することで、変更理由ごとにコードが孤立し、AI 生成コードの修正範囲も予測可能になる。

レイヤー責務変更頻度
ドメイン層ビジネスルール低(仕様変更時のみ)
アプリケーション層ユースケース調整
インフラストラクチャー層DB・外部 API高(基盤交換時)
インターフェース層UI・REST 入口

レガシーシステムとの関係

COBOL や RPG は手続き型だが、サービスプログラム(*SRVPGM)コピーブックで「責務の単位」を切り出す運用は、オブジェクト指向の発想を先取りしている。モダナイゼーション時にはこの単位がそのままクラス・サービスの境界候補になる。

マルチモール EC での適用イメージ

CTS-EC 共通商品マスタSource → Master → Mall という 3 層構成は、責務分離をドメイン境界として表現した例。Source 層は外部システムからの取り込み、Master 層は共通マスタへの正規化、Mall 層はモール固有フォーマットへの変換、と層ごとに変更理由が独立している。各層の境界が明確だと、AI に「Mall 層に Amazon 用変換を追加して」と指示しても影響範囲が層内に収まり、レビューと回帰確認のコストが下がる。

関連記事

関連用語