オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」

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

C++ 基礎. 目次 C++ とは? C++ におけるオブジェクト指向 課題 C++ とは? Cには足りなかったものが付与されて出来た物 具体的には、 情報の隠蔽(カプセル化) 共通の名前付け(関数のオーバーロード) 再利用の仕組み クラスの導入 など オブジェクト指向 C++ では大規模なプログラミングの.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
アルゴリズムとプログラミング (Algorithms and Programming)
第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」
アルゴリズムとデータ構造1 2007年6月12日
情報伝播によるオブジェクト指向プログラム理解支援の提案
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
3-3 クラス図の関係その2.
ソフトウエアの再利用 オブジェクト指向プログラミング サンテクノ㈱技術3課 清水利弘.
プログラミングIII演習 第1回目.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
その他の図 Chapter 7.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
図書館職員のための アプリケーション開発講習会
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
ソフトウェア制作論 平成30年11月21日.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
1-3 UMLの図(ダイアグラム) コンポーネント図 システムの物理的な構成を表現 ソフトウェアコンポーネントの依存性を表現
UMLの概要とオブジェクト指向の基本概念
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
モグラたたき.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
情報処理Ⅱ 2007年12月3日(月) その1.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
C#プログラミング実習 第1回.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」 第三回 ソフトウエアの再利用 オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」

オブジェクト指向プログラミング OOPが持つ構造化言語にはない3つの仕組み それは、 「クラス」「ポリモーフィズム」「継承」の3つ   OOPの三大要素

オブジェクト指向プログラミング 三大要素1-クラスに備わる3つの仕組み クラスは「まとめて、隠して、たくさん作る」仕組み 1)サブルーチンと変数を「まとめる」 2)クラスの内部だけで使う変数やサブルーチンを     「隠す」 3)1つのクラスからインスタンスを「たくさん作る」

オブジェクト指向プログラミング 三大要素2-呼び出し側を共通化するポリモーフィズム ポリモーフィズムは、「いろいろな形に変わる」と言った意味をもつ。日本語では、「多態性」「多相性」などと訳す。

オブジェクト指向プログラミング 共通サブルーチン 呼び出す側A 呼び出す側A 呼び出す側A 呼び出す側が増えても、呼び出される側を修正する必要ばない 呼び出される側 ポリモーフィズム 呼び出す側 呼び出される側X 呼び出される側Y 呼び出される側Z 呼び出される側が増えても、呼び出す側を修正する必要がない。

オブジェクト指向プログラミング OOPの三大要素2-ポリモーフィズム ポリモーフィズムはサブルーチンを呼び出す側のロジックを一本化する仕組み、すなわち「共通メインルーチン」を作る仕組みである。

オブジェクト指向プログラミング 三大要素3-クラス定義の重複を排除する継承 継承は、「似たもの同士のクラスの共通点と相違点を整理する仕組み」 集合論の全体集合と部分集合に相当する。

オブジェクト指向プログラミング サブクラスは「継承する」と宣言するだけで、スーパークラスの変数とメソッドをすべて定義したことになる。 サブクラスA サブクラスB サブクラスC スーパークラスの 変数+メソッド スーパークラスの 変数+メソッド スーパークラスの 変数+メソッド サブクラスA 固有の 変数+メソッド サブクラスB固有の 変数+メソッド サブクラスC固有の 変数+メソッド サブクラスは「継承する」と宣言するだけで、スーパークラスの変数とメソッドをすべて定義したことになる。

オブジェクト指向プログラミング 継承関係にあるサブクラスは、すべてスーパークラスと同じ方法で呼び出すことができる。 呼び出す側 継承する 継承する 継承する サブクラスA サブクラスB サブクラスC スーパークラスの 変数+メソッド スーパークラスの 変数+メソッド スーパークラスの 変数+メソッド サブクラスA 固有の 変数+メソッド サブクラスB固有の 変数+メソッド サブクラスC固有の 変数+メソッド

オブジェクト指向プログラミング OOPの三大要素3-継承 継承は、クラス定義の共通部分を別クラスにまとめることで、コードの重複を排除する仕組みである。

オブジェクト指向プログラミング 三大要素のまとめ 三大要素 クラス ポリモーフィズム 継承 説明 サブルーチンと変数をまとめてソフトウエア部品を作る メソッドを呼び出す側を共通化する 重複するクラス定義を共通化する 目的 整理整頓 無駄を省く 覚え方 まとめて、隠して、たくさん作る仕組み 共通メインルーチンを作る仕組み クラスの共通部分を別クラスにまとめる仕組み

オブジェクト指向プログラミング 進化したOOPの仕組み1-パッケージ パッケージ パッケージ パッケージ クラス クラス クラス クラス

オブジェクト指向プログラミング 進化したOOPの仕組み2-例外 エラーコード方式によるエラー処理の連鎖 問題点1 エラーコードの判定ロジックを書き忘れても、コンパイル段階でチェックされない。 A.エラーコードを判定し、後処理を行う サブルーチンA ④エラーコードを リターンする ①呼び出す B.エラーコードを判定し、後処理を行う サブルーチンB 問題点2 エラーコードの判定ロジックが複数のサブルーチンに連鎖する。 ③エラーコードを リターンする ②呼び出す サブルーチンC エラーを検出

オブジェクト指向プログラミング 例外の仕組みを利用したエラー処理 メリット1 A.例外の内容に応じて後処理を行う 例外の宣言や後処理を書き忘れた場合、コンパイル段階でチェックされる。 A.例外の内容に応じて後処理を行う サブルーチンA ①呼び出す ④例外をそのまま伝える B.例外が発生する可  能性があることを   宣言する サブルーチンB メリット2 後処理の必要がないメソッドでは例外の宣言だけをしておけばよい。 ②呼び出す ③例外を発生させる サブルーチンC エラーを検出 エラーを検出

オブジェクト指向プログラミング 進化したOOPの仕組み3-ガベージコレクション ガベージコレクタは不要なインスタンスをメモリから削除 インスタンスB インスタンスA インスタンスC インスタンスE インスタンスB ガベージコレクションの実行 インスタンスC インスタンスD インスタンスE

オブジェクト指向プログラミング OOPの進化のまとめ 高級言語までの進化 構造化言語における進化 OOPにおける進化 生産性向上 命令を簡単に表現するための進化 命令の「高級化」による表現力の向上 保守性向上 まとめる仕組みとしてのクラスパッケージ プログラムをわかりやすくするための進化 基本三構造 品質性向上 例外、ガベージコレクション、型チェックの強化、言語仕様の退化 制約をつけて複雑さを避けるため進化 GOTOレスプログラミング 再利用促進 重複ロジックを排除して、部品化と再利用を促進するための進化 クラスによる部品化、ポリモーフィズム、継承 サブルーチンの独立性強化 サブルーチン