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

科学的モデリング 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++など特定の⾔語で特 性(プロパティ)を継承する具体的なコード例も示したいと思います。 それから、次回以降のコラムでサブクラスがスーパークラスから継承した特性(プロパティ)をオーバ ーライドについて解説します。特性(プロパティ)は、ある条件を満たすならばオーバーライドが可能で す。特性(プロパティ)のオーバーライドの方法と、特性(プロパティ)をオーバーライドがどのような 意味を持つのについても次回以降のコラムで解説します。極めて重要な意味を持ちます。

参照

関連したドキュメント

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

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を回して業 務を継続的に改善することは望まし

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

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

1.はじめに

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