Programació orientada a aspectes
La programació orientada a aspectes (POA), més coneguda per les sigles en anglès (AOP - aspect-oriented programming), és un paradigma de programació que permet separar el vessant tècnic (aspect en anglès) de les funcionalitats de l'aplicació.
L'objectiu de la programació orientada a aspectes és aconseguir separar un programa en funcionalitats el més reduïdes possible. Aquest objectiu ja es persegueix amb les tècniques tradicionals de programació, com la programació imperativa o la programació orientada a l'objecte, però aquesta separació dona lloc a l'aparició de funcionalitats creuades, és a dir, crides a funcionalitats (procediments, funcions o mètodes) dins de l'especificació d'una funcionalitat, aquest terme es coneix en anglès com a cross-cutting.
La programació orientada a aspectes tracta de donar solució a les referències creuades entre funcionalitats diferents, amb la creació del concepte de punts d'execució (point cuts). Amb aquesta tècnica es pot substituir la crida a una funcionalitat dintre d'un altra, per un punt d'execució que permet modificar el flux d'execució del programa. Al codi que s'executa en arribar al punt d'execució se l'anomena advice (consell). A la unió del punt d'execució (pointcut) i el codi consell se l'anomena aspect (aspecte).
El concepte de programació orientada a aspectes va ser creat per Gregor Kiczales i el seu equip d'investigadors al Centre de recerca de Palo Alto, de la companyia Xerox. Aquest equip va desenvolupar també, el llenguatge orientat a aspectes de propòsit general més popular, l'AspectJ.
Eines que utilitzen AOP
[modifica]- AspectJ extensió del llenguatge JAVA que permet la utilització de punts d'execució en aquest llenguatge.
- Spring framework integra conceptes del paradigma d'orientació a aspectes, dintre del contenidor IoC.
Vegeu també
[modifica]Enllaços externs
[modifica]- Web d'informació general sobre desenvolupament de programari amb AOP (anglès)
- Web del Spring framework (anglès)
- Web del framework Aspectj (anglès)
- Integració de Java amb AOP. (anglès)