プログラム再構成に関する 特許申請について

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()

データを中心に処理をまとめると再利用し易い.


あるデータ構造を別の場所でも使いたい場合,カプセル化
されていれば,そのデータ構造に対する処理も一緒につい
てくる.
データ構造の変更に対して強い.

隠蔽しているデータの構造が変わっても,メソッド群(インタ
フェース)さえ変わらなければ,使う側には影響が及ばない.