オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
8-4 Google マップの利用 1.地図を表示 ( エミュレータでも可能 ) Android API キーを取得しておくこと。 【 AndroidManifest.xml 】 ・・・
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
Copyright by Rich & Giro
プログラミング基礎I(再) 山元進.
創造工学設計I 電子情報工学科4年(前期) 8回目 (04/6/2015) 担当 古山彰一 ac
Applet 岡部 祐典 鈴木 敬幸.
プログラミング基礎I(再) 山元進.
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
オブジェクト指向入門.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
第6回 2007年6月1日 応用Java (Java/XML).
ソフトウェア工学 知能情報学部 新田直也.
第11週:super/subクラス、継承性、メソッド再定義
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Collection, Generics, Iterator
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト・プログラミング 第8回.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第4回
ソフトウェア制作論 平成30年11月28日.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
7-3 サービスの連携 1.サービスとは 画面を持たずに処理を行う【AndroidManifest.xmlへの追加】 …
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
5-6 SurfaceView による高速描画 (1)SurfaceViewを使う A. SurfaceView とは
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也

オブジェクト指向言語の基本概念 カプセル化 継承 多相性(ポリモルフィズム) データ構造とアルゴリズムの一体化 ⇒ クラス フィールドとメソッド クラスとインスタンス 継承 多相性(ポリモルフィズム)

多相性の利点(1/3) 異なる型のインスタンスをまとめて処理できる. public static void main(String[] args) { Person p[] = new Person[3]; p[0] = new 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型の配列 を宣言 同じ実行文で異なる型を処理できる (見た目の型は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アプリを作ってみよう!! ファイル -> 新規 -> アンドロイドアプリケーションプロジェクト(Android Application Project)で,Androidアプリのプロジェクトを作成.(ADTがEclipseにインストールされている必要.)

Androidアプリの開発(2/4) アプリ名を入力する(今回は,HelloAndroidに). Minimum Required SDKを API 14 に. 以降,最後のアクティビティ名(Activity Name)の入力欄以外はすべてデフォルトで. アクティビティ名を MyActivity にする.

Androidアプリの開発(3/4) アプリのメイン画面のレイアウトの変更. メイン画面のレイアウトファイルを開く. メイン画面にテキストビューを配置する.(配置されているテキストビューを編集する.)

Androidアプリの開発(4/4) プロジェクトのルートを選択して実行する.

Androidフレームワークにおける 多相性(1/3) src の中の MyActivity.java を開いてみる. MyActivityはActivityを再利用(拡張)して作成した,このアプリ固有のクラスである. このアプリのメイン画面を表すクラス アプリの画面を表すフレームワーク側のクラス public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); } :

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);

まとめ オブジェクト指向技術をうまく使えば再利用性を最大限に高めるができる. ただし,プログラムの構造を上手に設計しなければ再利用性を高めることはできない. 再利用において最も鍵となるのが多相性. アプリケーションフレームワークは多相性を用いて再利用性を高めている. 習うより馴れよ. とにかくプログラミングに挑戦してみよう!!