痔になりやすい生活習慣とは?

現在、オブジェクト指向設計を勉強しています。

オブジェクト指向設計では対象を細かな機能に分類していくと思うのですが
いざやってみると自分が分類した機能の定義が若干他とずれているような気がします。

例を挙げるなら、Manager、Action、Controller、Service等の様な物を定義して
対象を構成しようと、まぁ、思ったとしても、明確な定義が自分の中にあるわけでも
無く、このまま続けても読み手に誤解を与える様な成果物にしかならないような
気がしています。

こういう細かい機能を一般化して明確に定義している物があれば、命名より役割
をある程度推測することが出来、結果的には可読性につながると思っています。

こういう物は、ある程度、概念を標準化することにより効用が得られる物であると
思うので、どっかの書籍にあっても良いような気がするのですが、自分は見つける
事が出来ていません。

洋書でも構いませんので、どなたか、ご存知の方がいらっしゃいましたらご紹介
頂けませんでしょうか?(学会・論文等の紹介でも構いません)

ご協力の程、宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

下の方に思い当たる書籍を挙げてみました。



ご質問の問題にしっくりくるのが「ドメイン駆動設計」、「エンタープライズ アプリケーションアーキテクチャパターン」、「オブジェクトデザイン」なのですが、どれもやや取っ付きにくいかも知れません。
「デザインパターンとともに学ぶオブジェクト指向のこころ」「アジャイルソフトウェア開発の奥義」は読み物的な雰囲気もあり、これらの方が読み易いかも知れません。


また、下記のサイトは「エンタープライズ アプリケーションアーキテクチャパターン」の概要を独自に翻訳された方のページですが参考になるかと。
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/



■ デザインパターンとともに学ぶオブジェクト指向のこころ
http://www.amazon.co.jp/dp/4894716844

■ ドメイン駆動設計
http://www.amazon.co.jp/dp/4798121967

■ エンタープライズ アプリケーションアーキテクチャパターン
http://www.amazon.co.jp/dp/4798105538

■ アジャイルソフトウェア開発の奥義
http://www.amazon.co.jp/dp/4797347783

■ オブジェクトデザイン
http://www.amazon.co.jp/dp/4798109037

■ アナリシスパターン
http://www.amazon.co.jp/dp/4894716933
    • good
    • 0
この回答へのお礼

ご紹介ありがとうございます。まずは、読んでみたいと思います。
一点ご質問させて頂きたいのですが、

「エンタープライズ アプリケーションアーキテクチャパターン」は、
表題に“アプリケーション”と付いていますが、紹介されている
パターンはフレームワーク・ライブラリ開発の際には適用できない物
という事でしょうか?

お礼日時:2012/05/28 01:51

> 「エンタープライズ アプリケーションアーキテクチャパターン」は、


> 表題に“アプリケーション”と付いていますが、紹介されている
> パターンはフレームワーク・ライブラリ開発の際には適用できない物
> という事でしょうか?

そんな事は無いですよ。

例えば、フロントコントローラは多くのWeb系フレームワークで採用されている構造に名前を付けたものと言ってもよいくらいです。
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?Front …

また、 Base Patterns は様々なレベルのコードに共通する基本的なパターンを解説していますし。


ちなみに、フレームワークで使えるパターンを多く扱っているものといえば、下記の2つが思い浮かびますね。

■ J2EEパターン
http://www.amazon.co.jp/dp/4822282287/

■ 実践J2EEシステムデザイン
http://www.amazon.co.jp/dp/4797322888/
    • good
    • 0
この回答へのお礼

了解致しました。

早速、今週末にでも本屋に足を運んでみようと思います。

ご協力真にありがとうございました。

お礼日時:2012/05/29 23:29

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qクラス設計が学べる本

クラス設計が学べる本でお薦めがありましたら、
教えて下さい。
プログラミングはある程度できるのですが
クラス設計がまだ出来ません。
実践+本でも勉強したいので、お薦め本を教えて下さい。
よろしくお願いします。

Aベストアンサー

クラス設計に直接関係するのかわかりませんが、

「Java言語で学ぶデザインパターン入門」というのも
なかなか勉強になりましたので(私がですが...)参考にしてください!
あとクラス設計と直接関係ないかもしれませんが
「リファクタリング」もとても勉強になりましたよ!

#1の方が薦められている本も読みました。
自分が読んでいる本が他の方が薦めているんだなぁと思うとなんかいい本かってよかったなぁって思いますね!

Qなぜインタフェースを使うのか?

カテゴリはJavaですが、オブジェクト指向という観点での質問です。

