タグ

oopとjavaに関するmasa0x80のブックマーク (4)

  • Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その2) - 達人プログラマーを目指して

    前回のJavaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その1)に引き続き、試験問題のリファクタリングについて考えます。 画面入出力処理の抽象化とカプセル化 前回はこの試験問題でもっともコーディングが面倒なファイル入出力関連の処理をRepositoryというインターフェース型で抽象化することで、処理が共通化されるだけでなく、全体のプログラムの記述が簡易化されることを説明しました。この試験問題のプログラムでファイル入出力とならんでもう一つ面倒なのは、コンソールを使ったユーザーとの対話処理を行う部分です。この処理は一見単純そうですが、不正な入力値があった場合に処理を繰り返すなど、COBOL級の分岐とループ構造だけで表すと処理が結構複雑化してしまいます。実際、オリジナルのソースでは、以下のようなきわめて複雑な多重ループ構造がいたるところに出現します。 (Javaプログラ

    Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その2) - 達人プログラマーを目指して
  • 5年後に後悔しないJavaプログラムの書き方 - L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • まつもと直伝 プログラミングのオキテ 第3回(3)

    図7 Mix-inによるStreamクラスの構築例<BR>クラス階層はツリー構造を保ちつつ,コードのコピーも避けている。 継承には2つの意味がある Javaのような静的型のオブジェクト指向言語の変数には,変数を介して呼び出されるメソッドを制限する働きがありました。ただし,制限がかかるのは「どのようなメソッドを持っているか」であって,「どのように実装されているか」ではありません。 今まで一まとめにして継承と呼んできましたが,実は継承には2つの異なる概念が含まれています。一つは,「どのようなメソッドを持っているか」あるいは「どのように振る舞うか」ということに着目した「仕様の継承」です。 もう一つは「どのようなデータ構造を使い,どのようなアルゴリズムで処理するか」ということに着目した「実装の継承」です。 静的型言語では両者の区別が重要になります*4。Javaでもこの2つを明確に区別しており,実装

    まつもと直伝 プログラミングのオキテ 第3回(3)
  • dpinfo.html

    目次 はじめに Abstract Classパターン Abstract ClassパターンRuby版 (by 助田雅紀さん) Balkingパターン Before/Afterパターン Futureパターン FutureパターンRuby版 (by 助田雅紀さん) Generation Gapパターン Hook Operationパターン Hook OperationパターンRuby版 (by 助田雅紀さん) Immutableパターン Marker Interfaceパターン Monostateパターン MonostateパターンRuby版 (by 助田雅紀さん) MonostateパターンPerl版 (by 宮川さん) Null Objectパターン Null ObjectパターンとSingletonパターン Producer-Consumerパターン Sharableパターン Singl

  • 1