• ベストアンサー

アスペクト指向について

アスペクト指向プログラミングについて今勉強中です。 分からないことはいくつあります。 1)その手法はなんのものものですか?  単純なクラスの設計の手法ですか?その手法を適応するために  あるツールを使わないといけないでしょうか?  簡単なサンプルソースをあれば、いい 2)ログの出力にいい方法ですか? 以上です。よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.1

これは、横断的関心事というやつにどれだけの価値を見出すか、ということかと思う。クラス設計の手法とは、ちょっと違うのでは。 例えば、あるシステムを設計するとき、それぞれのクラス図のようなものを描いて全体を定義していくわね。そして、細かな仕様などを決めていき、設計する。が、そこには、果たして「ログの出力」だのといったものは含まれているだろうか? もちろん、例外発生だのといった、必要なログ出力は最初から定義されるだろう。が、開発中に必要に応じて用意されるさまざまなログ出力などはどうか。それらは、そもそも完成したプログラムからは取り除かれる機能だ。開発中に、一時的に用意しておくもの。そして、完成したときには、不要となり削除される。 この種の機能は、「このオブジェクトにこういう理由で必要とされる」というより、すべてのオブジェクトに片っ端から一律に用意される。そしてそれを元に開発を行い、完成したらば、それらは一律に削除される。オブジェクトの内容とは無関係に、「すべてのオブジェクトに、一律に足したり引いたりされる機能」だな。 これが横断的関心事というやつ。これ、ほとんどすべてのところで、ほとんど同じような機能を組み込み、そして最終的に取り除かれる。だったら、こうした横断的関心事を「全部にまとめて入れたりはずしたりできる」ようにシステムを設計できないか、ということで考えられたのがAOP。まぁ、ログ出力などは格好な題材だと思う。 AOPは、ツールを使うというより、そのためのフレームワークを利用して組み込むのが一般的だろう。Javaだと、AspectJが一番有名だろうな。他、Spring Frameworkとか、Seasar2などもAOP機能を備えている。そうしたフレームワークを利用してAOPを組み込むのが一般的だろう。

ikutame
質問者

お礼

勉強になりました。返答ありがとうございました。

その他の回答 (2)

  • newta777
  • ベストアンサー率58% (20/34)
回答No.3

通常DIの機能と共に使用してAOPの機能を利用します。 Javaでよく言われるフレームワークはSeasar2とSpringですね。 私はSeasarのほうが好きです。 回答 1)手法といえば手法ですが、フレームワークを利用するのが普通なので  自分で作る必要はありません。  DIとAOPの関連解説  http://www.atmarkit.co.jp/fjava/rensai3/seasar2_02/seasar2_02_2.html http://www.atmarkit.co.jp/fjava/rensai3/seasar2_02/seasar2_02_3.html 2)ログ出力にも便利ですよ。  そのほかDBのトランザクション管理や  Exceptionのthrowされたものに対する処理など  アイデアしだいではさらに便利になりますよ。

回答No.2

私自身、質問者さんと同じように「アスペクト指向」を今も勉強中の者です。よって、今回はお勧めサイトだけを紹介しておきます。 「Spring Framework」 http://www.techscore.com/tech/Others/Spring/index.html 【コラム】ライトニングJava (33) アスペクト指向(1) - 新しいプログラミングの形、アスペクト指向 http://journal.mycom.co.jp/column/java/033/index.html

