• 検索結果がありません。

なおここから解説は リスコフ置換原則 に焦点を当てた解説ではなく 専門家が提案している色々な タイプ ( 型 ) 置換原理 の根底となる基本解説であることに留意してください まず 多くの専門家が提案している タイプ ( 型 ) 置換原理 のどれもが クラスのタイプ ( 型 ) の 属性の不変条 件

N/A
N/A
Protected

Academic year: 2021

シェア "なおここから解説は リスコフ置換原則 に焦点を当てた解説ではなく 専門家が提案している色々な タイプ ( 型 ) 置換原理 の根底となる基本解説であることに留意してください まず 多くの専門家が提案している タイプ ( 型 ) 置換原理 のどれもが クラスのタイプ ( 型 ) の 属性の不変条 件"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

第8回:『科学的モデリング』継承⑧~「タイプ(型)置換原理」と「論理状態空

間」

第8回の話題~「タイプ(型)置換原理」と「論理状態空間」

今回は継承関係をより科学的に理解するために「タイプ(型)置換原理(the principle of type substitution/type substitution principle)」自身の解説をします。 前回のコラムまでの解説において、継承関係を正しく理解し、活用するには「タイプ(型)置換原理」の理解と適用 が不可欠であることを強調してきました。そして、サンプルの継承関係のクラス図を用いて「タイプ(型)置換原理」 の適用も解説してきました。 今回は「タイプ(型)置換原理」をより良く理解するために基本的かつ重要事項であるタイプ(型)の「論理状態空 間」の解説を行います。「論理状態空間」による「タイプ(型)置換原理」の理解は、数学的に正確でありながら、同 時に直観的に分かり易いというメリットがあります。 そこで、今回のテーマは:  タイプ(型)の「タイプ(型)置換原理」と「論理状態空間」から継承関係を理解する です。

タイプ(型)置換原理の基本原理

第7回のコラムでは 、「タイプ (型)置換原理」とその代表例である「リスコフ置換原理 (Liskov substitution principle)」を紹介しました。 「リスコフ置換原理」は最も広く知られている「タイプ(型)置換原理」ですが、極めて厳しい(制約が大きい)「タ イプ(型)置換原理」です。 このように書くと:  なぜ、他の「タイプ(型)置換原理」よりも厳しい(制約が大きい)置換原理なのか?厳しい(制約が大きい)とはどういう事か? という疑問が生じます。この疑問を解消するには、まずは「タイプ(型)置換原理」についてもう少し色々なことを 理解する必要があります。 そこで今回は「タイプ(型)置換原理」の基本的な考え方を理解していきます。

(2)

なおここから解説は「リスコフ置換原則」に焦点を当てた解説ではなく、専門家が提案している色々な「タイプ(型) 置換原理」の根底となる基本解説であることに留意してください。 まず、多くの専門家が提案している「タイプ(型)置換原理」のどれもが、クラスのタイプ(型)の「属性の不変条 件」「クラス不変条件」「操作の事前条件」「操作の事後条件」に注意を払います。 さらにこの中でも最も基本となるのが、クラスの「属性の不変条件(制約)」と「クラス不変条件」です。 そこで、今回はクラスの「属性の不変条件」と「クラス不変条件」に焦点を当てて「タイプ(型)置換原理」を解説 していきます。

タイプ(型)の『論理状態空間』

【図8-1】には、クラス「自動車」とクラス「スポーツカー」およびクラス「トラック」が継承関係にあります。 スーパークラスであるクラス「自動車」に注意を向けると、特性(プロパティ)として3つの属性が定義されている ことが分かります【図8-2】。 (*今回のコラムは「属性の不変条件」と「クラス不変条件」に焦点を当てて解説するので、操作はクラス図から省略 しています)。 【図8-1】

(3)

【図8-2】 3つの属性の制約はその属性の値の有効範囲を指定していることが分かります。ここで、この3つの属性「速度」 「エンジン回転数」「走行距離」を【図8-3】に示すように次元軸で表現してみます。

速度

走行距離

エンジン回転数

300

10000

100000

0

0

0

【図8-3】

【図8-3】が示しているのはクラス「自動車」のタイプ(型)の「論理状態空間(logical state space)」と呼ばれる 論理状態空間を構成する各次元軸になります。逆に言えば、全ての次元軸を組み合わせるとクラス「自動車」のタイ プ(型)の「論理状態空間」が構成されます。

「論理状態空間」が意味することは、クラス「自動車」から生成されるオブジェクト(インスタンス)は、全てこの 「論理状態空間」の各次元軸の範囲内に収まるという事です。

(4)

