- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-08-21T10:22:07+09:00","ldap:pandora"," pandora")
* ''オブジェクト指向'' [#bf98c062]
#contents
* 用語 [#nd9efde2]
- カプセル化(中身の隠蔽)
データ構造の中身を隠蔽し、データ操作に必要な情報のみを外部に提供すること。
#highlighter(java,number){{
// x には 11が入る。
int x = sum( 5, 6);
}}
sum メソッドは、数値型の引数が2つあり、返り値に加算した値が返ってくる
→ データ操作に必要な情報
sum メソッドの中で、何をやっているかは知る必要はない。
→ データ構造の中身の隠蔽
- インヘリタンス(継承)
あるクラス(オブジェクト)があるクラス(オブジェクト)の特性を引き継ぐこと。
#highlighter(java,number){{
// Parent クラスの特性をChildクラスが引き継ぐ
public class Child extends Parent {
public Child() {
oyaMethod();
}
}
}}
Parentクラスにメソッド oyaMethodが定義されている場合、継承したChildクラスは
oyaMethodを定義しなくても、メソッドを使用することが出来る。
- ポリモーフィズム(多様性)
メッセージの送信側(メソッドの呼出側)とメッセージの受信側(メソッド側)が動的に決まること。
#highlighter(java,number){{
public class Chain {
String chainStr= null;
public Chain() {
chainStr = "";
}
// 引数違い①
public void addChain(String message) {
chainStr = chainStr + "string:" + message;
}
// 引数違い②
public void addChain(int message) {
chainStr = chainStr + "int:" + message;
}
// 引数違い③
public void addChain(double message) {
chainStr = chainStr + "double:" message;
}
}
public class user {
public main() {
Chain obj = new Obj();
// 同名メソッドで異なる引数を処理できる。
obj.addChain("AAAA");
obj.addChain(1);
obj.addChain(1.1);
}
}
}}
addChainメソッドは引数違いで、用意されており、どのaddChainメソッドを使うかは、
呼び出し元の引数で決定する。
※同名で、異なる引数を持つメソッドをオーバーロードの関係にあるメソッドという。
* 主なプログラミング言語 [#jdc4607d]
- smalltalk
- [[Java]]
- C++
- C#
- Objective-C