関連するQ&A

  • オブジェクト指向に関して。

    Javaの解説本を読んでオブジェクト指向プログラミングという物があることをしりました。その本には「オブジェクトはデータとそのデータを扱うための機能を持っている。この機能はメソッドと呼ぶ。クラスは設計図のような物で変数とメソッドから構成されている。設計図を実際に形にした物がインスタンスである。」と書いてありました。私はオブジェクト=クラスのような感じがしたのですが、実際のところオブジェクト=クラスでいいのでしょうか?  また、友人に話したところ、オブジェクト指向はサブルーチンに似ているといっていました。私はプログラミングの知識が全くないのでサブルーチンという物が何なのかわからないのですが、サブルーチンとオブジェクト指向の考え方は違うような気がするのです。友人に説明して納得させるにはどうしたら良いのでしょうか? ぜひ、力を課してください。

  • オブジェクト指向の参考になるよいソース

    オブジェクト指向の設計・プログラミングをしたいのですが、イマイチ要領を得ません。そこで、よいソースを見てそこから何か学べればと思うのですが、参考になるよい設計がなされている小規模~中規模のものはありますでしょうか?(オープンソースものになるかと思いますが) #何をよいとするかは主観で構いません。人それぞれだと思うので

  • 【オブジェクト指向について】

    【オブジェクト指向について】 こんにちは。初めて質問をさせていただきます。 さて、ただいまVBを勉強中なのですが、オブジェクト指向のところで躓いてしまいました。 質問したい事は以下の点です。 (1) オブジェクト指向の理解について   オブジェクト指向とは、プログラミングをするときに変数や機能などをクラスというものに格納しておくことで、プログラミングを円滑にすすめるための概念であると理解していますが、この理解は正しいのでしょうか? ご回答お待ちしております。よろしくお願いいたします。

  • オブジェクト指向の特徴

    プログラミングにおいて Java言語などのオブジェクト指向とは 「クラス(設計図)からインスタンス(実体)を量産できる。」がオブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? またオブジェクト指向とオブジェクト指向ではない言語の決定的な違いや 実際に実務において経験した感覚的な違いなどがあれば教えてください。 インターネットに乗っていない些細なことでも構いません。

    • ベストアンサー
    • Java
  • オブジェクト指向プログラミングについて

    VisualBasicを対象にしたオブジェクト指向プログラミングに関する参考書、Webサイトなどはないでしょうか。 現在、クラスモジュールなどを多用しオブジェクト指向プログラミングを実践しているつもりですが、あまり勉強したわけではないのでいまいちよくわからないです。 (オブジェクト指向プログラミングのメリットとデメリットなど)

  • オブジェクト指向について

    趣味でプログラミングをしているのですが オブジェクト指向の概念がうまく理解できていないので 教えていただけませんでしょうか? 解説本などを読むと、オブジェクト指向のクラスを動物クラスを継承して犬クラスや猫クラスなどと解説してあるのですが。 どうも、僕がプログラム設計するとしっぽクラスや泣き声クラスなどといった違った動物の類似機能をまとめてのクラスをつくり各メソッドとしてしまいまっています。 動物クラスや乗り物クラスを組み合わせてプログラムを設計する事ができません。 本格的なプログラムを組む用途では無いので気にしなくても目的の機能が実装できれば問題無いと知人からは言われ(面倒なので教えたくないのかもしれませんが)そのまま来てしまいました。 最近、気になって来たので。 正しい使い方を身に着けたいと思いチャレンジしていますが、変な癖がついていて犬や猫クラスなどと思いながら設計していると思考が止まってしまいます。 そこで、下記のことを教えていただけませんでしょうか? (1)泣き声クラスなどの同機能を1つのクラスにしてしまう設計しか出来ない(発想できない)のは考え方のどこがわるいのでしょうか? (追記:一部分だけならペンギンクラス猫クラスなどと言う動物クラスの継承的な発想はできるのですが実際のプログラミングの際は動物のようなわかり易い物オブジェクトとして目に見える物体ではない事柄をオブジェクト化にする事が難しく感じるのではないかと思います。) (2)今までの小さい規模での開発なら、クラスのつくり方がおかしくても不具合は無かったのですが、どのような時に困る事があるのでしょうか?(解説などでも再利用性などと、さらっと解説されていますがイマイチぴんときません) (3)正しくオブジェクト指向がマスター出来ている方にとって、どのクラスにどのメソッド実装するか悩む事などはあるのでしょうか? また、設計で一番悩むのはどのあたりですか? (4)UMLのマスターは必須でしょうか?(現在は、なんとなくUMLぽい感じでメモ書きをつくり、えせオブジェクト指向でプログラムを組んでいます。) (5)その他アドバイスがあればお願いします。 ※乱文で問題もハッキリせず質問の整理等がうまくいっていないと思いますが1つの項目だけでも構いませんので、ご教授お願いします。

    • ベストアンサー
    • Java
  • オブジェクト指向設計の勉強(習得?)方法について

    現在Javaでのプログラミングを始めて3ヶ月ぐらいのプログラマです。 みなさんオブジェクト指向での設計はどのように勉強されていますか? 「10日UMLで覚えるUML」などの書籍で勉強して、一応UMLの表記は少しは覚えたのですが、 肝心のオブジェクト指向での設計というものがぜんぜん身についていません。(頭悪くて・・・) みなさんの勉強方法や、お勧めの講習会など ありましたら、ぜひおしえてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 本当にオブジェクト指向プログラミングっていいのでしょうか?

    いつもお世話になっております。 VC++初心者です。 現在、VC++6.0、MFCのソース修正で四苦八苦しています。 (コーディングするよりも。ソースを追うので苦労してます。) (初心者の私が言うのも難ですが、オブジェクト指向云々言う前に  ソースのif文節が異常に長かったり、3重以上ループが出てくると  とても嫌になります、、、) 一般的(?)に、プログラミングは 手続き型プログラミングよりオブジェクト指向プログラミングが 開発効率がよい、と重宝されているようですが、 どうも納得できていません。 (その手の書籍を2,3冊読みましたが消化不良に終わっています。) 個人的には、手続き型プログラミングの方が好きです。 というのも、慣れているからかもしれませんが、 ソースが追いやすいし、見やすいと思います。 逆にオブジェクト指向プログラミングでは、 ・継承されすぎると、基本クラスまで追うのが一苦労。 ・インスタンスをつくってから、関数を呼ぶのが面倒な気がする。  (手続き型なら関数呼び出しのみで済みます。) ・インスタンスをdeleteし忘れて、メモリを圧迫する危険がある。  (ガーベージコレクションというものもあるようですが、  どこで何を消しているか不安です。) ・ソースを追いにくい(慣れの問題なのでしょうか、、、) そこでですが、 「手続き型は~~で大変だけど、オブジェクト指向ならこんなにすばらしい」 というような対比的に具体例を挙げて説明されている 書籍、サイトの紹介、または、よい助言を頂けませんでしょうか。 また、上記に伴い、 ・手続き型で組んで失敗した例(オブジェクト指向型にすれば良かった例) ・オブジェクト指向型で組んで失敗した例(手続き型にすれば良かった例) も宜しければ教えて頂きたく、お願いします。 (成功例のみよりも、失敗からの成功例を教えて頂けると嬉しいです。) 長くなりましたが、宜しければご教授下さい。

  • オブジェクト指向とモジュール設計

    プログラミング設計の基礎について勉強しているのですが、どうしても、オブジェクト指向とモジュール設計の違いがわかりません。 どちらも、システム(プログラム全体)を機能ごとに分割して各パーツごとにプログラム設計~テストまでを行ない、完成させたパーツを組み合わせてシステムを完成させると言う解釈をしているのですが、オブジェクト指向とモジュール設計のちがいがみつけられません。 この解釈自体が間違っているのでしょうか?

  • オブジェクト指向の教え方

    新入社員にJavaを教えているところなのですが、オブジェクト指向プログラミングをどのように教えていいか困っています。 全員がC言語研修を受講済みで、さらにJava言語も、継承やオーバーロード、例外まで一通り教えて、一応理解しています。 そこで、次のレベルとして、C言語風のプログラミング(「プログラム=関数の集まり」の考え方)から、オブジェクト指向(「プログラム=オブジェクトの集まり」の考え方)に意識改革させたいところです。 問題領域をオブジェクトの集まりとしてとらえ、そこからクラスを抽出していく、という説明がよくありますが、 「何をオブジェクトにするのか」「どのようにクラスを抽出したらいいのか」の部分を詳しく教えたいのですが、どのように説明したらいいでしょうか。また、参考になるWebサイトなどありませんでしょうか? 自分が普段作るときは、ほぼ「勘」でクラス設計していますので、それでは教えられなくて困っています。よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう