【おぶじぇくとしこうせっけい】

オブジェクト指向設計 とは?

💡 「モノ」を主役にして、データと動きをセットで考える設計術
📌 このページのポイント
オブジェクト指向設計の三大原則 カプセル化 - name - age 非公開(private) + getName() + setAge() 公開(public) 中身を隠して 安全に操作 継承 動物 食べる() 寝る() 親クラス 食べる() 吠える() 食べる() 鳴く() 共通機能を受け継ぐ ポリモーフィズム 鳴け! ワン! ニャー! 同じ命令でも 振る舞いが変わる この3つを組み合わせて 変更に強い設計を目指す
オブジェクト指向設計のイメージ
ひよこ ひよこ

オブジェクト指向設計って何なの?

ペンギン先生 ペンギン先生

ソフトウェアを「オブジェクト」という単位で設計する方法だよ。オブジェクトはデータ(属性)と処理(メソッド)をセットにしたもの。たとえば「犬」オブジェクトなら、名前や年齢というデータと、吠える・走るという処理がセットになってるイメージだね

ひよこ ひよこ

カプセル化って何のこと?

ペンギン先生 ペンギン先生

オブジェクトの中身を外から直接いじれないようにすることだよ。テレビのリモコンと同じで、中の電子回路は触れないけどボタンで操作できるよね。プログラムでも「このデータはこのメソッドを通してだけ変更できる」とルールを決めることで、予期しないバグを防ぐんだ

ひよこ ひよこ

継承ってどういうこと?

ペンギン先生 ペンギン先生

親クラスの性質を子クラスが受け継ぐ仕組みだよ。「動物」クラスに「食べる」「寝る」を定義しておけば、「犬」クラスも「猫」クラスも自動的にその機能を持てるんだ。共通部分を何度も書かなくて済むから、コードの重複を減らせるよ

ひよこ ひよこ

ポリモーフィズムって難しそう...

ペンギン先生 ペンギン先生

同じ命令でもオブジェクトごとに違う動きをすることだよ。「鳴け」と命令したら犬は「ワン」、猫は「ニャー」と答える。プログラムでも同じメソッド名でクラスごとに処理を変えられるんだ。これのおかげで、新しい種類を追加しても既存のコードを変えなくて済むよ

ひよこ ひよこ

でもオブジェクト指向って最近批判されてない?

ペンギン先生 ペンギン先生

継承を使いすぎると複雑になる」という批判はあるね。最近は「継承より合成(コンポジション)を優先せよ」というのが主流だよ。GoやRustのように継承を持たない言語も増えてる。でもカプセル化ポリモーフィズムの考え方自体は今でもとても重要だよ

ひよこ ひよこ

良い設計にするコツはあるの?

ペンギン先生 ペンギン先生

SOLID原則を意識するのが近道だよ。特に「単一責任原則」(1クラス1責任)と「開放閉鎖原則」(拡張に開き、修正に閉じる)は基本中の基本。あとはデザインパターンを学ぶと、よくある設計課題の定石が身につくから、実務で迷ったときの引き出しが増えるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
オブジェクト指向設計」って出てきたら「データと処理をセットにしたオブジェクト中心の設計方法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Object-Oriented Design」 = オブジェクト指向の設計
💬 object(もの)を oriented(向いた・中心にした)design(設計)で、現実世界の「モノ」をそのままプログラムに落とし込む発想だよ
← 用語集にもどる