この特集のトップページへ
>
Chapter 6:ビジネスロジックの設計
6.2 顧客管理処理
それでは,COMコンポーネントの実装を始めることにする。すでに説明したように,用意すべきコンポーネントには,「顧客管理」「製品管理」「伝票管理」「請求書管理」という4つの処理を実装する必要がある。まずは,顧客を管理するためのCOMコンポーネントにはどのような機能が必要であるのかを考えてゆこう。 顧客を管理するには,おおまかにいって「新規顧客の登録」「既存の顧客の情報変更」「顧客情報の削除」「登録された顧客の一覧取得」という4つの機能が必要となるだろう。
6.2.1 新規顧客の登録
顧客情報は,顧客情報テーブルに記録する。新規顧客を登録するということは,顧客情報テーブルにその顧客のレコードを追加するということである。
「Chapter 3 データストア層の構築」では,顧客情報テーブルをTable 6-4のように定義した。
Table 6-4 顧客情報テーブル
フィールド名 | 型 | サイズ | Null | 解説 |
ID | 数値型 (オートナンバー) | ― | 不可 | 顧客番号。レコードに対して唯一無二の値を割り当てる |
NAME | 文字型 | 64 | 不可 | 顧客名 |
YOMIGANA | 文字型 | 80 | 可 | 顧客名のよみがな |
ZIP | 文字型 | 10 | 可 | 郵便番号 |
ADDRESS | 文字型 | 255 | 可 | 住所 |
TELEPHONE | 文字型 | 32 | 可 | 電話番号 |
FAX | 文字型 | 32 | 可 | FAX番号 |
MEMO | 文字型 | 80 | 可 | 摘要 |
BILLDAY | 数値型 | − | 可 | 請求書を作成する期間の締め日(1〜31) |
MADEUSER | 文字型 | 256 | 不可 | この顧客情報を登録したユーザーのアカウント名 |
MADEDATE | 日付型 | − | 不可 | この顧客情報を登録した日時 |
LASTUSER | 文字型 | 256 | 不可 | 最終更新者のアカウント名 |
LASTDATE | 日付型 | − | 不可 | 最終更新日 |
DELETEDFLAG | Boolean型 | − | − | 削除されたかどうかのフラグ。Trueで削除されたことを,Falseで削除されていないことを示す |
Table 6-4に示したフィールドのうち,営業部のメンバーが新規顧客を登録するときに必要となるものは,「NAME」「YOMIGANA」「ZIP」「ADDRESS」「TELEPHONE」「FAX」「MEMO」の7つである。締め日を示すBILLDAYフィールドの値も新規顧客の登録に必要なものではあるが,これは営業部のメンバーが設定するというよりも,顧客が登録されたのちに,経理部のメンバーがあとから設定することが多いと思われるため,ここでは除外する。
そこで,顧客を管理するコンポーネントであるBusiness.Customerコンポーネントに対し,List 6-1に示すAddCustomerというメソッドを実装すれば,プレゼンテーション層に置かれたプログラムからの要求を受け,新規顧客を追加することができるようになる。
List 6-1のAddCustomerメソッドには,第1引数から順に,顧客名,顧客名のよみがな,郵便番号,住所,電話番号,FAX番号,摘要を指定する。すると,このメソッドはその情報を顧客情報テーブルに追加し,顧客に割り当てられた顧客番号(顧客情報テーブルのIDフィールドの格納される値)を戻り値として返す。
なお,AddCustomerメソッドでは,顧客情報テーブルのMADEUSER,MADEDATE,LASTUSER,LASTDATEという各フィールドに格納される値をメソッドの引数として指定できないようにした。MADEUSERフィールドとLASTUSERフィールドには,このメソッドを呼び出したユーザーのアカウント名を,MADEDATEフィールドとLASTDATEフィールドには,このメソッドが呼び出された日時を,それぞれ強制的に書き込むことにする。なぜなら,たとえばMADEUSERフィールドやLASTUSERフィールドの値をメソッドの引数として受け取ることができるようにすると,プレゼンテーション層に置かれたプログラムは任意の文字列をユーザー名として渡すことができるようになるため,ユーザー名を偽装できてしまうからである。
Chapter 6 5/92 |