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

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 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
オブジェクト指向プログラミング(4) 静的分析(2)
Javaのための暗黙的に型定義される構造体
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
データ構造とアルゴリズム 第10回 mallocとfree
アルゴリズムとデータ構造1 2007年6月12日
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
UMLの概要と オブジェクト指向の 基本概念
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
第11週:super/subクラス、継承性、メソッド再定義
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
コンパイラ 2012年11月15日
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第7回放送授業.
第8回放送授業.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向プログラミング クラス 継承
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

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

構造化指向の限界 なぜ構造化指向では駄目なのか? 作成するソフトウェアが変わってきた. より短期間での開発が要求されるようになってきた. CUIシステムからGUIシステムへ… より短期間での開発が要求されるようになってきた. そもそもシステム化の対象を関数(入出力)のみで構造化することに限界があった.

関数とオブジェクト(1/2) 関数とは… われわれの身の回りのモノは? 内部状態を持つ オブジェクトである 入力と出力で特徴付けられる. 同じ入力を与えれば必ず同じ結果が得られる. (内部状態を持たない.) われわれの身の回りのモノは? sin π/2 1 入力 出力 お金,ボタン ジュース,おつり 入力 出力 内部状態を持つ オブジェクトである 状態変化 状態参照 お金,ジュースのストック

関数とオブジェクト(2/2) オブジェクトとは… 内部状態(つまりデータ)を持つ. 入力を与えれば出力が返ってくるが,その際内部状態が更新されたり内部状態が出力値に影響を与える(関数とは呼ばず操作と呼ぶ). オブジェクトとは,データと操作を一体化(カプセル化)したもの. 一般に一種類のオブジェクトに対して複数の操作を定義することができる. 自動販売機オブジェクトでは,購入,返却,商品補充など. ちなみに,構造化指向では内部状態は,グローバル変数,ポインタ引数,静的変数などで表現されていた.

カプセル化と情報隠蔽 構造化指向では関数内の処理内容が情報隠蔽されていた. オブジェクト指向では操作の処理内容に加え,内部状態もカプセル化されて情報隠蔽される. オブジェクトにメッセージを送れば,内部で適当に処理してくれるイメージ. オブジェクトA 操作1の呼び出し (メッセージ) 操作1 内部データ 操作2の呼び出し (メッセージ) 操作2

オブジェクト指向パラダイムとは オブジェクト指向言語の発展に伴って形成されてきたソフトウェア開発上の概念.オブジェクト指向分析,オブジェクト指向設計など,プログラミング以外の工程でも用いられる. ソフトウェアを処理や関数ではなくオブジェクトに分解する. オブジェクト指向プログラミングの構成概念は3つ カプセル化(encapsulation,抽象データ型) 継承(inheritance) 多相性(ポリモルフィズム,polymorphism)

オブジェクトの実例 Windowシステムが好例 Windowオブジェクト スライドオブジェクト 矩形オブジェクト 線分オブジェクト 円オブジェクト ツールバーオブジェクト

メッセージの例 閉じよ 最小化せよ 移動せよ サイズ変更せよ 削除せよ 移動せよ サイズ変更せよ

クラスとインスタンス カプセル化についてもう少し詳しく見ていこう. 同型の自動販売機がたくさんあった場合でも,操作の種類や内容,どのような内部状態を持つか(お金とジュースのストックを内部状態として持つ)はすべて同じ. 一方,実際の内部状態は個々の自動販売機によって異なる. モノの種別,内部状態(データ構造)や操作内容の定義→クラス 個々のモノ,内部状態が異なる個体→インスタンス(オブジェクト) ...

クラスと抽象データ型 クラスとインスタンスの関係は,型と変数の関係に等しい. 型 変数 int x; 構造体 構造体変数 実行時にメモリ上に確保される. いくつでも宣言できる. 型 変数 int x; 構造体 構造体変数 struct List l; クラス インスタンス Circle c;

Javaにおけるオブジェクト指向(1) 操作はメソッドと呼ばれる.内部状態はフィールドとして定義. クラス定義の例: クラス名 class Circle { double radius; // 半径 double x; // 中心座標のx成分 double y; // 中心座標のy成分 int color; // 色 void move(double px, double py) { x = px; y = py; } void resize(double scale) { radius = radius * scale; フィールド定義 (インスタンス変数) メソッド定義

Javaにおけるオブジェクト指向(2) インスタンスの生成,利用 Circle c = new Circle(); c.move(100,50); c.color = 255; Circleクラスの インスタンスの生成 moveメソッド呼び出し Circle クラス フィールド(メンバ)へのアクセス new で生成 インスタンス c move()メソッドの呼び出し

なぜカプセル化をするのか 対象領域上の概念と対応付けられるので理解し易い. より大きな単位でまとめられるので再利用し易い. ただし適切なクラス名をつける必要がある. より大きな単位でまとめられるので再利用し易い. カプセル化されていれば,そのデータ構造とそれに対する処理をまとめて持っていける. データ構造などの変更に対して強い. 隠蔽されているデータの構造の変更に伴ってそれに対する処理のアルゴリズムが変わっても,メソッド群のインタフェースさえ変わらなければ,使う側には影響が及ばない. move() jump() Player オブジェクト setHP() getHP()