この特集のトップページへ
Chapter 6:ビジネスロジックの設計

head1.gif 6.2 顧客管理処理

 それでは,COMコンポーネントの実装を始めることにする。すでに説明したように,用意すべきコンポーネントには,「顧客管理」「製品管理」「伝票管理」「請求書管理」という4つの処理を実装する必要がある。まずは,顧客を管理するためのCOMコンポーネントにはどのような機能が必要であるのかを考えてゆこう。  顧客を管理するには,おおまかにいって「新規顧客の登録」「既存の顧客の情報変更」「顧客情報の削除」「登録された顧客の一覧取得」という4つの機能が必要となるだろう。

head2.gif 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日付型不可最終更新日
DELETEDFLAGBoolean型削除されたかどうかのフラグ。Trueで削除されたことを,Falseで削除されていないことを示す

 Table 6-4に示したフィールドのうち,営業部のメンバーが新規顧客を登録するときに必要となるものは,「NAME」「YOMIGANA」「ZIP」「ADDRESS」「TELEPHONE」「FAX」「MEMO」の7つである。締め日を示すBILLDAYフィールドの値も新規顧客の登録に必要なものではあるが,これは営業部のメンバーが設定するというよりも,顧客が登録されたのちに,経理部のメンバーがあとから設定することが多いと思われるため,ここでは除外する。

 そこで,顧客を管理するコンポーネントであるBusiness.Customerコンポーネントに対し,List 6-1に示すAddCustomerというメソッドを実装すれば,プレゼンテーション層に置かれたプログラムからの要求を受け,新規顧客を追加することができるようになる。

 List 6-1AddCustomerメソッドには,第1引数から順に,顧客名,顧客名のよみがな,郵便番号,住所,電話番号,FAX番号,摘要を指定する。すると,このメソッドはその情報を顧客情報テーブルに追加し,顧客に割り当てられた顧客番号(顧客情報テーブルのIDフィールドの格納される値)を戻り値として返す。

 なお,AddCustomerメソッドでは,顧客情報テーブルのMADEUSERMADEDATELASTUSERLASTDATEという各フィールドに格納される値をメソッドの引数として指定できないようにした。MADEUSERフィールドとLASTUSERフィールドには,このメソッドを呼び出したユーザーのアカウント名を,MADEDATEフィールドとLASTDATEフィールドには,このメソッドが呼び出された日時を,それぞれ強制的に書き込むことにする。なぜなら,たとえばMADEUSERフィールドやLASTUSERフィールドの値をメソッドの引数として受け取ることができるようにすると,プレゼンテーション層に置かれたプログラムは任意の文字列をユーザー名として渡すことができるようになるため,ユーザー名を偽装できてしまうからである。

prevpg.gif Chapter 6 5/92 nextpg.gif