13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【オブジェクト指向 / ざっくり】委譲とは?

Posted at

##どんな記事?

  • 新人エンジニアのサクッとアウトプット記事
  • 具体的な内容(コード)というよりは図解で"ざっくり"理解するのが目的

##オブジェクト指向とは
閲覧されている方は既知の内容だとは思いますが一応おさらい

  • プログラミングにオブジェクトという概念を持ち込んだ考え方。
  • オブジェクトは一般的にクラスで定義。
  • クラス内でそのオブジェクト関する変数やメソッドを定義する。
  • クラスはオブジェクトの設計図。それを元に実体化させたものがインスタンス
  • クラスの定義を引き継いでさらに機能を拡張することを継承という。

##委譲とは

  • あるクラスの一部のふるまいを別のオブジェクトに代替させること。
  • 既存のクラスのふるまいを他のクラスで使いたいときに使う
  • 委譲先のクラスで委譲元のクラスをインスタンスとして定義する
    image.png

##継承との違い
継承は親クラスの内容をすべて引き継ぎ、委譲は委譲元の振る舞いを一部引き継ぐ

継承

image.png
定義の拡張という意味合いが強い

使い分け

  • 継承はふるまいを拡張したい時
    • 例:”クルマ”クラスを親として”電気自動車”クラスを作って"充電"というふるまいを拡張する
  • 委譲は役割を分けて委ねたい
    • 単一責任の原則(一つのクラスに二つ以上の役割があってはならない)を満たして保守性を上げる
      • 例:ユーザーを表現する"User"クラスにその情報をDBに保存するビジネスロジックはあってはならない
    • 元クラスと同じ分類だが役割が違う場合に使う。
      • (同じユーザーを扱うクラスでも値の表現するクラスと保存するクラスは違うロジック)
13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?