ソフトウェア工学 知能情報学部 新田直也.

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

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
社会人学習講座 「Javaプログラミング概論」
アルゴリズムとプログラミング (Algorithms and Programming)
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
社会人学習講座 「Javaプログラミング概論」
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
プログラミング演習3 第2回 GUIの復習.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
第6回 2007年6月1日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
プログラミング演習3 第2回 GUIの復習.
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十四回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Java における 先進的リフレクション技術
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
稚内北星学園大学 情報メディア学部 安藤 友晴
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

ソフトウェア工学 知能情報学部 新田直也

再利用の進化 オブジェクト指向は再利用のための技術. 構造化指向ではライブラリ単位で部品(呼び出される側)を再利用. オブジェクト指向ではフレームワーク単位で骨組み(呼び出し側)を再利用. アプリケーションA ライブラリ アプリケーションB アプリケーションA フレームワーク アプリケーションB

アプリケーションフレームワーク アプリケーションフレームワーク: 特定のドメイン(対象領域)向け. ドメイン内で共通に使える親クラス(抽象クラス)の集合. 主に呼び出し側を再利用. 多相性によってフレームワーク側からアプリケーション側が呼び出される(制御の反転). ハリウッドの原則:「俺に電話するな.必要ならこちらから電話する.」

制御の反転と多相性(1) abstract class FrameworkMain { FrameworkSub sub; void mainLoop() { // メインループ for (;;) { sub.proc(); // この呼び出しで制御が反転 } abstract class FrameworkSub { abstract void proc(); // アプリケーション毎の処理 フレームワーク側

制御の反転と多相性(2) class ApplicationMain extends FrameworkMain { void main() { sub = new ApplicationSub(); // 依存性の挿入 mainLoop(); } class ApplicationSub extends FrameworkSub { void proc() { // 制御の反転で呼び出される // アプリケーション固有の処理を行う アプリケーション側

フレームワークの例 PCアプリ スマホアプリ Webアプリ データベース ビッグデータ Swing, AWT, … Android SDK, iOS SDK, … Webアプリ Struts, Spring, Jersey, … データベース Hibernate, iBatis, … ビッグデータ Hadoop, …

Swingの場合(1) abstract class Component… { // GUI部品クラス MouseListener listener; void processMouseEvent(…) { // 共通の処理 : listener.mouseClicked(…); // 制御の反転の発生 } interface MouseListener … { // マウスイベント処理用 void mouseClicked(…); フレームワーク側

Swingの場合(2) class MyListener extends MouseListener … { void mouseClicked(…) { //制御の反転で呼び出される // アプリケーション毎のクリック時の動作 } アプリケーション側

Androidの場合 class Activity extends … { // 全アプリ共通の画面クラス void performCreate(…) { // 共通の処理 onCreate(…); // この呼び出しで制御が反転 } void onCreate(…) { class AppActivity extends Activity { // アプリ固有画面 void onCreate(…) { // 制御の反転で呼び出される // アプリ固有の画面初期化処理 } フレームワーク側 アプリケーション側

再利用の現状 フレームワークは一定の成果を生んでいる. ただし,最初から良いフレームワークを設計することは困難. たとえ良いフレームワークを開発できたとしても,開発者以外がそれをうまく再利用することは困難. 再利用の方法が複雑で開発者しかわからない. 適用可能範囲が微妙で開発者しかわからない.