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

科学的モデリング 2 回 継承 2 無断転載 & 無断配布を禁じます 第 2 回 : 科学的モデリング 継承 2 継承される特性( プロパティ ) 第 2 回の話題 継承は何を継承するのか? 今回のコラムの話題は 継承される特性 ( プロパティ ) についてです そもそもサブクラスはスーパークラスか

N/A
N/A
Protected

Academic year: 2021

シェア "科学的モデリング 2 回 継承 2 無断転載 & 無断配布を禁じます 第 2 回 : 科学的モデリング 継承 2 継承される特性( プロパティ ) 第 2 回の話題 継承は何を継承するのか? 今回のコラムの話題は 継承される特性 ( プロパティ ) についてです そもそもサブクラスはスーパークラスか"

Copied!
9
0
0

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

全文

(1)

『科学的モデリング』2回〜継承② 無断転載&無断配布を禁じます。

第2回:『科学的モデリング』継承②〜『継承される特性(プロパティ)』

第2回の話題〜継承は何を継承するのか?

今回のコラムの話題は『継承される特性(プロパティ)』についてです。 「そもそもサブクラスはスーパークラスからどのような特性(プロパティ)を継承するのか?」 という疑問に回答し説明します。 『科学的モデリング』の視点から継承される特性(プロパティ)を明確にして、今後の連載コラムの中 で正確に継承の意味を探ります。

継承は全ての特性(プロパティ)を継承する

継承される特性(プロパティ)を説明するときに利⽤する【図2-1】のような簡単なUMLのモデルを考 えます。 操作(メソッド/関数)の継承 JavaやC++などの特定のプログラム⾔語の固有の仕様は別にして、オブジェクト指向設計の概念では、 スーパークラスの特性(プロパティ)は「全て」がサブクラスに継承されます。

(2)

【図2-1】 【図2-1】を⾒るとサブクラス「person」はスーパークラス「animal」から全ての属性と操作(メソッ ド/関数)を継承しています。 継承により全ての属性と操作(メソッド/関数)がサブクラスに継承されることは良く知られていま す。 【図2-1】のサブクラス「person」のグレー色で表示されている特性(プロパティ)が、継承されたこ とを示しています。 UMLではサブクラスがスーパークラスから継承する特性(プロパティ)をオーバーライドしない場合 は、表記しない規則があります。 しかし、科学的に正確に継承を検討に時に必要になるので、本コラムでは表示して解説していきます。 関連、関連端(ロール名)および多重度の継承

(3)

『科学的モデリング』2回〜継承② 無断転載&無断配布を禁じます。 【図2-2】のサブクラス「person」の関連がグレー色で表示されていて、スーパークラス「animal」か ら関連「pair」が継承されたことを示しています。 【図2-2】 関連の制約の継承 【図2-3】を⾒るとサブクラス「person」はスーパークラス「animal」から関連「pair」、関連端(ロ ール名)「male」「female」そして、関連の両端の多重度も継承していますが、関連「pair」の制約 {symmetry}、関連端(ロール名)の制約{immutable}も継承しています。なお多重度も制約の1種で す。 【図2-3】のサブクラス「person」の関連の制約{symmetry}および関連端(ロール名)の制約 {immutable}がグレー色で表示されていて、スーパークラス「animal」から継承されたことを示してい ます。

(4)
(5)

『科学的モデリング』2回〜継承② 無断転載&無断配布を禁じます。 【図2-4】 【図2-4】は関連端をクラスの属性として表示させた図です。【図2-4】においてステレオタイプ≪ A≫ は 関連属性であることを示しています。 サブクラス「person」はスーパークラス「animal」から関連属性を継承していることが分かります。 初期値とデフォルト・パラメーターの継承 【図2-5】のクラス「animal」の属性「age」に初期値「0」が付与されています。また、操作(メソ ッド/関数)である「setAge(int newAge):void」に、デフォルト・パラメーター「0」が付与されてい ます。 また、サブクラス「person」はスーパークラス「animal」から属性「age」の初期値「0」と 「setAge(int newAge):void」に、デフォルト・パラメーター「0」が継承されていることが分かりま す。

