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

Similar documents
Microsoft PowerPoint ppt

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

Microsoft PowerPoint - UML1_2009.ppt

Microsoft Word - C言語研修 C++編 3.doc

JavaプログラミングⅠ

継承を積極的に利 することを推奨する専門家の主張 正しい設計を うには継承を正確に使 する事が極めて重要である [Ian Joyner] 開放閉鎖原理 (Open-Close Principle) を可能とするのは継承だけである [Bertrand Meyer] 表 1-1 共変化(co-varia

モデリング操作ガイド クラス図・オブジェクト図編

JavaプログラミングⅠ

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

10 ソフトウェア工学 Software Engineering ソフトウェアモデリング SOFTWARE MODELING ソフトウェアモデリングとは? ソフトウェアの抽象なモデルを, さまざまな視点から簡潔に表現する作業 表現方法 グラフィカルモデル : 所定の記法による図で表現 流れ図, クラ

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

PowerPoint プレゼンテーション

GEC-Java

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Resigtration Manual (Japanese)

yume_P01-056



ビットリアカップ2007けいはんなサイクルレースリザルト

校友会16号-ol.indd

Page 1

JavaプログラミングⅠ

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

Microsoft PowerPoint - chap10_OOP.ppt

PowerPoint プレゼンテーション

2. 目的 1RationalRose を利用する場合にプログラム仕様書としての最低限必要な記述項目を明確にする 2 プログラム仕様書として記載内容に不足がない事をチェックする 3UML の知識があるものであれば 仕様書の内容を理解できること 4Rose にて入力した内容を SoDaWord を利用

機能紹介 : Java ゲートウェイとインターシステムズ製品

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

プログラミング入門1

PowerPoint プレゼンテーション

2

Microsoft PowerPoint - OOP.pptx

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

JAVA入門

Microsoft PowerPoint - prog03.ppt

Java知識テスト問題

Microsoft PowerPoint - 04_01_text_UML_03-Sequence-Com.ppt

メディプロ1 Javaサーブレット補足資料.ppt

Prog2_12th

untitled

untitled


untitled

GEC-Java

Prog2_9th

Rational Roseモデルの移行 マニュアル

2

2



2

Microsoft PowerPoint - prog04.ppt

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

レコードとオブジェクト

Microsoft PowerPoint - lec äº™æ‘łã…¢ã…¼ã…›

Microsoft Word - Android_SQLite講座_画面800×1280

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

第2回講義

JavaプログラミングⅠ

モデリング操作ガイド アクティビティ図編

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

Java から見たオブジェクト指向入門 オブジェクト指向 AtoZ セミナー ( 株 ) 豆蔵井上樹

第1章 ビジュアルプログラミング入門

JavaプログラミングⅠ

スライド 1

Javaプログラマー早期育成ドリル ~コードリーディング編~ 解答

5 継承とは クラス図 98 7 参照の自動型変換 参照の自動型変換 クラス図の見方 クラス図の書き方 継承 継承してクラスを作る インスタンスの初期化 継承の効果を確認する

表1

<基礎領域>

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

SpringSecurity

デザインパターン第一章「生成《

PowerPoint プレゼンテーション

ファイナライザを理解する ~ ファイナライザに起因するトラブルを避けるために ~ 2013 年 11 月 25 日 橋口雅史 Java アプリケーションでファイナライザ (finalize() メソッド ) を使用したことがあるプログラマーは多いと思います しかし ファイナライザの仕組みや注意点につ

15288解説_D.pptx

V8.1新規機能紹介記事

平成 29 年度卒業研究 初心者のためのゲームプログラミング用 教材の開発 函館工業高等専門学校生産システム工学科情報コース 5 年 25 番細見政央指導教員東海林智也

Microsoft PowerPoint - se05-ER&OOAD&UML.ppt [互換モード]

プログラミング基礎I(再)

組込みシステムにおける UMLモデルカタログの実践研究

PowerPoint プレゼンテーション

Microsoft Word - ModelAnalys操作マニュアル_

10K

Make the Future Java FY13 PPT Template

今回の内容 グラフとオブジェクト指向プログラミング Java を使う理由 Java の基本 Javaのライブラリ 開発 実行 クラスの再利用 クラス継承 抽象クラス 開発の要点

c o n t e n t s HIV HIV18?20 22 LGBT HIV???? 6 4 LGBT L G B T 4 LGBT 2 3

実行時のメモリ構造\(2\) Javaスタック内のフレーム間動作

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

storage-sdk-Java

プログラミング入門1

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

IT プロジェクト

情報システム 第11回講義資料

クラス図とシーケンス図の整合性確保 マニュアル

untitled

レコードとオブジェクト

Transcription:

第 2 回 : 科学的モデリング 継承 2 継承される特性( プロパティ ) 第 2 回の話題 継承は何を継承するのか? 今回のコラムの話題は 継承される特性 ( プロパティ ) についてです そもそもサブクラスはスーパークラスからどのような特性 ( プロパティ ) を継承するのか? という疑問に回答し説明します 科学的モデリング の視点から継承される特性 ( プロパティ ) を明確にして 今後の連載コラムの中で正確に継承の意味を探ります 継承は全ての特性 ( プロパティ ) を継承する 継承される特性 ( プロパティ ) を説明するときに利 する 図 2-1 のような簡単なUMLのモデルを考えます 操作 ( メソッド / 関数 ) の継承 JavaやC++ などの特定のプログラム 語の固有の仕様は別にして オブジェクト指向設計の概念では スーパークラスの特性 ( プロパティ ) は 全て がサブクラスに継承されます

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

図 2-3 Page 4

図 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 が継承されていることが分かります Page 5

図 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つの属性の制約である 不変条件 も継承します 属性の制約である 不変条件 とクラス全体の制約である クラス不変条件 は クラスのインスタンスが常に満たさなければならない制約です Page 6

次回以降のコラムで 不変条件 と クラス不変条件 について詳細に解説しますので 今回のコラム では 不変条件 と クラス不変条件 も継承される特性 ( プロパティ ) であることが理解できれば 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つの制約は 事前条件 (pre-condition) 事後条件(post- condition) と呼ばれるものです Page 7

サブクラス person は スーパークラス animal から操作( メソッド / 関数 ) setage(int newage = 0) : void を継承していますが 同時にこの操作( メソッド / 関数 ) の事前条件 (precondition) 事後条件(post-condition) Pre-condition(newaAge >=0 and newage <150) と Post-Condition((age >=0 and age <150) and (age == newage)) も継承しています 事前条件(pre-condition) 事後条件(post-condition) は 各操作( メソッド / 関数 ) に付与されるの制約で 各操作 ( メソッド / 関数 ) の実 時に満たさなけばならない制約です 図 2-7 Page 8

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