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

Slides:



Advertisements
Similar presentations
1 C++ における OOP を用いた 書き方講座 H 山崎貴英. 2 今回の内容 OOP とは? C++ の超基礎 注釈 書いてあるコードはすべて一部抜粋。 コピペだと動かないよ!
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
復習ー I (General Review I) クラスとオブジェクトの概念 Concepts of class and object クラスの宣言とオブジェクトの生成 Definition of a class and creation of an object コンストラクタとメソッドのオーバーロー.
C++ 基礎. 目次 C++ とは? C++ におけるオブジェクト指向 課題 C++ とは? Cには足りなかったものが付与されて出来た物 具体的には、 情報の隠蔽(カプセル化) 共通の名前付け(関数のオーバーロード) 再利用の仕組み クラスの導入 など オブジェクト指向 C++ では大規模なプログラミングの.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
プログラミング基礎I(再) 山元進.
アルゴリズムとデータ構造1 2007年6月12日
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
プログラミング演習3 第2回 GUIの復習.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
JAVA入門後期⑩ 情報処理試験例題解説.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
第11週:super/subクラス、継承性、メソッド再定義
Nakano School of Business 経営情報ビジネス科 【 Java概論(Test5)】
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
もっと詳しくArrayクラスについて調べるには → キーワード検索
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
第7回放送授業.
第8回放送授業.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
ソフトウェア制作論 平成30年11月28日.
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門)
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

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

汎化と特化(1) 互いに「似ている」クラスがある. 円クラス,矩形クラス,線分クラス フレームクラス,ダイアログクラス

汎化と特化(2) 似ているクラスの共通部分を新たなクラスとして定義できる.(汎化) 円クラス,矩形クラス,線分クラス フレームクラス,ダイアログクラス 「図形クラス」 「ウィンドウ  クラス」

汎化と特化(3) 共通部分を使って個別のクラスを定義することを特化という.(汎化の逆) 特化してできたクラスを子クラス,元のクラスを親クラスと呼ぶ.また,子クラスが親クラスの性質を受け継ぐことを継承と呼ぶ. 図形クラス 親クラス 汎化 特化 矩形クラス 子クラス(派生クラス)

汎化と特化(4) 親クラスの性質を継承できるので,子クラス側にはそのクラス固有の部分だけを定義すればよい.(差分プログラミング,実装の継承) 図形クラス 共通部分 図形クラス 図形クラス 図形クラス 円クラス 矩形クラス 線分クラス

Javaにおける継承 クラス定義でextendsキーワードを使う. (Shapeクラスを継承してCircleクラスを定義する例) class Shape { int color; : } class Circle extends Shape { double radius; // 半径 double x; // x座標 double y; // y座標 void move(double px, double py) { Shape 親クラス名 Circle int color; は定義しなくてもよい.

メソッドのオーバーライド 子クラスで親クラスと同名のメソッドを定義したときは,メソッドの定義が上書きされる.(オーバーライド) class Circle extends Shape { double radius; : void resize(double scale) { radius = radius * scale; } class Ellipse extends Circle { double radius2; radius2 = radius2 * scale; Shape Circle Ellipse

抽象クラス,抽象メソッド インスタンス化できないクラスを抽象クラスという. プロトタイプだけで本体が定義されていないメソッドを抽象メソッドという. 抽象メソッドを1つでも持つクラスは抽象クラスとして定義しなければならない. 子クラスで抽象メソッドをオーバーライドしなければ使えない. abstract class Shape { int color; abstract void move(double px, double py); abstract void resize(double scale); }

説明を省略したJavaの機能 コンストラクタとnew演算子 アクセス修飾子 this演算子,super演算子 static修飾子 public, protected, private this演算子,super演算子 static修飾子 メソッドのオーバーロード

継承に関する注意 円クラスと楕円クラスはどちらが親か? 技術者の答え. 過剰な継承はむしろ弊害が多い. 答えは1つではない. 楕円は円を一般化した概念なので,楕円クラスの方が親? 円クラスの方がメンバが少ないので,円クラスの方が親? 技術者の答え. 楕円と円を同じクラスにする. 楕円クラスと円クラスを兄弟にする. 過剰な継承はむしろ弊害が多い. 答えは1つではない. 実際にプログラミングしてみないとわからない. Shape Circle Ellipse

本日のまとめ オブジェクト指向(クラス指向)の基本概念: 汎化,特化の関係は対象領域上に存在する. カプセル化 継承 多相性 汎化,特化の関係は対象領域上に存在する. 継承は楽をするため(再利用して実装作業の重複を減らすため)にある. ただし,真に重要なのは実装の継承ではなくてインタフェースの継承(次回の多相性で用いる). 継承(というか設計全般)の妥当性は実際にプログラミング(実装)してみるまでわからない.