(6)

【図2-6】

クラス不変条件の継承

【図2-6】ではクラス「animal」の属性「age」に制約{age>=0 and age <150}が付与されていま す。属性「gender」に制約{gender==” male” or gender ==” female” }が付与されています。

この2つの属性の制約は「不変条件」と呼ばれるものです。

【図2-6】では第4番目の区画に「クラス不変条件」を表示しています。

クラス「animal」の「クラス不変条件」は、属性「age」の制約{age>=0 and age <150}と属性 「gender」の制約{gender==” male” or gender ==” female” }の2つであることが分かります。

サブクラス「person」は、スーパークラス「animal」から属性「age」と属性「gender」を継承して いますが、その際に2つの属性の制約である「不変条件」も継承します。

(7)

『科学的モデリング』2回〜継承② 無断転載&無断配布を禁じます。 次回以降のコラムで「不変条件」と「クラス不変条件」について詳細に解説しますので、今回のコラム では「不変条件」と「クラス不変条件」も継承される特性(プロパティ)であることが理解できればOKで す。 【図2-6】 操作の「事前条件(pre-condition)」と「事後条件(post-condition)」の継承

【図2-7】ではクラス「animal」の操作(メソッド/関数)「setAge(int newAge = 0) : void」に 「Pre-condition(newaAge >=0 and newAge <150)」と「Post-Condition((age >=0 and age <150) and (age == newAge))」付与されています。

この操作(メソッド/関数)の2つの制約は

(8)

サブクラス「person」は、スーパークラス「animal」から操作(メソッド/関数)「setAge(int newAge = 0) : void」を継承していますが、同時にこの操作(メソッド/関数)の事前条件(pre-condition)」「事後条件(post-condition)」「Pre-condition(newaAge >=0 and newAge <150)」と「Post-Condition((age >=0 and age <150) and (age == newAge))」も継承してい ます。

「事前条件(pre-condition)」「事後条件(post-condition)」は、各操作(メソッド/関数)に付与 されるの制約で、各操作(メソッド/関数)の実⾏時に満たさなけばならない制約です。

(9)

『科学的モデリング』2回〜継承② 無断転載&無断配布を禁じます。 「事前条件(pre-condition)」「事後条件(post-condition)」についても、今後のコラムの中で詳し く解説します。

まとめ&次回

今回のコラムは『継承される特性(プロパティ)』について扱いました。 注意点はプログラム⾔語によっては、その⾔語の継承メカニズムの都合で特性(プロパティ)が自動的 に継承されない⾔語もあります。今回のコラムの解説は特定のプログラム⾔語を意識していません。 からオブジェクト指向設計に⼀般的な議論です。少し先になりますが、JavaやC++など特定の⾔語で特 性(プロパティ)を継承する具体的なコード例も示したいと思います。 それから、次回以降のコラムでサブクラスがスーパークラスから継承した特性(プロパティ)をオーバ ーライドについて解説します。特性(プロパティ)は、ある条件を満たすならばオーバーライドが可能で す。特性(プロパティ)のオーバーライドの方法と、特性(プロパティ)をオーバーライドがどのような 意味を持つのについても次回以降のコラムで解説します。極めて重要な意味を持ちます。

参照

関連したドキュメント

留学生 して人間形成されていると感じて 歴史都市・金沢にある大学ならで 積極的に関わろうとする姿に感

【名例勅乙 33】諸僧道亡失度牒。還俗。 a〔名例勅甲 58〕 【名例勅乙 34】諸稱川峽者。謂成都府。潼川府。利州夔州路。 a〔名例勅甲

1.はじめに

 処分の違法を主張したとしても、処分の効力あるいは法効果を争うことに

てて逃走し、財主追捕して、因りて相い拒捍す。此の如きの類の、事に因縁ある者は

In this paper, Part 2 , presents current status of children's Satoumi activity cases in Japan and compares them with those of the South Pacific on knowledge of marine

断面が変化する個所には伸縮継目を設けるとともに、斜面部においては、継目部受け台とすべり止め

う東京電力自らPDCAを回して業 務を継続的に改善することは望まし