プログラム再構成に関する 特許申請について
Download
Report
Transcript プログラム再構成に関する 特許申請について
ソフトウェア工学
理工学部
情報システム工学科
新田直也
オブジェクト指向パラダイムとは
オブジェクト指向言語の発展に伴って形成されてき
たソフトウェア開発上の概念.オブジェクト指向分析,
オブジェクト指向設計など,プログラミング以外の工
程でも用いられる.
ソフトウェアを処理や関数ではなくオブジェクトに分
解する.
オブジェクト指向の構成概念は3つ
カプセル化(encapsulation,抽象データ型)
継承(inheritance)
多相性(ポリモルフィズム,polymorphism)
カプセル化のイメージ
オブジェクト内でデータとその操作(メソッド)がカプセル化さ
れている.
オブジェクトにメッセージを送れば,内部で適当に処理してく
れる.
メソッド1の呼び出し
(メッセージ)
オブジェクトA
メソッド1
メソッド2の呼び出し
(メッセージ)
内部データ
メソッド2
オブジェクトの例
Windowシステムが好例
Windowオブジェクト
スライドオブジェクト
矩形オブジェクト
線分オブジェクト
円オブジェクト
ツールバーオブジェクト
メッセージの例
閉じよ
最小化せよ
移動せよ
サイズ変更せよ
削除せよ
移動せよ
サイズ変更せよ
クラスとインスタンス
同じデータ構造を持つものがたくさんある場合.
データ構造やメソッドの定義→クラス
定義に基づく1つ1つの個体→インスタンス(オブジェクト)
データ
サイズ変更
円クラス
円インスタンス
サイズ変更
円
インスタンス
移動
半径
中心座標
色
移動
サイズ変更
円インスタンス
移動
サイズ変更
円インスタンス
移動
クラスと抽象データ型
クラスとインスタンスの関係は,型と変数の関係に
等しい.
型
変数
int x;
構造体
構造体変数
struct List l;
クラス
インスタンス
Circle c;
Javaにおけるオブジェクト指向(1)
クラスの定義
クラス名
class Circle {
double radius;
double x;
double y;
int color;
// 半径
// x座標
// y座標
// 色
フィールド定義,
メンバ定義
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()メソッドの呼び出し
なぜカプセル化をするのか
データを中心に処理をまとめると理解し易い.
一緒にまとめられている処理を眺めるだけでほぼ動作を理
解することができる.
delete(順番)
add(要素)
List
オブジェクト
get(順番)
size()
データを中心に処理をまとめると再利用し易い.
あるデータ構造を別の場所でも使いたい場合,カプセル化
されていれば,そのデータ構造に対する処理も一緒につい
てくる.
データ構造の変更に対して強い.
隠蔽しているデータの構造が変わっても,メソッド群(インタ
フェース)さえ変わらなければ,使う側には影響が及ばない.