わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

オブジェクト指向を復習して,ルベーグ積分を連想する

オブジェクト指向を学んでいくと,私の場合,大学3年の後期に勉強した,ルベーグ積分を連想します.

ルベーグ積分を読みながら,特徴を挙げてみると:

  • それまでの積分(リーマン積分)で求められず,ルベーグ積分では求められるものがあります*1
  • 積分と極限操作の交換,すなわち「積分してから極限値を求める」と「関数の極限を求めてから積分する」の関係について,ルベーグ積分は,リーマン積分よりも緩い条件で交換可能となっています.
  • 学ぶには,リーマン積分の求め方とその限界(範囲内に不連続点が無限個あれば,求められない)だけでなく,無限集合の性質,特に加算無限集合について知っていることが前提となっています.

オブジェクト指向分析も,構造化分析などでの問題を解決するものとして注目されるようになりました*2
ただ,オブジェクト指向言語については,歴史的に,既存言語の問題を解決するというよりは,オブジェクトを中心に考えて記述できる言語を考案したという面のほうが強いですね.例えばオブジェクト指向プログラミングによると,Simulaができたのが1962年,構造化プログラミングが確立したのは1967年となっています.

さて,オブジェクト指向を学ぶ際に,ルベーグ積分での無限集合の性質に対応するものはあるかを考えてみます.
「設計方法論」…は,リーマン積分ルベーグ積分などでの「求積法」に対応する,目標に位置づけられるものですかね.様々な設計方法論の例となるのが,構造化分析や,オブジェクト指向分析ということで.
無限集合に対応するものは,「責務responsibility」ではないかと考えます.
手続き型言語でも,変数などで有効範囲に注目することで,デバッグを容易にする技法がありました.しかしこれは,プログラムが一つの動く実体というのが前提でした.
オブジェクト指向では,もちろん言語や処理系によりますが,理念としてはオブジェクト(インスタンス)が複数同時に存在します.それぞれのオブジェクトがどんな属性を持ち,何を受け取ればどのように振る舞うべきかを有機的に捕らえれば,そのクラスの責務となるわけです.

*1:学生のみなさんへ: このような「効果的な例」を示すのは,レポートや答案を書く際にも,自分のしている研究の有用性をアピールする際にも,重要です.ε-δも参照ください.

*2:ただし「構造化分析では対応できない」ような事例があったというよりは,構造化分析をいろいろな事例に適用していくと,「構造化分析では自然に分析・設計しにくい」という問題意識ができてきたのではないかと推測します.