3. モデル・図の作成 |
3.4 クラス図(class diagram) |
![]() |
「クラス図」は、対象領域やシステムの静的な構造を表すもので、「クラス」と「クラス間の静的な関係」を図に表現していくんだよ。 | |||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
![]() |
まず、クラスの抽出から始めよう。クラスの抽出とは、クラスを見つけ出すことだよ。 | |||||||||||||||||||||||||||||
![]() |
クラスはどうやって見つけるのですか? | |||||||||||||||||||||||||||||
![]() |
先程作成してもらったシナリオから、クラスの候補となる名詞や名詞句を検討するんだよ。それらはオブジェクトの候補になるから、そこからクラスを導き出し、それがクラスとして適切かどうかを判断していくんだ。 | |||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
![]() |
シナリオから名詞を検討したところ、クラスの候補として次のようなものが考えられました。(図3.4.1) | |||||||||||||||||||||||||||||
図3.4.1 Chen君が考えたクラスの候補
|
||||||||||||||||||||||||||||||
![]() |
なるほど。では、Chen君が見つけ出したクラスの候補が本当にクラスとして適切かどうかを判別することにしよう。名詞を取り出すことは簡単だが、その後のフィルタリングがとても重要で、難しいところなんだよ。システムにとっての単一の概念を探すことがポイントなんだ。 | |||||||||||||||||||||||||||||
|
![]() |
|||||||||||||||||||||||||||||
![]() |
顧客係はアクターなので、クラスにはならないですね。また、「大阪配送センター」と「神戸配送センター」は両方とも配送センターの具体例(オブジェクト)なので、抽象化して「配送センター」クラスにできると思います。 | |||||||||||||||||||||||||||||
![]() |
そうだね。また、Chen君が考えたクラスの候補の中には、状態を指していたり、クラスの持つ情報を表している単語も含まれているようだね。「登録顧客」は顧客が登録されているかされていないかという状態を表しているから、「登録顧客」クラスではなく、「顧客」クラスとなるだろう。それに、「お客様番号」も「顧客」クラスが持っている情報だと考えられるから、クラスとは言えないね。 | |||||||||||||||||||||||||||||
![]() |
なるほど、そうですね。状態かどうかという判別は難しいですね。 | |||||||||||||||||||||||||||||
![]() |
「注文票」と「配送票」については、それぞれ注文情報と配送情報を持ったクラスという意味で「注文」クラスと「配送」クラスにしてもいいかもしれないね。 | |||||||||||||||||||||||||||||
![]() |
はい、そうですね。 | |||||||||||||||||||||||||||||
![]() |
それから、「注文受付画面」クラスは確かに大事なクラスなんだが、画面などのインターフェースとなるクラスについては設計段階で考えていくので、ここで作成するクラス図のモデルには含めなくていいよ。 | |||||||||||||||||||||||||||||
![]() |
分かりました。 |
|||||||||||||||||||||||||||||
![]() |
では、シナリオには登場していないが、他に必要と思われるクラスはないかな? | |||||||||||||||||||||||||||||
![]() |
えーっと、「注文商品」クラスは商品ごとの注文情報だけで、商品そのものの情報は持っていないですよね。ですから、商品名や定価の情報を持つ商品マスタのような「商品」クラスが必要ではないでしょうか? | |||||||||||||||||||||||||||||
![]() |
そうだね。では、ここまでで抽出されたクラスをまとめてみよう。(図3.4.2) |
|||||||||||||||||||||||||||||
図3.4.2 抽出したクラス![]() |
||||||||||||||||||||||||||||||
![]() |
この後で作成する図によっても、新しいクラスが発見されたり、クラス名が変わってきたりする場合があるから、この時点で考えられるクラスがすべてとは限らないことを頭に置いておこう。 | |||||||||||||||||||||||||||||
![]() |
分かりました。 |