AOP (Aspect-oriented programming)
Stile di programmazione fondato sulla creazione di enti, detti aspetti (aspect), in grado di gestire su richiesta le interazioni fra oggetti per la realizzazione di un obiettivo comune. In tal modo si evita che il codice relativo debba essere implementato singolarmente in ogni oggetto, creando invece un insieme di metodi e tecniche per decomporre i problemi in funzioni e aspetti in grado di risolverli, a vantaggio della modularità del programma. La programmazione orientata agli aspetti rappresenta una sorta di evoluzione del paradigma di programmazione orientata agli oggetti. Introdotta per migliorare la fase di software engineering (progetto, manutenzione e riuso del codice), tale tipo di programmazione risulta però poco adatta a trattare problemi difficilmente scomponibili in oggetti fra loro non interagenti e che presentano invece funzionalità comuni e di interesse per l’intera applicazione (cross-cutting concern). In casi come questi i metodi degli oggetti coinvolti devono prevedere parti di codice fra loro comuni, con la conseguenza di una serie di ridondanze che appesantiscono l’intero codice e ne diminuiscono leggibilità e manutenibilità. La programmazione orientata agli aspetti consente al programmatore di esprimere invece tali funzionalità comuni in moduli autonomi (gli aspetti). Essi possono contenere funzioni di chiamata (advice), in particolari punti o istanti del programma (join point), a un qualsiasi metodo di un oggetto in esecuzione, secondo quanto indicato nei cosiddetti pointcut: nel momento in cui l’esecuzione di un programma raggiunge uno dei join point contenuti nel pointcut, viene eseguito l’advice associato al pointcut. L’insieme di advice, join point e pointcut costituisce la base del cosiddetto JPM (join point model). L’introduzione del concetto di aspetto consente il trattamento di problematiche trasversali agli oggetti, come il logging, l’accounting ecc. I linguaggi attualmente più usati per tale paradigma di programmazione sono AspectJ, HyperJ e AspectC++. AspectJ è stato il primo linguaggio di programmazione orientato agli aspetti, introdotto nel 2001 dal gruppo di Gregor Kiczales alla Xerox PARC (ora rinominata semplicemente PARC) di Palo Alto in California. Sebbene siano stati successivamente proposti altri linguaggi (anche più potenti), AspectJ resta il più usato dai programmatori di tutto il mondo.
→ Programmazione, linguaggi di