面向特性编程@OP)是一种程序层面的标记技术。编程者可以给程序元素(例如类和方法)标记上特性(attribute),来指示它们包含特定于应用或特定于领域的语义。

简介

编辑

特性将一个应用的核心逻辑(或业务逻辑)同特定于应用或特定于领域的语义(比如日志和网页服务功能)分离开来。

例如,一些编程者可以定义“logging”特性并把它关联于一个方法,来指示这个方法应当实现一个日志功能,而其他编程者可以定义一个“web service”特性并把它关联于一个类,来指示这个类应当实现为一个网页服务。通过在程序代码中隐藏这些语义的实现细节,特性增加了编程抽象层次并减少了编程复杂性,导致了更简单和更可读的程序。

关联了特性的程序元素由支持工具(比如预处理器)转化成更详细的程序。例如,一个预处理可以向关联了“logging”特性的方法插入一个日志程序。

各种语言中的面向特性编程

编辑

Java

编辑

随着J2SE 5.0发行包含了“Metadata Facility for Java”(JSR-175),可以即时采用面向特性编程,这项技术后来发展为Java注解XDoclet英语XDoclet库使得更早版本的Java也可以采用面向特性编程。

C#

编辑

C#语言从最早期发行就支持特性。但是这些特性被用于得到运行时间信息,而不被预处理器所使用(在C#参考实现中一个都没有)。

UML

编辑

统一建模语言(UML)支持叫作stereotype英语stereotype (UML)的一种特性。

Hack

编辑

Hack编程语言支持特性。特性可以附加到各种程序实体上,关于这些特性的信息可以通过反射来实时检索。

工具

编辑

引用

编辑
  • Attribute-Oriented Programming. An Introduction to Attribute-Oriented Programming. [July 22, 2005]. (原始内容存档于May 26, 2005). 
  • Wada, Hiroshi; Suzuki, Junichi. Modeling Turnpike Frontend System: a Model-Driven Development Framework Leveraging UML Metamodeling and Attribute-Oriented Programming (PDF). In Proc. of the 8th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (MoDELS/UML 2005). 2005 [2006-03-21]. (原始内容 (PDF)存档于2016-03-03). 
  • Rouvoy, Romain; Merle, Philippe. Leveraging Component-Oriented Programming with Attribute-Oriented Programming (PDF). In Proc. of the 11th ECOOP International Workshop on Component-Oriented Programming (WCOP 2006). 2006. (原始内容 (PDF)存档于2006-12-23). 
  1. ^ Annotation Processing Tool (apt)页面存档备份,存于互联网档案馆
  2. ^ Spoon页面存档备份,存于互联网档案馆), an Annotation-Driven Java Program Transformer
  3. ^ XDoclet, a Javadoc-Driven Program Generator

外部链接

编辑


📚 Artikel Terkait di Wikipedia

面向对象程序设计

物件導向程式設計(英語:Object-oriented programming,缩写:OOP)是種具有物件概念的程式設計典範,同时也是一种程式开发的抽象方针。它可能包含資料、特性、程式碼與方法。对象則指的是類別(class)的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性

程式語言歷史

flow)控制,以及靜態執行緒安全。 提供模組化的替代機制:混入,委托,以及剖面導向。 元件導向(component-oriented)軟體開發。 元編程、反射或是存取抽象語法樹。 更重視分散式及移動式的應用。 與資料庫的整合,包含XML及關聯式資料庫。

面向切面的程序设计

特性導向程式設計(Aspect-oriented programming,AOP,又译作面向方面程序设计、面向切面程序设计、剖面导向程序设计),是计算机科学中的一种编程范型,旨在将交叉切入关注与作为业务主体的核心关注进行分离,以提高程序代码的模块化程度。“方面”(aspect)通过规定叫做“定点切入

事件驅動程式設計

language has event driven programming built in Twisted, Python POE, Perl PRADO, a component-based and event-driven Web programming framework for PHP 5 Gui4Cli

泛型编程

Object-Oriented Programming Systems, Languages and Applications), Portland (Oregon), 29 September–2 October 1986, pages 391–405. generic-programming.org

模块化编程

模块化编程(英語:modular programming),是强调将计算机程序的功能分离成独立的軟體模組的软件设计技术,軟體模組(Software Module)是模組化編程的基本單元。模块化编程使得每个模块都包含着执行预期功能的唯一方面(aspect)所必需的所有东西。

面向语言的程序设计

面向语言的程序设计(Language-Oriented Programming,LOP),指一种程序设计范型,将有相同状态的块建造成对象、模块和构件,不再用通用编程语言解决问题,程序员首先为问题编写一种或多种领域特定语言,然后再在这些语言中解决问题。这个概念具体描述于Martin Ward的1994年的题为《面向语言编程》的论文中。

代理人導向編程

面向代理编程(AOP:Agent-oriented programming),是一种编程范型,这里软件的构造以软件代理(英语:Software agent)的概念为中心。对比于拥有对象(提供具有可变形式参数的方法)作为核心的面向对象编程,AOP拥有外部指定的代理(具有接口和消息能力)作为核心。它们可