別の表現をすれば、正当な値を持つクラス「自動車」のオブジェクト(インスタンス)の各属性の値は、この「論理 状態空間」の次元軸の範囲の外部に存在することはありえないということです【表8-1】。 科学的モデリング規則:クラスのタイプ(型)の『論理状態空間』を明確にせよクラスのタイプ(型)の全体の制約を「クラス不変条件」と呼ぶ「クラス不変条件」はクラスの全てのオブジェクト(インスタンス)が常に満たさなければならない制約である ① 「論理状態空間」は「クラス不変条件」で指定された「全ての状態の集合」を表現した空間である ② 「論理状態空間」を表現する各次元軸はオブジェクト(インスタンス)の値を指定する次元軸である 【表8-1】

『論理状態空間』の継承と「同型」「特殊化」「拡張」

「タイプ置換原理」は、この「論理状態空間」を用いて表現することが可能です。 下記【表8-2】の様になります。 科学的モデリング規則:サブタイプ(型)の論理状態空間はスーパータイプ(型)の『論理状態空間』内に含まれるサブタイプ「論理状態空間」は完全にスーパータイプの「論理状態空間」の中に含まれる必要がある 【表8-2】 【表8-2】から分かることは下記の2つ点です。  スーパータイプの「論理状態空間」は、サブタイプに継承される (サブタイプは何も再定義しなければスーパータイプと同じ論理状態空間を持つ)  スーパータイプの「論理状態空間」は、スーパータイプの「論理状態空間」よりも「同じ」あるか「小さい」必 要がある このことを少し詳しく見ていきます。 クラス「スポーツカー」は、独自の属性を追加していません。またスーパークラスのタイプ(型)の制約を再定義し ていません。このことからクラス「スポーツカー」のタイプ(型)は、スーパークラス「自動車」のタイプ(型)と「同 型」ですから、全く同じ「論理状態空間」であることは簡単に判断できます。 【図8-4】

(5)

一方、クラス「トラック」は、独自の属性「積載重量」を追加しています。またスーパークラスのタイプ(型)の属 性「速度」の制約を(速度>=0 && 速度<=150)と再定義しています。 このことからクラス「トラック」のタイプ(型)は、スーパークラス「自動車」のタイプ(型)を「特殊化」かつ「拡 張」していることが分かります。 クラス「トラック」の「論理状態空間」を【図8-6】に示します。 【図8-5】 【図8-6】を見るとクラス「トラック」の「論理状態空間」は、スーパークラス「自動車」のタイプ(型)を「特殊 化」した分だけ狭い空間になっていることが分かります。 ここで重要なことは、【表8-2】からの論理的帰結で、サブタイプによる「特殊化」は、制約を『強く(厳しく)す る』ことは可能ですが、『弱く(緩く)』することは不可能であるということです。

速度

走行距離

エンジン回転数

300

10000

100000

150

『特殊化』されたクラス 「トラック」の次元軸

0

0

0

0

【図8-6】

(6)

ただし、クラス「トラック」は独自の属性「積載重量」を追加しています。属性「積載重量」はスーパークラスで あるクラス「自動車」のタイプ(型)には存在しない特性(プロパティ)ですから、クラス「トラック」の「論理状態空 間」は、スーパークラスであるクラス「自動車」の「論理状態空間」より1つ次元が多くなります。 つまり、クラス「トラック」の「論理状態空間」は、クラス「自動車」の「論理状態空間」を「拡張」していま す。 ここで重要なことは、「拡張」された次元軸はスーパータイプには存在しない次元軸であるため、スーパータイプ の制約の影響を受けないということです。 クラス「トラック」の「論理状態空間」の全ての次元軸は【図8-7】のようになります。

速度

走行距離

最大積載量

エンジン回転数

300

10000

100000

150

• 『特殊化』されたクラス 「トラック」の次元軸 • 『拡張』されたクラス 「トラック」の次元軸

3000

0

0

0

0

0

【図8-7】 ここまで解説してきたことを【表8-3】に整理します。

(7)

科学的モデリング規則:タイプ置換原理を満たすサブタイプ(型)の『論理状態空間』サブタイプの「論理状態空間」はスーパータイプ「論理状態空間」の次元軸を含んでいなければならないサブタイプの「論理状態空間」は独自の次元軸を追加して持つことができるサブタイプによる「特殊化」は、スーパータイプの制約条件を『強く(厳しく)する』ことは可能だが、『弱く(緩 く)』することは不可能である  サブタイプの「論理状態空間」はスーパータイプの「論理状態空間」よりも『狭く』することはできるが、 『広く』することはできないサブタイプの「論理状態空間」がスーパータイプより多くの次元を持つ場合は、スーパータイプの「論理状態空 間」を『拡張』している  『拡張』された次元軸はスーパータイプには存在しない次元軸であるため、スーパータイプの制約の影響を受け ない 【表8-3】 なお、【表8-1】から【表8-3】の『科学的モデリング規則』は、単一継承(single inheritance)だけでなく、多重 継承(multiple inheritance)にも完全に当てはまる規則であることを付け加えておきます。

