オブジェクト=データ(属性)とそれに対するメソッド(手続き)をひとつにまとめた概念
カプセル化とは
データやメソッドという複数の要素たちを1つの構造にまとめたものをカプセルと呼ぶ。
カプセル化の利点:どんなふうに管理されているかなど外部から見ることができない=情報隠蔽
クラスとインスタンス
- クラス:オブジェクトが持つ性質を定義したもの。オブジェクトの設計図
- インスタンス:具体的な属性値を与え、メモリ上に生成してポコリと一体化させたもの
クラスには階層構造がある
クラスの考え方の基本は「オブジェクトを抽象化して定義する」こと。ボタンであれば「ボタンというオブジェクト」を抽象化して定義することが基本
上位クラスと下位クラスという考え方がある
- 下位は上位の特性を受け継ぐので、下位クラスは上位との差分だけを作りこめばいい
- 上位クラスをスーパークラス(基底クラス)、下位クラスをサブクラス(派生クラス)という
- サブクラスがスーパークラスの特性を受け継ぐことを継承という
汎化と特化(is a 関係)
- 汎化:下位クラスが持つ共通の性質を、抽出して上位クラスとして定義する
- 特化は汎化の逆
集約と分解
継承関係のない上位クラスと下位クラスの関係を指す。
下位クラスは上位クラスの性質を分解して定義したもので、上位クラスは複数の下位クラスを集約して定義したもの。
多態性(ポリモーフィズム)
同じメッセージを複数のオブジェクトに送ると、それぞれが独立した固有の処理を行う。これを多態性という