AspectC++
来源:互联网 发布:红色警戒mac版下载 编辑:程序博客网 时间:2024/05/01 15:37
About the Project
The success of Aspect-Oriented Software Development rises and falls with user-friendly tool support. WithAspectJ® ¹ the first complete and powerful language extension for AOP has been created. With the AspectC++ project we extend the AspectJ approach to C/C++. It is a set of C++ language extensions to facilitate aspect-oriented programming with C/C++. An implementation of an AspectC++ compiler is available for download from ourdownload page.
¹ AspectJ is a trademark of Xerox Corporation.
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件.
AspectJ(也就是AOP)的动机是发现那些使用传统的编程方法无法很好处理的问题。考虑一个要在某些应用中实施安全策略的问题。安全性是贯穿于系统所有模块间的问题,每个模块都需要应用安全机制才能保证整个系统的安全性,很明显这里的安全策略的实施问题就是一个横切关注点,使用传统的编程解决此问题非常的困难而且容易产生差错,这就正是AOP发挥作用的时候了。
传统的面向对象编程中,每个单元就是一个类,而类似于安全性这方面的问题,它们通常不能集中在一个类中处理因为它们横跨多个类,这就导致了代码无法重用,可维护性差而且产生了大量代码冗余,这是我们不愿意看到的。
面向方面编程的出现正好给处于黑暗中的我们带来了光明,它针对于这些横切关注点进行处理,就好像面向对象编程处理一般的关注点一样。而作为AOP的具体实现之一的AspectJ,它向Java中加入了连接点(Join Point)这个新概念,其实它也只是现存的一个Java概念的名称而已。它向Java语言中加入少许新结构:切点(pointcut)、通知(Advice)、类型间声明(Inter-type declaration)和方面(Aspect)。切点和通知动态地影响程序流程,类型间声明则是静态的影响程序的类等级结构,而方面则是对所有这些新结构的封装。
一个连接点是程序流中指定的一点。切点收集特定的连接点集合和在这些点中的值。一个通知是当一个连接点到达时执行的代码,这些都是AspectJ的动态部分。其实连接点就好比是程序中的一条一条的语句,而切点就是特定一条语句处设置的一个断点,它收集了断点处程序栈的信息,而通知就是在这个断点前后想要加入的程序代码。AspectJ中也有许多不同种类的类型间声明,这就允许程序员修改程序的静态结构、名称、类的成员以及类之间的关系。AspectJ中的方面是横切关注点的模块单元。它们的行为与Java语言中的类很象,但是方面还封装了切点、通知以及类型间声明。
- AspectC++
- 《AspectC++ Language Reference》Chapter 8
- 《AspectC++ Language Reference》Chapter 2 Basic Concepts
- 《AspectC++ Language Reference》Chapter 5-7
- 《AspectC++ Language Reference》chapter 3: Match Expressions & chapter 4: Predefined Pointcut Functions
- flex_item renderers(项渲染器);
- AssetManager assets文件夹
- Ubuntu 11.10(内核3.0.0.16-generic)升级内核到3.2.9无线网卡驱动问题【图解】
- 用ModelSim仿真FIFO
- Block developers from using TOAD and other tools on production databases
- AspectC++
- MartyrsCemetery菜鸟感想一之Ubuntu下搭建CUDA开发环境
- 自写的非常不错的oracle语句 精选
- Make Table read only
- android错误 Android NAND: nand_dev_load_disk_state,
- 实现RTP协议的H.264视频传输系统
- 2012七种最最为流行的婚纱摄影的风格
- 修改tomcat的conf/server.xml解决网页乱码
- 使用c#创建php可以调用的dll