AspectC++ es una extensión orientada a aspectos de los lenguajes C y C++ . Cuenta con un compilador de código fuente a código fuente que traduce el código fuente de AspectC++ a C++ compilable. El compilador está disponible bajo la licencia GNU GPL , aunque algunas extensiones específicas para Microsoft Windows solo están disponibles a través de pure-systems GmbH.
La programación orientada a aspectos permite modularizar aspectos transversales en un único módulo , un aspecto . Los aspectos pueden modificar clases existentes , pero lo más común es que proporcionen "consejos" que se ejecutan antes, después o alrededor de la funcionalidad existente.
Ejemplo
Todas las llamadas a una función específica se pueden rastrear utilizando un aspecto, en lugar de insertar instrucciones 'cerr' o print en muchos lugares:
using std :: cerr ; using std :: endl ;aspecto Tracer { consejo llamar ( "% %Iter::Reset(...)" ) : antes () { cerr << "a punto de llamar a Iter::Reset para " << JoinPoint :: signature () << endl ; } };El aspecto Tracer imprimirá un mensaje antes de cualquier llamada a %Iter::Reset. La %Itersintaxis significa que coincidirá con todas las clases que terminen en Iter.
Cada ubicación "coincidente" en el código fuente se denomina punto de unión ; el consejo se une a (o aconseja a) ese código. AspectC++ proporciona una API de punto de unión para proporcionar y acceder a información sobre el punto de unión. Por ejemplo, la función:
Punto de unión :: firma ()Devuelve el nombre de la función (que coincidió con %Iter::Reset) que está a punto de ser llamada.
La API del punto de unión también proporciona información de tipo en tiempo de compilación que se puede utilizar dentro de un aspecto para acceder al tipo o al valor de los argumentos, así como al tipo de retorno y al valor de retorno de un método o función.
Referencias
- Spinczyk, Olaf; Gal, Andreas; Schröder-Preikschat, Wolfgang (1 de febrero de 2002). «AspectC++: una extensión orientada a aspectos del lenguaje de programación C++» . Actas de la Cuadragésima Conferencia Internacional sobre Herramientas del Pacífico: Objetos para Aplicaciones de Internet, Móviles y Embebidas . Sociedad Australiana de Informática : 53–60 . ISBN 978-0-909925-88-8.
- Spinczyk, Olaf; Lohmann, Daniel (1 de octubre de 2007). "El diseño e implementación de AspectC++" . Knowledge-Based Systems . 20 (7): 636– 651. doi : 10.1016/j.knosys.2007.05.004 . ISSN 0950-7051 . Recuperado el 31 de marzo de 2025 .
- Mahrenholz, D.; Spinczyk, O.; Schroder-Preikschat, W. (abril de 2002). «Instrumentación de programas para depuración y monitorización con AspectC++». Actas del Quinto Simposio Internacional IEEE sobre Computación Distribuida en Tiempo Real Orientada a Objetos. ISIRC 2002. Instituto de Ingenieros Eléctricos y Electrónicos . págs. 249-256 . doi : 10.1109/ISORC.2002.1003713 . ISBN 0-7695-1558-4.
- Lohmann, Daniel; Spinczyk, Olaf (22 de octubre de 2006). «Desarrollo de líneas de productos de software embebido con AspectC++» . Actas del 21.º simposio ACM SIGPLAN sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos . Association for Computing Machinery . págs. 740–742 . doi : 10.1145/1176617.1176702 . ISBN 1-59593-491-X.
Enlaces externos
- AspectC++
- Artículos sobre programación orientada a aspectos y AspectC++ en conferencias AOSD anteriores.
- Programación orientada a aspectos
- Familia de lenguajes de programación C++
- Esbozos de ingeniería de software