16.

オブジェクト指向言語共通

編集

本稿はオブジェクト指向言語の共通事項に関する記事です。

オブジェクト指向とは、継承とは、等々。Java / PHP / C# / Python / C++ など多くの言語に共通する考え方を整理しています。

子ページから項目を選択してください。

本ページの子ページ一覧

項目概要
オブジェクト指向の概念クラスとインスタンス、状態と振る舞いの分離
継承の概念と必要性共通機能の再利用、is-a 関係
ポリモーフィズム(多様性)の概念と必要性同じ呼び出しが型ごとに異なる振る舞い
抽象クラスの概念と必要性共通骨格を定義し、具象は子に任せる
インターフェースの概念と必要性実装を強制する型契約
カプセル化の概念と必要性内部状態を隠蔽し、外部からの操作を制限

オブジェクト指向の3大要素

要素意味使う目的
カプセル化データと操作をクラス内に閉じ込め、外部からは限定された方法でのみ操作可能にする不整合な内部状態を防ぐ
継承既存クラスを土台に新しいクラスを定義する共通機能の再利用、共通インターフェース化
ポリモーフィズム同じインターフェースで異なる実装を呼び分ける呼び出し側の変更なしに振る舞いを差し替え可能

関連する概念

  • クラス: 設計図。属性(フィールド)と振る舞い(メソッド)を持つ
  • インスタンス: クラスを実体化したもの
  • コンストラクタ: インスタンス生成時に呼ばれる初期化メソッド
  • 抽象クラス: インスタンス化できず、継承前提のクラス
  • インターフェース: 実装すべきメソッドの契約
  • アクセス修飾子: public / protected / private による可視性制御
  • オーバーライド: 親クラスのメソッドを子クラスで再定義
  • オーバーロード: 同名メソッドを引数違いで複数定義(言語によって対応/非対応)

SOLID原則

オブジェクト指向で品質の高い設計をするためのガイドラインです。

原則意味
S Single Responsibilityクラスは1つの責任だけ持つ
O Open/Closed拡張に開き、修正に閉じる
L Liskov Substitution派生型は基底型と置き換え可能
I Interface Segregation不要なメソッドを持たない小さいインターフェースに分ける
D Dependency Inversion具象ではなく抽象に依存する

関連

編集
Post Share
子ページ
  1. オブジェクト指向の概念
  2. 継承の概念と必要性
  3. ポリモーフィズム(多様性)の概念と必要性
  4. 抽象クラスの概念と必要性
  5. インターフェースの概念と必要性
  6. カプセル化の概念と必要性
同階層のページ
  1. Java
  2. PHP
  3. Python
  4. C#
  5. C++
  6. Ruby
  7. Go
  8. HTML
  9. CSS
  10. JavaScript
  11. TypeScript
  12. VBA
  13. Google Apps Script
  14. Julia
  15. Swift
  16. オブジェクト指向言語共通
  17. Gen