オブジェクトの種類

役割で分類したオブジェクトの種類とその性質に基づく考慮点について、もう少し考えていきたいなーと思ったので、備忘メモです。

多様なオブジェクト

オブジェクト指向言語を学んだ時、「オブジェクトとはデータと振る舞いを持つものだ」というような解説をどこかで読んだかもしれません。

その後、実際に開発をはじめると、たいていの場合、たくさんの"オブジェクトなるもの"を作ります。おそらく、プロジェクトで採用したフレームワークやコーディング規約にしたがって、たとえばDBを触るデータアクセスオブジェクトや、画面の入出力項目に対応したフォームオブジェクトや、DBテーブルに対応したデータオブジェクトや、単にデータを持ち運ぶためのデータトランスファオブジェクトなどを、せっせと作ることでしょう。

この時、個々のクラスの責務に注意を払うのはもちろんですが、オブジェクトの種類にも気を留めたいというのが、今日思ったことです。

システムには多様なオブジェクトがあります。どんな種類のオブジェクトが存在するかは、採用したアーキテクチャに依存するので、一概には言えません。

上で挙げた他にも、こんな見方ができるそうです。

(略)ビジネスオブジェクトは全体の一部でしかありません。ユーザがシステムを使うためのユーザインターフェースオブジェクトや、複数のビジネス概念を扱うロジックを実装するプロセスオブジェクト、セキュリティやメッセージ処理などの技術的機能を提供するシステムオブジェクト、場合によってはビジネスオブジェクトを永続化する何らかの形式のデータオブジェクトなども必要になります。

Scott W. Ambler:『オブジェクト開発の真髄』,p.25,2005.7.

これらのオブジェクトの種類によって、実装の詳細――わかりやすいところでいえば、メソッドの可視性や、例外の扱い方など――について考えるべきことや範囲、決定の根拠などは、違ってくるはずです。

しばらくは、コードを読んだり書いたりする時、そういう観点を意識しようと思いました。