達人プログラマーの新装版の言葉で余り知らない言葉を調べてまとめてます。。。
AOP(Aspect Oriented Programming)
OOPでうまく分解できないソフトウェアの「様相」や「側面」といったものが存在し、
このような「様相」「側面」は複数のオブジェクトにまたがる操作となる。
これを「横断要素」という。
例として、プログラムの実行の様子を記録すするロギング操作がある
横断要素はコード中に散在し、すべてを把握し管理することが難しい。
その為、こうした要素を「アスペクト」としてモジュール化し、分解することで、把握・管理・変更を容易にする。
OOPを補完する。
https://yo1000.gitbooks.io/self-study-spring/content/chapter7.html
インたセプタを織り込むタイミングは2つ。
1.コンパイル型
独自に用意されたコンパイラを利用することで、コンパイルのタイミングでインたセプタを織り込む
2.クラス・ロード型
特別な実行環境(コンテナ)を提供することで、実行(クラス・ロード)時にいんたセプタを織り込む
OOP(Object Oriented Programming)
属性(データ)と操作(メソッド)の集合であるオブジェクトをソフトウェアの分解単位として扱う
コードの再利用性、継承、多態性を利用し再利用可能なモジュールを作成する