条件の比較と「強い(厳しい)」と「弱い(緩い)」

ここで「条件同士の比較」について考え方を述べておきます。 まずは、厳密ではないものの、理解と記憶のための「簡易的な方法」として下記の【表8-4】様に覚えると良いでしょ う。 科学的モデリング規則:制約の「強い(厳しい)」と「弱い(緩い)」「より大きな」範囲は「弱い(緩い)」条件「小さい」範囲は「強い(厳しい)」条件 【表8-4】 もう少し正確に「条件同士の比較」について考えてみます【補足ノート参照】。 条件同士の「同じ(等しい)」「強い(厳しい)」「弱い(緩い)」を判定するには、比較する条件同士間に【図8-8】の ような関係があるときに比較が可能となります。このとき、2つの条件間の「同じ(等しい)」「強い(厳しい)」「弱 い(緩い)」の順序関係が判定できます。 そのため「条件の範囲」の比較をする場合は、まずは各条件の設定と条件の注意を払う必要があります。

(8)

比較可能 条件1 条件2 比較不可能 条件1 条件2 比較不可能 条件1 条件2 比較可能 条件1&条件2 ケース1 ケース2 ケース3 ケース4 【図8-8】 【図8-8】から見て分かる通り、2つの条件の範囲が「どちらかの条件にもう片方の条件が含まれる(ケース1)」あ るいは「完全に一致する(ケース2)」ときのみ条件の比較が可能なことが分かります。

実 は ケ ー ス 1 と ケ ー ス 2 の よ う な 関 係 は「 必 要 条 件 (necessary condition) 」 「 十 分 条 件 (sufficient condition)」「必要十分条件(necessary and sufficient condition)」という用語があります【表8-5】。

つまり、条件の比較は「必要条件」「十分条件」「必要十分条件」の関係が成立させるように、条件を設定する必 要があることが分かります。 ケース 解説 ケース1  条件2が条件1の範囲内にある:比較可能条件1は条件2の「必要条件(necessary condition)」と呼ばれる条件1は条件2よりも「弱い(緩い)」条件  条件2は条件1の「十分条件(sufficient condition)」と呼ばれる  条件2は条件1よりも「強い(厳しい)」条件 ケース2  条件1と条件2の範囲が等しい:比較可能

条件1と条件2は互いに「必要十分条件(necessary and sufficient condition)」と呼ばれる条件1と条件2の条件は「論理的同値(logical equivalence)」とも呼ばれます

ケース3

条件1が条件2の範囲が交差している:比較不可能

 条件1と条件2が互いに「必要条件(necessary condition)」「十分条件(sufficient condition)」 「必要十分条件(necessary and sufficient condition)」のいずれにもなっていないので比較 不可能

(9)

 条件1と条件2が互いに「必要条件(necessary condition)」「十分条件(sufficient condition)」 「必要十分条件(necessary and sufficient condition)」のいずれにもなっていないので比較 不可能 【表8-5】 科学的モデリング補足ノート:命題ここまで「条件式や条件文」と呼んでいたものは数学や論理学では「命題(proposition)」と呼びます命題とは文章や数式の「真(true)」「偽(false)」が判定できるものを意味します命題と書くと難しく感じますが、まずは高校1年生のときに数学の教科書に掲載される命題の内容で間に合いま す  命題を扱う時に検討することの1つに「十分条件である」「必要条件である」「必要十分条件(論理的同値)であ る」を判定があります「十分条件である」「必要要件である」「必要十分条件(論理的同値)である」の判定は、命題の中の登場する条 件を「P⇒Q」の形式で表現すると判定しやすくなります

真(true)

十分

条件

必要

条件

「P⇒Q」が常に真(true)であれば、PはQの十分条件となり、これはPが成立すれば「必ず」Qが成立しなけ ればならないことを意味します  「P⇒Q」が真(true)になるときがあるのであれば、QはPの必要条件となります  「P⇒Q」が常に真(true)であり、同時に「Q⇒P」も常に真(true)であるときはPとQは必要十分条件の関係に なります  なお、記号「⇒」は「ならば(implies)」と読みます例1:x=y=0であることは、xy=0であるための「十分条件」「必要要件」「必要十分条件(論理的同値)」の いずれの条件であるか?  「x=y=0ならばxy=0である」が必ず成立するか? 成立する「xy=0ならばx=y=0である」が必ず成立するか? 常には成立しない「(反例) xy=0を成立させる ものとして、x=1でy=0などがある」

