山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

オブジェクト指向と非OOの違い

設計レビューをしたときのことです。


WebでクリックしたらDBを更新してメールを送信する機能を

作ります。

StrutsのActionクラスに相当する部分の中でメール送信を

やるような設計になっていたので、メールは別のクラスに

するよう言いました。

そこで担当者が言ったのは「メール送信をするクラスを分ける

ということですね」。


このへんがオブジェクト指向の発想かそうでないかの違いです。

「メールを送信するクラス」だと処理だけに着目した形に

なります。

オブジェクトはデータとデータの扱いをひとつにまとめたものです。

OO的な発想だったら「メールを表すクラス」になるはずです。

メールの種類ごとにクラスがあり、プロパティとしてメールの文章、

日付、氏名、その他メールに記載するデータを持ち、送信メソッド

持つようなイメージ。

1つ1つのインスタンスが1通1通のメールになります。

このへんがすっとわからないようだったら発想の転換が必要です。