オブジェクト指向: 概要
概要
「データ」と「手続き」から成るクラスを用いたプログラミング技術。
(データ=インスタンス変数(メンバー変数)、手続き=メソッド)
(「オブジェクト指向:クラス」参照)
オブジェクト(=モノ)指向とは現実世界の事象をコンピューター上で表現する事で抽象化された分かりやすいプログラムを作る技術・・・ではなく、クラスをメモリ上に展開したインスタンス(≒オブジェクト)を中心に処理を考えるやり方。
ObjectOrientedPrograming
(そもそもオブジェクト指向言語SmallTalkにて最上位のクラスがObjectである為Object指向と呼ばれ始めたらしい)
前述の通り、クラスにはデータ、データに対する手続き(メソッド)が定義されており、
オブジェクト指向では、クラス内メソッドを実行する事=メッセージをやり取りする、と言う。
(=メッセージパッシング)
また、クラスにはカプセル化、継承等の仕組みが多くのプログラム言語の仕様として用意されており、これにより保守性、拡張性が高まる。
(日常の)抽象化
本来複雑なものごとを単純に考える事。
例
メーカー:~、~年製、型式~の電気鉄道に、~駅から~駅まで乗り、
御堂筋を南に徒歩で10分移動して会社に行く。
⇒(一言で言うと)電車通勤する
抽象化=細かい部分を無視して本質を捉える事。
(プログラムの)抽象化
例(1)
メモリアドレス:XXXX345454へ通勤時間:50分を格納する
⇒int tukinTime=50;
例(2)
メモリアドレス:XXXX345556へ引数:50を格納した上で、
メモリアドレス:XXXX345456のプログラムを実行する。
⇒関数~(50)を呼び出す
(オブジェクト指向の)抽象化
特化
既に定義されているクラスの一部を変更する事
(基本クラスを継承し、派生クラスに機能を追加・変更する)
(「オブジェクト指向:継承」参照)
汎化
機能を抽象化し、他のクラスが利用できる様に基本クラスを作成する事。
カプセル化
クラス内データ(フィールド)に外部から直接アクセスできなくする事。
うまくカプセル化する事でクラス内の仕様変更が外部に影響しにくくなり、
保守性、拡張性が高まる。
※クラスでなくてもこの仕様を持つ言語もあり。
カプセル化されたクラス内変数にアクセスするにはにはアクセサを用いる。
(「オブジェクト指向: プロパティ・メソッド/プロパティ」参照)
用語(言語等による使い分け)
学術的説明 | 一般的 | JAVA | .NET |
---|---|---|---|
基底クラス | 基底クラス 基本クラス 親クラス |
スーパークラス | 基本クラス |
派生クラス | 派生クラス 子クラス |
サブクラス | 派生クラス |
属性 アトリビュート |
インスタンス変数 メンバ変数 クラス変数 |
フィールド | フィールド |
手続き 振る舞い 操作 メッセージパッシング |
メソッド インスタンスメソッド メンバ関数 メンバメソッド クラスメソッド |
メソッド | メソッド |
アクセサ getアクセサ、setアクセサ |
getter、setter | プロパティ |