#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