(10)

 以上からx=y=0であることは、xy=0であるための「十分条件」です 逆にxy=0であることは、x=y=0であるための「必要条件」です  例2:x2=y2であることは、x=yであるための「十分条件」「必要要件」「必要十分条件(論理的同値)」のい ずれの条件であるか?  「x2=y2ならばx=yである」が必ず成立するか? 常には成立しない「(反例) x2=y2を成立させる ものとして、x=-1、y=1などがある」  「x=yならばx2=y2である」が必ず成立するか? 成立する  以上からx2=y2であることは、x=yであるための「必要条件」です 逆にx=yであることは、x2=y2であるための「十分条件」ですそれから、命題の真偽は【図8-8】に条件の比較を図式化したように、集合の包含関係で判定することができ、 命題「P⇒Q」が真(true)とは、{x|P}⊂ {x|Q}と表現きでます  上記の例であれば、x2=y2やx=y=0を成立させる集合の包含関係を比較することになります「十分条件」となる集合が小さく「必要要件」の集合に含まれことになります集合が重なるときは「必要十分条件」のときです命題については必要に応じて「科学的モデリング」補足ノート」で解説することにします 【表8-6】

まとめ&次回

今回のコラムは「タイプ(型)置換原理」を直観的に理解するために基本的かつ重要事項であるタイプ(型)の「論理 状態空間」の解説をおこないました。 多相(ポリモフィズム/多態)を利用する場合の継承関係は、専門的な呼び方として「タイプ(型)継承(type inheritance)」があります【第2回コラム参照】。 この呼び方から分かるとおり「タイプ(型)継承(type inheritance)」では、タイプ(型)に着目し「タイプ(型)を継 承」することを意味します。そしてスーパークラスのタイプ(型)とサブクラス(型)にサブタイプ(部分型)関係が成立し なければなりません。 さらに、「振る舞い(意味的)のサブタイプ(部分型)関係の成立が必要」であることもコラムで再三解説してきまし た。 「タイプ置換原理」により、「振る舞い(意味的)のサブタイプ(部分型)関係が成立するかどうかを判定しますが、 これはタイプ(型)間の「論理状態空間」の包摂関係を理解することで「タイプ置換原理」の考え方の基本が理解でき ます。

(11)

「振る舞い(意味的)のサブタイプ(部分型)関係の成立」を判定するには、タイプ(型)のプロパティ(特性)を明確に し、クラスのタイプ(型)の「属性の不変条件」「クラス不変条件」「操作の事前条件」「操作の事後条件」を明確に しなければなりません。 そして、「属性の不変条件」「クラス不変条件」「操作の事前条件」「操作の事後条件」は、継承関係の正確な設 計と実装だけでなく、インスペクションやテストにとっても極めて重要な意味を持ちます【表8-7】。 科学的モデリング規則:クラスのタイプ(型)の条件を明確にしなければ検証&妥当性確認が不可能であるクラスの「正当性(correctness)」や「妥当性(validity)」を表現するタイプ(型)の「属性の不変条件」「クラス 不変条件」「操作の事前条件」「操作の事後条件」を明確にしなければ、クラスに対する検証すべき内容が明 確にならず検証(verification)と妥当性確認(validation)が不可能である  インスペクションやテストが漠然と実施される  何をもってクラスの「正当性」や「妥当性」を満たすかが不明瞭なので、適切なテストケースやテストデ ーターを作成できない  以上からインスペクションやテストが漠然と実施しても品質保証にならない 【表8-7】 次回以降は「操作の事前条件」「操作の事後条件」に焦点を移して「タイプ置換原理」について解説をする予定で す。

参考文献

 文献[8-1] [BARBARAH. LISKOV 1994] A Behavioral Notion of Subtyping

文献[8-2] [Peter Wegner 1991] Concepts and Paradigms of Object-Oriented Programming文献[8-3] [Markku Sakkinen] Inheritance and Other Main Principles of C++ and Other

Object-Oriented Languages

文献[8-4] [Luca Cardelli , Peter Wegner1985] On Understanding Types,Data Abstraction, and

参照

関連したドキュメント

通常は、中型免許(中型免許( 8t 限定)を除く)、大型免許及び第 二種免許の適性はないとの見解を有しているので、これに該当す

 我が国における肝硬変の原因としては,C型 やB型といった肝炎ウイルスによるものが最も 多い(図

当社は「世界を変える、新しい流れを。」というミッションの下、インターネットを通じて、法人・個人の垣根 を 壊 し 、 誰 もが 多様 な 専門性 を 生 かすことで 今 まで

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

「欲求とはけっしてある特定のモノへの欲求で はなくて、差異への欲求(社会的な意味への 欲望)であることを認めるなら、完全な満足な どというものは存在しない

「海洋の管理」を主たる目的として、海洋に関する人間の活動を律する原則へ転換したと

・条例第 37 条・第 62 条において、軽微なものなど規則で定める変更については、届出が不要とされ、その具 体的な要件が規則に定められている(規則第

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば