いま、ソフトウェア製品を扱う小さなECサイトを営んでいるとする。
(なお、本演習ではドメイン層のみを扱い、かつ顧客、消費税、税率、通貨、お釣り、在庫などの概念は扱わないものとする)
本演習は TDD を体験することを主眼としていますので、 プログラミングの速さを競っているのではない 点にご注意ください。 機能を粗く速く実装することよりも、テストを書いて動かすことによるフィードバックを受けながら、 リファクタリングを忘れずに着実に進めていくことが、本演習では重要です。
いま、以下の2つの種類(category)のソフトウェア製品(product)を扱っている。
- ワードプロセッサ
- スプレッドシート
製品は名前(name)と価格(price)を持つ(今回は消費税を扱わないので、単純に価格と考えてください)。
例:
- ワードプロセッサ「MS Word」の価格は 18,800円
- ワードプロセッサ「一太郎」の価格は 20,000円
- スプレッドシート「MS Excel」の価格は 27,800円
- スプレッドシート「三四郎」の価格は 5,000円
現時点では1回にどれか1つの製品を1つのみ購入する契約(contract)ができるものとする(カートに一つしか入らない貧弱なECサイトのイメージ)。契約が成立(sign)した場合、
- ワードプロセッサは契約日(signed date)に直ちに売上(revenue)全額を収益認識(revenue recognition)する
- スプレッドシートは契約日に売上の2/3、30日後に1/3を収益認識する
もちろんのこと、収益認識の総和は売上とかならず 完全一致 しなければならない。
例:
- 2月1日に「MS Word」が1つ売れる契約が成立したとき、2月1日 に 18,800円収益認識される
- 2月1日に「MS Excel」が1つ売れる契約が成立したとき、2月1日 に 18,534円、3月3日 に 9,266円収益認識される
- 2月1日に「三四郎」が1つ売れる契約が成立したとき、2月1日 に 3,334円、3月3日 に 1,666円収益認識される
- (「一太郎」に関してもテストしてください)
--
短縮 URL: https://bit.ly/3nkWwYq
この演習問題は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。
また、この演習問題は Martin Fowler の著作 『Patterns of Enterprise Application Architecture』 から着想を得ています。