Entry

読書メモ - 『アナリシスパターン』のパーティパターンで挫折したら14章を読むといいと思う

2008年04月29日

今,『アナリシスパターン』を読んでいるんですけれど,おそらくこの本,読み方があるんだと思います。とりあえず,パーティパターンで挫折した人は,14章から読むと分かりやすくなるんじゃないかと思う。

アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)
マーチン ファウラー
ピアソンエデュケーション
売り上げランキング: 58240
おすすめ度の平均: 5.0
5 ビジネスモデリングで必須
5 モデリングについてのイマジネーションをかきたてる良書
5 よい本ですね
5 「オブジェクト」指向モデリングの導き手

本書の場合,いきなり独特の図が出てくるもんで,それにまずびっくりしてしまいます。UML(クラス図)というよりは ER 図に似ているから,データベースのモデリングをやっている人には取っ付きやすいかもしれないけれど,プログラムを実装している向きには,「じゃあどうやって書くのさ!」ってなことになりそうです。特に,「関連」なるもんが,実装的にどう記述できるのかが,ぱっと見よく分からない。

けど,『アナリシスパターン』も,実はちゃんと実装に気を配っていて,「関連」なるものをどう記述するか,についても詳しく検討されていたりします。それが第14章「型モデル設計テンプレートのためのパターン」。Smalltalk と C++ の実装について検討されています。コーディング例については,ちゃんと書かれてませんけど。

例えば,14章にしたがって,冒頭のパーティパターンをコーディングしてみます。パーティパターンってのは,次のようなもん。

パーティパターンの図

つまるところ,人や組織みたいなクラスに,直接電話番号や住所のような関連を持たせるんじゃなくて,そのスーパークラスとして作ったパーティクラスに抽象化しましょう,という話。クラス定義はともかく,宣言だけでも書いてみると,多分こんな風にかけるはず。

class Tel
{
public:
    std::string tel;
    std::list<Party&> partyList;
};

class Address
{
public:
    std::string address;
    std::list<Party&> partyList;
};

class MailAddress
{
public:
    std::string mailAddress;
    std::list<Party&> partyList;
};

class Party
{
protected:
    Tel& tel;
    Address& address;
    MailAddress& mailAddress;
public:
    void setTel(Tel& tel_);
    void setAddress(Address& address_);
    void setMailAddress(MailAddress& mailAddress_);

    Tel& getTel();
    Address& getAddress();
    MailAddress& getMailAddress();
};

class Person : public Party
{
};

class Organization : public Party
{
};

この例は双方向に関連を持たせた場合で,電話番号クラスや住所クラスにもパーティクラスのコレクション(list)を持たせています(あんまり使わなそうですが)。

四角や丸を描くよりも,コーディングになじみのある向きは,こっちの方がどんな振る舞いをするのかイメージしやすいはず。図は難しげでも,ソースに起こしてみると,(見た目ほど)大したことをやっていないことに気づくんじゃないでしょうか。慣れてくると図を見ただけで,ある程度実装をイメージできるようになるので,そうなると割とすいすいと読めるようになると思います。

『アナリシスパターン』を読む上で,もう少し必要な知識があるとしたら,それは上流的な知識なんだと思います。例えば,会計用語だとか,金融派生商品(デリバティブ)の基本的な仕組みみたいなもん。基本的に,本書は再利用性を考えたモデリングの本なので,金融用語が分からなくても,それほど問題になることはないんだと思います。課題に対する解決法が,そもそも抽象化されているから,個々の用語自体にそれほど大きな意味はない(適用例くらいの意味しかないと思う)。けど,せっかく具体例が示されているのに意味が分からないと,ちょっと悲しいですもんね。

この手の本は,上流設計の人たちだけに読ませておくのはもったいないと思います。実装面でも活用すれば,柔軟で堅牢なプログラムを作ることができるようになりそうな感じ。

Trackback
Trackback URL:
[2008年05月12日 20:10] アナリシスパターン―再利用可能なオブジェクトモデル from Type5w4のBook Diary
アナリシスパターン―再利用可能なオブジェクトモデルキーワード:  マーチン・ファウラー、オブジェクト指向、設計、パターン、概念モデルオブジェクト指向での... [more]
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN