★このページはまだ書きかけです。
これらは、他のクラスの属性として使われることを前提としています。そのため、極めて汎用的に設計しておく必要があります。その代わり、一度作ってしまえばシステムや時代ををまたがって再利用することが可能です。

たかだか数量や金額にこんなにたくさんのクラスが出てくるのか、と驚く人もいるでしょう。図に出てくるクラスを列記します。
順に見ていきましょう。
内部では、各言語が持っている十進数クラスを利用することになります(Javaではjava.math.BigDecimal)。その上で、
システムの性格にもよりますが、デフォルトの単位を「個」にしておくと便利でしょう。
そして、
場合によっては、「単位」もクラスとして定義しておく必要があります。
このクラスは、
上記クラス図は日本の業務システムで利用する前提で記述してあります。FX取引などのサイト開発では外貨→円貨のみの金額変換ではなく全ての通貨の相互変換が必要になるため、円貨と外貨を区別しないモデルが必要なことに注意してください。
通貨は数値系のクラスではありません。
消費税額を計算するためには次の判断が必要になります。
日本の業務を前提にしたシステムの場合、円貨金額の通貨を明示的に保存しておくことはしません。その場合は金額クラスが通貨クラスを持つのではなく、外貨金額が通貨を持つように設計するといいでしょう。
日付を基にして消費税率を判断し、それを返すメソッドを持ちます。
日付によってレートを特定するための
日付クラスはとても汎用的に設計する必要があります。例えば、
特に会計システムなどでサイト計算が必要な場合は、

日本でのみ使われる前提のシステムの場合はロケールを意識しなくて済みますが、グローバルシステムの場合はシステムが稼働しているロケールも意識して日付編集を行う必要が出て来ます。
複数の部品を梱包した荷姿が不定型で、出荷する荷姿ごとに体積を管理する必要があったためです。
この体積クラスは結果クラスに分類されます。

様々なクラスで再利用可能なのが小粒クラス#
粒度が非常に小さいクラスのことを小粒(こつぶ)クラスと私は呼んでいます。次のようなものです。- 数量
- 金額
- 日付
- 氏名
- 宛先
- クレジットカード番号
- 電話番号
これらは、他のクラスの属性として使われることを前提としています。そのため、極めて汎用的に設計しておく必要があります。その代わり、一度作ってしまえばシステムや時代ををまたがって再利用することが可能です。
数値系クラス#
業務システムで一番使うのが数値系のクラス群です。まずは以下のクラス図を見てください。
たかだか数量や金額にこんなにたくさんのクラスが出てくるのか、と驚く人もいるでしょう。図に出てくるクラスを列記します。
- 数値
- 数量
- 金額
- 通貨※
- 円貨金額
- 消費税率一覧
- 消費税率
- 外貨金額
- レート一覧
- レート
順に見ていきましょう。
【数値】#
数値系全てのクラスの最上位に位置するクラスです。数値を取るクラスを汎化して抽出されたクラスです。内部では、各言語が持っている十進数クラスを利用することになります(Javaではjava.math.BigDecimal)。その上で、
- 業務上必要な演算処理(例えば四則演算)
- カンマ区切りの文字列を編集して返す
【数量】#
数量クラスは、- 数値
- 単位
- 3個
- 10kg
- 43坪
システムの性格にもよりますが、デフォルトの単位を「個」にしておくと便利でしょう。
そして、
- 単位付きの文字列を返す
場合によっては、「単位」もクラスとして定義しておく必要があります。
【金額】#
様々な通貨の金額を汎化したクラスです。このクラスは通貨を持ちます。アプリケーションはこのクラスのオブジェクト(インスタンス)を直接扱うのではなく、円貨金額と外貨金額のオブジェクトを使います。このクラスは、
- 通貨記号付きカンマで返す
上記クラス図は日本の業務システムで利用する前提で記述してあります。FX取引などのサイト開発では外貨→円貨のみの金額変換ではなく全ての通貨の相互変換が必要になるため、円貨と外貨を区別しないモデルが必要なことに注意してください。
【通貨】#
通貨は、金額がどこの国(または地域)の通貨であるかを示すために必要です。このクラスはレート一覧を持ち、指定された日付(あるいは年月)のレートを返す処理を持ちます。通貨は数値系のクラスではありません。
【円貨金額】#
日本の通貨である円の金額を持ちます。そして日本特有の処理である「消費税額を返す」処理を持たせます。こうすることで、消費税計算の関数を別途作る必要がなくなります。消費税率を特定するために消費税一覧クラスを持ちます。消費税額を計算するためには次の判断が必要になります。
- 内税
- 外税
- 税自身
- 内/外税区分
日本の業務を前提にしたシステムの場合、円貨金額の通貨を明示的に保存しておくことはしません。その場合は金額クラスが通貨クラスを持つのではなく、外貨金額が通貨を持つように設計するといいでしょう。

【消費税率一覧】#
複数の消費税を持つ「一山クラス」です。消費税は日付によって税率が異なるため複数あり得るのでこのクラスが必要です。日付を基にして消費税率を判断し、それを返すメソッドを持ちます。
【消費税率】#
消費税率の数値を持ちます。2011年時点の消費税率は5%ですが、この時に- 5
- 0.05
【外貨金額】#
円貨以外の金額を保持するクラスです。保持している金額値を円貨に換算するための- 円貨金額に変換する
- レートを返す
【レート一覧】#
レートを複数持つ一山クラスです。レートは日付によって変わるためこの一覧クラスが必要になります。日付によってレートを特定するための
- レートを返す
【レート】#
為替のレート値を保持するクラスです。このクラスは、- レート値
- 日付
日付クラス#
日付クラスは何かが実行された年月日を持っているクラスです。年月日は、暦としてあらかじめ定義されているある特定の日を表現するので- 物クラス
- 2011年8月17日の売上金額
- 2011年8月17日の契約件数
日付クラスはとても汎用的に設計する必要があります。例えば、
- 区切り文字で日付を編集した文字列を返すメソッド
- スラッシュ(/)で区切るメソッド
- ハイフン(-)で区切るメソッド
- 翌日の日付を返す
- 翌月の日付を返す
- 翌年の日付を返す
特に会計システムなどでサイト計算が必要な場合は、
- xx日後の日付を返す

日本でのみ使われる前提のシステムの場合はロケールを意識しなくて済みますが、グローバルシステムの場合はシステムが稼働しているロケールも意識して日付編集を行う必要が出て来ます。
その他の例#
かつて関わった物流プロジェクトにて体積クラスというのを設計しました。- 長さ(Length)
- 幅 (Width)
- 高さ(Height)
- 体積
複数の部品を梱包した荷姿が不定型で、出荷する荷姿ごとに体積を管理する必要があったためです。
この体積クラスは結果クラスに分類されます。

添付ファイルの追加
ログイン済のユーザのみが添付ファイルをアップロード出来ます。
添付ファイル一覧
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 particular version was published on 18-8-2011 00:29 by ytp.