オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也 オブジェクト指向言語の基本概念 1. カプセル化 2. 3. データ構造とアルゴリズムの一体化 ⇒ クラス フィールドとメソッド クラスとインスタンス 継承 多相性(ポリモルフィズム) 多相性の利点(1/3) 異なる型のイ ンスタンスをま とめて処理でき る. public static void main(String[] args) { Person p[] = new Person[3]; p[0] = new Person(); Person型の配列 p[1] = new Student(); を宣言 p[2] = new Teacher(); goToLectureTogether(p, "オブジェクト指向プログラミング"); } public static void goToLectureTogether( Person p[], String lecture) { for (int n = 0; n < p.length; n++) { p[n].goToLecture(lecture); } } 同じ実行文で異なる型を処理できる (見た目の型はPerson) 多相性の利点(2/3) 新しい子クラス を作成して拡 張してみると… public class Staff extends Person { void goToLecture(String lecture) { System.out.println(lecture + "を見学する"); } } オーバーライド 多相性の利点(3/3) 新しいクラスを 追加してもプロ グラムの書き 換えを最小限 にできる. プログラムの書き 換えは不要! public static void main(String[] args) { Person p[] = new Person[4]; p[0] = new Person(); p[1] = new Student(); 新しいクラスの p[2] = new Teacher(); インスタンス p[3] = new Staff(); goToLectureTogether(p, "オブジェクト指向プログラミング"); } public static void goToLectureTogether( Person p[], String lecture) { for (int n = 0; n < p.length; n++) { p[n].goToLecture(lecture); } } アプリケーションフレームワーク オブジェクト指向技術(特に多相性)を応用して,ア プリケーションの骨組みを最大限再利用できるよう にした仕組み. 特定の分野内のさまざまなアプリケーションで再利 用できるように開発される. 多くの分野で開発され広く再利用されている. Webアプリ: Struts,Spring スマホアプリ: Android,Cocoa Touch ビッグデータ: Hadoop データベース(ORマッピング): Hibernate,iBatis Androidアプリの開発(1/4) まずAndroidアプリを作ってみよう!! 1. ファイル -> 新規 -> アンドロイドアプリケーション プロジェクト(Android Application Project)で, Androidアプリのプロジェクトを作成.(ADTが Eclipseにインストールされている必要.) Androidアプリの開発(2/4) 2. 3. 4. 5. アプリ名を入力する(今回は,HelloAndroidに). Minimum Required SDKを API 14 に. 以降,最後のアクティビティ名(Activity Name) の入力欄以外はすべてデフォルトで. アクティビティ名を MyActivity にする. Androidアプリの開発(3/4) 6. アプリのメイン画面のレイアウトの変更. ① メイン画面のレイアウトファイルを開く. ② メイン画面にテキストビューを配置する.(配置されてい るテキストビューを編集する.) Androidアプリの開発(4/4) 7. プロジェクトのルートを選択して実行する. Androidフレームワークにおける 多相性(1/3) src の中の MyActivity.java を開いてみる. このアプリのメイン画面を表すクラス public class MyActivity extends Activity { アプリの画面を表す フレームワーク側の クラス @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); } : MyActivityはActivityを再利用(拡張)して作成し た,このアプリ固有のクラスである. Androidフレームワークにおける 多相性(2/3) onCreate() メソッドは Activity クラスの onCreate() をオーバーライドして実装されている. フレームワーク側のActivityクラスの内部 public class Activity extends ContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener, ComponentCallbacks2, Window.OnWindowDismissedCallback { : protected void onCreate(@Nullable Bundle savedInstanceState) { : Androidフレームワークにおける 多相性(3/3) MyActivity クラスの onCreate() メソッドは,画面 が表示される直前に呼び出される. アプリ固有の画面の初期化処理はここで行う. MyActivity クラスの onCreate() メソッドは,多相 性を用いてフレームワーク側から呼び出されている. public class Instrumentation { : public void callActivityOnCreate(Activity activity, …) { : activity.performanceCreate(icicle); public class Activity extends ContextThemeWrapper : final void performCreate(Bundle icicle) { onCreate(icicle); まとめ オブジェクト指向技術をうまく使えば再利用性を最 大限に高めるができる. ただし,プログラムの構造を上手に設計しなければ 再利用性を高めることはできない. 再利用において最も鍵となるのが多相性. アプリケーションフレームワークは多相性を用いて 再利用性を高めている. 習うより馴れよ. とにかくプログラミングに挑戦してみよう!!
© Copyright 2024 ExpyDoc