↑↑↑アスペクト指向とは何か↓↓↓
■ このスレッドは過去ログ倉庫に格納されています
0001→
NGNG0357山崎 渉
NGNGまだまだ発展途上だが、磨けば光る原石だと思う。
1. 「プリプロセス」「ポストプロセス」への、オブジェクト指向意味論の付与
「プリプロセス」「ポストプロセス」は、
Lisp, C, UNIX等で存分に活用されてきた。
例:・CommonLispのマクロ機能
・Cのプリプロセッサ
・UNIXのsed, diff, patch類
しかし、オブジェクト指向言語では意味論や扱いが定まらず、
使用を避けるべきだと考えられてきた。
アスペクト指向は、上記に一定の解を与え、積極的な使用方法を提案した。
0358山崎 渉
NGNGこれまでのオブジェクト指向は、実装継承を型継承の下位機能と見なし、
「実装継承と型継承を一体化」する事で、概念の単純化を図ってきた。
例えば、
・ 型継承と同時に、実装継承 ・・・ クラス
・ 型継承と同時に、部分的実装継承・・・ 抽象クラス
・ 型継承のみ ・・・ インターフェース
というのはあっても、
・ 実装継承のみ
という選択肢がなかった。
アスペクト指向は、実装継承のみという選択肢を与える事で、
本来別々のものである、実装継承と型継承を明確に分離して扱う事を、
可能にした。
3. 「実装の単継承vs多重継承」 問題の解決
多重継承を、「実装継承と型継承を一体」という視点で実現する場合、
「選択的な実装多重継承」が必要になる。
しかし、型のセマンティクスと、実装のセマンティクスは異なるため、
両者を同じ視点で扱うと、混乱が生じ易かった。
上記の混乱の回避策は、「実装多重継承の排除」だった。
実装単継承の元で、実装多重継承の提供機能を実現するには、
・型の多重継承 ・・・ インターフェース
・メソッド実装の委譲
を使用する。
但し、メソッド実装の委譲は、実装レベルのコードで実現する必要があった。
アスペクト指向は、上記「メソッド実装の委譲」を、
静的に(宣言的に)取り扱う事を、可能にした。
0359山崎 渉
NGNG近年、統合開発環境/ツール類の技術が飛躍的に進歩し、
上記項目2.、項目3. を事実上提供するツールが現れつつある、
事も関係していると思う。
■ このスレッドは過去ログ倉庫に格納されています