クラス

2011-02-15
第1章 実世界のモデル化と形式化
1.モデルとその形式表現
太田守重
[email protected]
地理情報科学教育用スライド ©太田守重
ここで学ぶこと
私たちは,身の回りの環境や世界を認知し,知識として記憶し,それを使って
判断して行動する.
知識は,認知の結果としての実世界のモデルともいえる.これを他者に伝える
には,一般には自然言語を使用する.しかし,自然言語には多義性があるので,
表現に曖昧さが残る.そこで,誤解が起きないように,厳密に定義されたルー
ルに従う,形式化された言語(スキーマ言語)を使用することが望ましい.特に
情報ネットワークを通じて情報交換するシステムには、これが求められる。
ここでは,実世界に生起消滅する諸現象(地物)を,どのようにモデル化し,そ
れをどのように形式的に表現するかを学ぶ.
地理情報科学教育用スライド ©太田守重
知識の形成(ピアジェ)
シェマ(知識)
観察
新たな概念を含むシェマ
同化と調節
発達したシェマ
地理情報科学教育用スライド ©太田守重
知識の共有
Aさんのシェマ
Bさんのシェマ
共通の知識は、共通の構造
をもつ。
その構造は、関係者が共有
する、構造記述のための知
識に従う。
この知識は、知識について
の知識、つまりメタ知識であ
る。これが共有されれば,コ
Cさんのシェマ
ミュニケーションが可能にな
る.
地理情報科学教育用スライド ©太田守重
メタモデルとその共有のプロセス
モデル:興味の対象となる実世界に出てくる実体の言語表現
メタモデル:モデル表現のためのルールを記述するモデル
モデルの共有はメタモデルの共有が前提
共有には合意が前提
関係者が合意したルールを標準という
標準化 (de facto, de jure)
例えば、国際標準化機構 (International Organization for Standardization)
ISO などの標準化組織が de jure 標準の審議を行い、国際標準を制定。日
本を含むWTO加盟国は、原則としてISO標準を国内標準としても使用し、政
府調達ではこれに準拠する(ことになっている)。
地理情報科学教育用スライド ©太田守重
地物
地物(feature):実世界の現象の抽象概念.地物は型またはインスタンスとし
て表現される.同じ性質をもつ要素の集まりを地物型という.地物型に含ま
れる要素を,その型の地物インスタンスという.
(例)
地物型
河川
地表の窪みを沿って高所から低所に向かう水の流れ。
名称,全長,形状で特徴づけられる
地物インスタンス
名称:C川
全長:約322km
形状:
地理情報科学教育用スライド ©太田守重
スキーマ言語(UMLの場合)
UML: Unified Modeling Language
Grady Booch、James Rumbaugh、Ivar Jacobsonによって開発されたスキーマ言語.
1997年11月にOMG (Object Modeling Group)によって標準として認定.
クラス:同じ性質や条件をもつオブジェクトの類を示す概念(型と同じ).
オブジェクト:クラスに含まれる要素.
横浜ベイブリッジ
(定義)
タワーブリッジ
河川や海を横断
するための人工
構造物
クラス
橋
クラス(型)
オブジェクト
地理情報科学教育用スライド ©太田守重
UMLクラス図
UMLでは,クラス図を使って,クラスの定義,及びクラス間の関係記述を行う.
クラスはその名称,属性及び操作で定義する.属性とは,そのクラス固有の性
質のこと.操作とはそのクラスがもつ機能,または振る舞いのこと.
クラス間の関係には,関連(集成,合成)と継承がある.
クラスには,インスタンスをもたない抽象クラス,インスタンスをもつ具象クラス
がある.最も抽象度の高いクラスをルートクラスという.
操作には多態性という性質がある.
クラスには,属性の型を示すデータ型がある.
クラス図の要素に定義には文章をつかう.
地理情報科学教育用スライド ©太田守重
クラスの記法
クラスは3つの襴で記述する。
名前:クラスを識別するための「名前」
名前
道路
属性:その実体固有の性質
例:量、質、状態、場所、時間、・・・
名前:String
形状:GM_Curve
属性
延長計算()
操作
操作:クラスの振る舞い(能動、受動)
例:道路の長さ()
道路の形状を示す線データから,
道路の長さを計算し,値を返す
属性欄や操作欄は,もし属性や操作がな
い場合は,省略することができる。
道路
道路
名前:String
形状:GM_Curve
属性・操作を
省略した記述
地理情報科学教育用スライド ©太田守重
操作を省略した
記述
道路
道路の長さ()
属性を省略した
記述
属性
道路
属性:クラスがもつ固有の性質
•
属性名と属性の型で示す。
属性値が従うデータ型
•
基本データ型
例: String(文字列),Integer(整数),
Float, Long(実数),Boolean(真偽値)
•
コレクションデータ型
• 集合型(Set)
有限な要素をもつ集合。重複する
インスタンスを含んではならない。
• 順序型(Sequence)
要素が順序をもつ集合。
名前[1..*]:String
種類:String
属性名
属性
属性の 属性の型
多重度
道路
名前:Set<String>
複数の名前を,順不同に列挙
することができる
例:川越街道,国道254号線
道路
種類:Sequence<Integer>
複数の整数を順序付けて並べることができる。
例:31.54, 78.98
この数字が逆になってはいけない。
地理情報科学教育用スライド ©太田守重
属性の多重度
【多重度の表現】
•
同じ種類の属性が複数あるときに使う
•
属性名の後の[ ]の中に記入
•
•
クラスA
属性名[0,1]:属性型
クラスA
属性名[1..*]:属性型
[最小値...最大値]
:0または1
:1以上
(* は複数を表す。n と記述することもある)
多重度が1の場合は省略
「,(カンマ)」で区切ることで離散値を指
定し,「..(2つのドット)」で区切ることで
範囲を指定する。
属性名:Set<属性型>との違い
道路
• 属性名:Set<属性型>
名前:Set<String>
1つの属性名に対し,複数の値が対応
道路ID
• 属性名[多重度]
インスタンス
名前
1つの属性名と一つの値が組になり,そ
道路
の組が複数個できる。
1
川越街道, 国道254号線
名前[0..*]:String
インスタンス
地理情報科学教育用スライド ©太田守重
道路ID
名前
名前
1
川越街道
国道254号線
クラス定義の手順
一般化
私の自転車は,
通学用で,
車輪のサイズが24inch,
メーカーはBridgtstone,
妹や母が使うときもある。
仕様化
自転車
所有者:文字列
使用目的:文字列
サイズ:整数
メーカー:文字列
使用者[1..*]:文字列
目的コード
1 通学
2 通勤
3 遊び
4 スポーツ
地理情報科学教育用スライド ©太田守重
自転車
所有者:String
使用目的:目的コード
サイズ:Integer
メーカー:メーカーコード
使用者[1..*]:String
メーカーコード
1 Brightstone
2 PanaPana
3 RoadStar
操作
操作
インスタンスが実行する能動的及び受動的振る舞い
例:計算、解析、シミュレーション、・・・
操作の記法
操作名(文字列)
引数(属性名:属性型の列)
戻り値(データ型)
例:建築物での操作
操作名(name)
引数(argument)
戻り値 (return value)
日陰(建築形状:立体、日付:グレゴリオ暦、時刻:日本標準時):多角形
地理情報科学教育用スライド ©太田守重
関連
関連:
クラス間の対等な結び付き
役割名:関連先のクラスの役割を説明する名前
多重度:関連元クラスの1インスタンスに対して,関連先
クラスのインスタンスがいくつ対応するかを示す数
関連の描き方
関連を持つクラス間を線でつなぐ。
役割名及び多重度をつける。
【関連の多重度の例】
(多重度が「1」の場合は省略可)
クラスB
:厳密に1
1
役割A
1,2
:0または1
クラスB
:1以上
0,1
関連表示の例
クラスA
クラスB
役割B
クラスB
1..*
地理情報科学教育用スライド ©太田守重
1..*
(* は複数を表す。n と記述することもある)
「,(カンマ)」で区切ることで離散値を指
定し,「..(2つのドット)」で区切ることで
範囲を指定する。
関連の向き
関連は「向き」を持つことができる。
クラスA
役割B
クラスB
1..*
例 :「道路」から「交差点」への片方向の関連
道路
端点
交差点
0..2
地理情報科学教育用スライド ©太田守重
この場合、道路は,どの交差点
で区切られるかを知ることがで
きるが,交差点は,どの道路を
区切るかわからない。
特殊な関連
集成(aggregation)
全体と部分の関連性
「has a」または「is a part of」の関係
記法:全体を表すクラスの側に「白抜きダイヤモンド」をつける
合成(composition)
強い集成,部分と全体が一体となる関連
記法:全体を表すクラスの側に「黒いダイヤモンド」をつける
全体クラス
全体クラス
役割名
1
全体クラス
役割名
全体クラス
1
地理情報科学教育用スライド ©太田守重
部分クラス
部分クラス
役割名
0..*
部分クラス
部分クラス
役割名
2
特殊な関連の例
集成
ジュースの容器
合成
キャップ
ラベル
ペットボトル
駅
改札口
地理情報科学教育用スライド ©太田守重
プラットホーム
継承
継承 (inheritance)とは
より抽象的な型と下位の具体的な型の関係
上位の属性、操作、及び関連を下位が受け継ぐ
is aの関係ともいう。
継承の描き方
上位クラスと下位クラスを線で結び、上位クラス側に「白い三角」を付ける
クラスA
岩石
硬度
成分
属性A
操作A
特化
クラスB
属性B
操作B
汎化 クラスBが持つ属性
属性A(クラスAから継承)
属性B
クラスBが持つ操作
操作A(クラスAから継承)
操作B
地理情報科学教育用スライド ©太田守重
火成岩
固化速度
堆積岩
堆積地
多重継承
多重継承:複数の上位クラスからの継承
クラスC
クラスA
属性A
属性C
操作A
操作C
「クラスB」は「クラ
スA」であり,かつ
「クラスC」でもある。
建物
鉄道施設
会社名
名前
位置
駅
管理者
クラスB
属性B
操作B
「駅」は「建物」でもあり,「鉄道施設」でも
あるため,両者を継承する。
その結果,「駅」は以下の属性を持つ。
名前
建物から継承
位置
会社名 鉄道施設から継承
管理者 駅に定義
地理情報科学教育用スライド ©太田守重
抽象、具象、ルート
具象クラス
ルート
インスタンス化されるクラス
道路
抽象クラス
名前
種類
抽象的な概念を示すクラス
下位の具象クラスがインスタンスを作れる
クラス名を斜体にして記述する
国道
交通量
県道
点字ブロック有無
ルートクラス
クラス図の中で,継承の最上位となるクラス
具象クラス:
車道,歩道
抽象クラス:
道路
抽象クラスである道路は直接
インスタンス化されず,道路
を継承する車道及び歩道が
インスタンス化される。
地理情報科学教育用スライド ©太田守重
多態性 (Polymorphism)
多態性:上位の具象クラスのインスタンスが、下位のクラスのインスタンスである
場合、下位のクラスの操作が実行されること。
多態性の例
住宅
住みよいか()
日当り?
静か?
収納?
部屋数?
セキュリティ?
集合住宅
住みよいか()
個人住宅
住みよいか()
住宅の評価項目
コミュニティ?
プライバシー?
住宅の評価項目
周辺の環境?
庭?
地理情報科学教育用スライド ©太田守重
データ型
地物型の属性の型として使われる,地物ではないクラスを
データ型(DataType)という。
例えば,地物の座標を示す「位置」は,地物の
属性の型としてしか,使われない。
<<DataType>>
位置
緯度:Long
経度:Long
地理情報科学教育用スライド ©太田守重
緯度:35.5421は
35度32分31.56秒
文書化
クラス図の要素(クラス、属性、操作、関係)の定義は文章で示す。
建物:屋根と壁で区切られた人工構造物
建物
名前
種類
名前:他の建物と区別するために与える識別情報。
種類:建物の特徴を示す名前
クラス図は通常、専用のソフトウェアツールで作成する。ツールは必ずク
ラス図の要素の定義を記入できるようにしている。
フリーなツールの例: Argo UML
astah* Community
地理情報科学教育用スライド ©太田守重
その他のスキーマ言語 ー 実体関連モデル
実体関連モデル(Entity-Relationship Model):
1976年にP.Chenによって提唱された、グラフィックなスキーマ言語。
他と区別できる“もの”を実体とし、その間の関連とともに、実体関連図として表現。
実体は長方形で表現し、属性をもつことができる。
関連は菱形で表現し、属性をもつことができ、実体同士の多対多の関連を表現できる。
N
教授
学生
ー学籍番号
ー名前
ー住所
M
1
教師
ー名前
ー点数
受講
N
科目
ー科目名
ー必修・選択
地理情報科学教育用スライド ©太田守重
まとめ
モデルの記述が自然言語だと、表現にあいまいさが残る
スキーマ言語を使って、モデルの形式表現を行うことで、あいまいさを軽減する
スキーマ言語の一つとしてUMLがある。
UMLでは、同じ性質をもつものの集まりをクラスとし、属性、操作、他のクラスとの
継承及び関連でスキーマを表現する。
クラス図の要素の定義は、文章で補う。
UMLのようなスキーマ言語は突然現れたものではなく、それ以前から例えば実
体関連モデルのようなスキーマ言語がある。
地理情報科学教育用スライド ©太田守重
参考文献
1. 有川正俊、太田守重監修(2007)『GISのためのモデリング入門』ソフトバン
ククリエイティブ
2. Michael Worboys and Matt Duckham (2004) GIS: a computing perspective,
Second Edition, CRC Press, pp.71-80
3. Peter Pin-Shan Chen, The Entity-Relationship Model-Toward a Unified View
of Data, ACM Transactions on Database Systems, Vol. 1, No. 1. March 1976,
Pages 9-36.
地理情報科学教育用スライド ©太田守重