2009年11月27日金曜日

アスペクト指向プログラミング 【AOP】

アスペクト指向プログラミングとは、ソフトウェアの特定の振る舞いを「アスペクト」として分離し、モジュール化するプログラミング技法。オブジェクト指向プログラミングの問題点を補うために考え出された手法。

 オブジェクト指向プログラミングでは、属性(データ)と操作(メソッド)の集合であるオブジェクトをソフトウェアの分解単位として扱うが、オブジェクトとしてうまく分解ができないソフトウェアの「様相」や「側面」といったものが存在し、このような様相や側面は、複数のオブジェクト間にまたがる操作となる。これを「横断要素」と呼ぶ。

 横断要素の代表例としては、プログラムの実行の様子を記録するロギング操作などが挙げられる。横断要素はプログラムコード中に散在するため、すべてを把握し管理することが難しく、また横断要素に対して変更を加える場合にはコード中のあらゆる場所から該当部分を探し出して書き換える必要が生じる。

 アスペクト指向プログラミングでは、こうした要素を「アスペクト」としてモジュール化し分離することで、把握・管理・変更を容易にする。アスペクト指向プログラミングを導入することにより、既存のコードの手を加えなくてもプログラム中に散在する特定の機能を持った部分を書き換えることができる。アスペクト指向プログラミング環境は既存のプログラミング言語の拡張機能などの形で提供されているものが多く、Javaを拡張してアスペクト指向プログラミングを可能とする「AspectJ」などが有名。

0 件のコメント:

コメントを投稿