オブジェクト指向

僕と地豆とDDD

Domain-Driven Design: Tackling Complexity in the Heart of Software作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 113回この商品を含むブログ (89件) を見るDomain-Driven …

UnsupportedOperationExceptionと相続拒否

昨日ご紹介したbaseunitsですが、そのコードを社内コードレビューに掛けた際、id:cobonasからこんな指摘がありました。 package jp.tricreo.baseunits.util; import java.util.Iterator; /** * 明示的に、対象のコレクションに対する操作ができないことを表…

ボク、if文。わるいモンスターじゃないよ!

id:aroundthedistance に召還されたぜ。http://d.hatena.ne.jp/aroundthedistance/20100727/1280227851…その昔なー。Seasar Conferenceで「あなたのコードからnewとifが消えます、魔法のDI」みたいなセッションをした。今思い出して「釣りすぎたぜサーセン」…

インスタンスを抽象的に扱う

まず「抽象的」という言葉が難しいのかな。俺も最初の頃、一体何なのかわからなかった。プログラムに全く縁もゆかりも無い相方に、オブジェクト指向の話をすこしだけ聞かせたことがあって、「抽象的って、要は大ざっぱってこと?」と問われた。なるほど、良…

「仕様」と「実装の詳細」(2)

繰り返す。Fooクラスを利用するMainクラスを書く時、XはFooの「仕様」に依存すべきであり、Fooの「実装の詳細」に依存すべきではない。 public class Foo { public String bar; public Foo(String bar) { this.bar = bar; } public String getBar() { return…

仕様(インターフェイス)と実装の詳細 (1)

APIの公開/非公開が意識できるようになると共に、「仕様(インターフェイス)」と「実装の詳細」を意識できるようになるとよい。 このクラスの公開APIはどれか、非公開APIはどれか このクラスの仕様(インターフェイス)はどれか、実装の詳細はどれか という…

可視性と公開APIと非公開(内部)APIと

Javaではpublic, protected, default, privateという4種類の可視性がある。Javaを始めてしばらくの間、この4つの使い分けがよくできていなかった。 「外から呼ぶならpublic、呼ばないならprivate」時代 当時から、なるべく可視性は下げた方が良い(オブジェ…

インピーダンスミスマッチング

今日はインピーダンスミスマッチについて語ってみたいと思うのだが、そもそもインピーダンスって何よという所を説明しなければなるまい。前半、オブジェクト指向には全然関係ない話に見えると思うが、少々辛抱いただきたいw オームの法則 私が初めて「イン…

オブジェクト指向のプログラムに込める「意図」

その昔、プログラムを覚えたての頃、プログラムってのは単に「処理」を記述するものだと考えていた。処理を1ステップごとに記述し、場合によってはサブルーチンに切り出し、再利用する。今振り返ると、オブジェクト指向を覚え始めてしばらくして、その意識は…

例えば、if〜instanceofを避ける(2)

例えば、if〜instanceofを避ける(1) - 都元ダイスケ IT-PRESSの続き。解決策は幾つかある。とりあえず今回は1つ紹介。 public enum Processor { LIST(List.class) { @Override public void process() { // List用処理 } }, MAP(Map.class) { @Override publ…

例えば、if〜instanceofを避ける(1)

先日の地豆の開発チャットでの話題をまとめておく。Javaにおいて、気をつけて使わないとオブジェクト指向の世界を大きく壊してしまう可能性のある危険ワードはstaticとinstanceofだと思っている。staticについては、継承とコンポジットで少しだけ触れた通り…

継承とコンポジット

id:happy_ryoに「わかんねーんだよ、説明してみろゴルァ」されたので、書いてみる。 前書き*1 とりあえず、本日のエントリのキモを最初に。「オブジェクト指向は、隠す技術である」(俺談w)ということを意識して読んで見てください。隠すとは何か? 公開し…