添付ファイルの追加

ログイン済のユーザのみが添付ファイルをアップロード出来ます。

添付ファイル一覧

Kind Attachment Name Size Version Date Modified Author Change note
png
date.png 3.9 kB 2 20-8-2011 18:12 ytp
png
numeric.png 29.0 kB 8 31-12-2011 20:01 ytp
png
numeric2.png 7.2 kB 3 31-12-2011 20:04 ytp
png
volume.png 2.2 kB 1 18-8-2011 00:51 ytp

This page (revision-18) was last changed on 05-6-2014 14:28 by ytp

This page was created on 19-7-2011 00:36 by ytp

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 1 changed 3 lines
★このページはまだ書きかけです。
!!!様々なクラスで再利用可能なのが小物クラス
粒度が非常に小さいクラスのことを小物(こもの)クラスと私は呼んでいます。次のようなものです。
!!!様々なクラスで再利用可能なのが小粒クラス
粒度が非常に小さいクラスのことを小粒(こつぶ)クラスと私は呼んでいます。次のようなものです。
At line 12 changed one line
これらは、他のクラスの属性として使われることを前提としています。そのため、極めて汎用的に設計しておく必要があります。その代わり、一度作ってしまえばシステムや時代ををまたがって再利用することが可能です。\\
これらは、他のクラスの属性として使われることを前提としています。そのため、極めて汎用的に設計しておく必要があります。その代わり、一度作ってしまえばシステムや時代をまたがって再利用することが可能です。\\
At line 17 changed one line
たかだか数量や金額にこんなにたくさんのクラスが出てくるのか、と驚く人もいるでしょう。図に出てくるクラスとインタフェースを列記します。\\
たかだか数量や金額にこんなにたくさんのクラスが出てくるのか、と驚く人もいるでしょう。図に出てくるクラスを列記します。\\
At line 28 changed 2 lines
#MoneyExchanger (両替)
※通貨は数値系クラスではありません。\\
※通貨は数値系クラスではありません。\\
At line 37 changed one line
等の処理を実装します。こうすることで、__文字列編集用の関数を別途用意する必要がなくなり__、さらに、画面・帳票・バッチとありとあらゆるプログラムで共通利用することが可能となります。\\
などの処理を実装します。こうすることで、__文字列編集用の関数を別途用意する必要がなくなり__、さらに、画面・帳票・バッチとありとあらゆるプログラムで共通利用することが可能となります。\\
At line 82 changed one line
消費税率の数値を持ちます。2011年時点の消費税は5%ですが、この時に
消費税率の数値を持ちます。2011年時点の消費税率は5%ですが、この時に
At line 85 added 20 lines
!【外貨金額】
円貨以外の金額を保持するクラスです。保持している金額値を円貨に換算するための
*円貨金額に変換する
メソッドを持ちます。このメソッドの中では、通貨クラスの
*レートを返す
メソッドを利用してレートを取得し、計算します。レートを決めるためにはその金額が発生した日付(場合によっては年月)が必要になります。
!【レート一覧】
__レートを複数持つ一山クラス__です。__レートは日付によって変わる__ためこの一覧クラスが必要になります。\\
日付によってレートを特定するための
*レートを返す
メソッドを実装します。
__自国通貨金額(日本では円貨金額)のレート値は常に「1」__であるため特殊処理が必要になります。通貨クラスが自国通貨フラグを持っているのはこのためです。
!【レート】
為替のレート値を保持するクラスです。このクラスは、
*レート値
*日付
を持ちます。場合によって日付は年月になることもあります。
At line 88 changed 2 lines
日付クラスは何かが実行された年月日を持っているクラスです。\\
日付クラスはとても汎用的に設計する必要があります。例えば、区切り文字で日付を編集した文字列を返すメソッドを実装するにしても、スラッシュ(/)で区切るメソッドやハイフン(-)で区切るメソッドなどいくつか必要になります。また、
日付クラスは何かが実行された年月日を持っているクラスです。年月日は、暦としてあらかじめ定義されているある__特定の日__を表現するので
*物クラス
として扱います。業務システムにてよく利用される「営業日マスタ」を想像してもらえば解りやすいと思います。\\
*2011年8月17日の売上金額
*2011年8月17日の契約件数
を考えた場合、売上金額と契約件数という違いはあるものの、両方とも同じ__2011年8月17日__という日のオブジェクトを指しています。\\
\\
日付クラスはとても汎用的に設計する必要があります。例えば、
*区切り文字で日付を編集した文字列を返すメソッド
を実装するにしても、
*スラッシュ(/)で区切るメソッド
*ハイフン(-)で区切るメソッド
などがいくつか必要になります。また、
At line 126 added 2 lines
[date.png]\\
Javaで実装する場合、java.util.Calendarクラスを日付値として内部で利用します。\\
At line 98 removed one line
上記クラス図で解るように日付クラスは色々なクラスから利用されるため、色々な可能性を考えて設計する必要があります。\\
At line 130 added 28 lines
!!その他の例
かつて関わった物流プロジェクトにて__体積クラス__というのを設計しました。
*長さ(Length)
*幅 (Width)
*高さ(Height)
という3つの属性を持ち、3者を乗算して
*体積
を返すというものです。\\
複数の部品を梱包した荷姿が不定型で、出荷する荷姿ごとに体積を管理する必要があったためです。\\
この体積クラスは__結果クラス__に分類されます。\\
[volume.png]\\
!!まとめ
*他のクラスの属性として利用されるのが小粒クラス
*代表的なクラスは数量・金額・日付
!!コラム
小粒クラスを見逃していると綺麗な設計が出来ず、関数に頼った実装になってしまいます。\\
*氏名
*住所
など、文字列で表現される小粒クラスは特に見逃されがちです。\\
O/Rマッパによっては、
*RDBテーブル上で複数の属性となっているものを一つのクラスにマッピングできない
*標準ではない自作のクラスをマッピングできない
などの制限があり、小粒クラスが使いづらい場合もあります。\\
そういう場合であっても、マッピングを自前でコーディングすることによって小粒クラスを使うようにして下さい。保守性が格段に上がることを経験できるでしょう。\\
\\
次: [リンゴ一個とリンゴ一山は異なるクラス]
Version Date Modified Size Author Changes ... Change note
18 05-6-2014 14:28 3.671 kB ytp to previous
17 21-8-2011 00:07 3.67 kB ytp to previous | to last
16 18-8-2011 00:54 3.312 kB ytp to previous | to last
15 18-8-2011 00:29 3.265 kB ytp to previous | to last 小物クラス ==> 小粒クラス
14 18-8-2011 00:29 3.265 kB ytp to previous | to last
13 09-8-2011 14:46 2.874 kB ytp to previous | to last
12 09-8-2011 02:13 2.648 kB ytp to previous | to last
11 02-8-2011 06:40 2.459 kB ytp to previous | to last
10 02-8-2011 06:37 2.458 kB ytp to previous | to last
9 02-8-2011 06:35 2.819 kB ytp to previous | to last
8 02-8-2011 06:27 2.702 kB ytp to previous | to last
7 26-7-2011 20:10 2.352 kB ytp to previous | to last
6 25-7-2011 02:14 2.145 kB ytp to previous | to last
5 25-7-2011 01:37 1.91 kB ytp to previous | to last
4 24-7-2011 02:14 1.751 kB ytp to previous | to last
3 24-7-2011 01:47 1.074 kB ytp to previous | to last
2 19-7-2011 01:16 0.792 kB ytp to previous | to last
1 19-7-2011 00:36 0.775 kB ytp to last
« This page (revision-18) was last changed on 05-6-2014 14:28 by ytp