私はオブジェクト指向を勉強中です。(C#)
そこで、疑問に思ったのがタイトルで示したインタフェースについてです。
以下に疑問を列挙します。

1.インタフェースはなぜ使うのですか?
2.使うメリットはなんですか?
3.インタフェースのインスタンスって作れるのですか?
4.インタフェースは必ずどこかのクラスに継承されないといけないのですか?
 単体では何もできないのですか?
5.具体的な使い方を教えてください。

全部でなくてもよいのでわかる方ご教授よろしくお願いいたします。

Aベストアンサー

インターフェースとは「役割」です。
一般的なインターフェースの命名規則は「~ableを末尾に付ける」とあります。例えば「比較できる」なら「ICompareble」です。
メディア再生ならplay,stop等を持ったIPlayableインターフェースが考えられます。これで動画、音楽、静止画が文字通り「再生できます」。

クラスは実装とインターフェースの両方を継承しますが、これでは不便なことが沢山あります。最も不便なのは、余計なメソッドが沢山付いてくること、多重継承でもしない限り、継承だけでは機能を共有しきれない(多重継承は多重継承で、別の問題がある)事です。

インターフェースにはこの制約がありません。「~ができる」という役割に必要なメソッド群を定義し、その役割を持たせたい複数のクラスに実装させれば良いのです。
また逆に、1つのクラスに複数の役割を持たせることができます。


インターフェースは、引数の型指定に使うと用途がよく分かります。
元のインスタンスが何を継承していようと、インターフェースを通じて操作できるのはそのインターフェースに定義されたメソッドだけ、つまり純粋に「ある役割について操作したい」というメソッドを定義できます。


1.インタフェースはなぜ使うのですか?
 継承では制約が多い場面で、特定の「役割」に基づいた操作を定義したいとき、インターフェースを使います。

2.使うメリットはなんですか?
 継承より制約が少ないことです。中身が空っぽというデメリットは、「委譲」で回避できます。委譲とは、実装済みのクラスに処理を委ねてしまう(単なるクラス呼出し)です。

3.インタフェースのインスタンスって作れるのですか?
 作れませんが、インターフェースの引数や変数に、インターフェースを実装したクラスのインスタンスを代入できます。この辺の使い勝手は普通のクラスと同じです。

4.インタフェースは必ずどこかのクラスに継承されないといけないのですか?
 単体では何もできないのですか?
 中身がありませんし、それだけではインスタンス化できませんから、YESです。

5.具体的な使い方を教えてください。
 理論的な話なら「Javaオブジェクト設計」というペーター・コード氏の著作をお薦めします。

 C#での具体例なら、参考URLにプラグインの作り方が載っています。

参考URL:http://dobon.net/vb/dotnet/programing/plugin.html

インターフェースとは「役割」です。
一般的なインターフェースの命名規則は「~ableを末尾に付ける」とあります。例えば「比較できる」なら「ICompareble」です。
メディア再生ならplay,stop等を持ったIPlayableインターフェースが考えられます。これで動画、音楽、静止画が文字通り「再生できます」。

クラスは実装とインターフェースの両方を継承しますが、これでは不便なことが沢山あります。最も不便なのは、余計なメソッドが沢山付いてくること、多重継承でもしない限り、継承だけでは機能を共有しきれ...続きを読む

Q「ラッパークラス」の存在意義が分かりません。

「ラッパークラス」の存在意義が分かりません。

ラッパークラスの使い方などについての解説はよく目にしますが、
その意義となると、明確な説明を見たことがありません。
(本質問では、使い方を質問しているわけではありません。)

どういう意味で、便利なのか、
つまり、その存在価値について、お聞きしたいのです。

これがないと乗り越えられない壁があるのでしょうか。
その壁を乗り越えるための道具として、用意されたものであるなら、
その壁というものを教えて頂きたいです。

どなたか宜しくお願い致します。

Aベストアンサー

個人的に納得している状況を話しますね。
プリミティブなデータ(例えばint)はそれ自体に実体が
あるから、「インスタンス化」なんてしませんよね。
ということは「null」には絶対にならないわけです。
ところで、データベースからレコードを読み込み、整数型の
フィールドのデータを受け取ることを想定します。
そのフィールドがnullだった場合、受け取る変数がint型で
あったら、「nullであること」を表現できません。nullと
0は違いますからね。でも、Integer型の変数ならnullにする
ことができます。それにtoStringで編集したりできるのも
ウレシイところです。
あと、リフレクションをやると分かりますけど、実行させる
メソッドに渡す変数は本体の定義がプリミティブ型でも、
オブジェクト型の配列にする必要があるので、ラッパークラスに
限られます。


人気Q&Aランキング