Attribute-oriented programming (@OP) is a technique for embedding metadata, namely attributes, within program code.

Attribute-oriented programming in various languages

C++

C++ has support for attributes. C++11 added attributes, which can indicate extra information to the compiler. C++26 added annotations for reflection.

C#

The C# language has supported attributes from its very first release. These attributes was used to give run-time information and are not used by a preprocessor. Currently with source generators, you can use attributes to drive generation of additional code at compile-time.

Hack

The Hack programming language supports attributes. Attributes can be attached to various program entities, and information about those attributes can be retrieved at run-time via reflection.

Java

Java has support for annotations. With the inclusion of Metadata Facility for Java (JSR-175) into the J2SE 5.0 release it is possible to utilize attribute-oriented programming right out of the box. XDoclet library makes it possible to use attribute-oriented programming approach in earlier versions of Java.

In Java, annotations are used for code generation and reflection.

UML

The Unified Modeling Language (UML) supports a kind of attribute called stereotypes.

Tools

  • , an Annotation-Driven Java Program Transformer
  • , a Javadoc-Driven Program Generator
  • . An Introduction to Attribute-Oriented Programming. Archived from on May 26, 2005.
  • Wada, Hiroshi; Suzuki, Junichi (2005). (PDF). In Proc. of the 8th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (MoDELS/UML 2005). (PDF) from the original on 2016-03-03.
  • Rouvoy, Romain; Merle, Philippe (2006). (PDF). In Proc. of the 11th ECOOP International Workshop on Component-Oriented Programming (WCOP 2006). Archived from (PDF) on 2006-12-23.

External links

  • Don Schwarz.
  • Sun
  • - sample chapter from book
  • 2008-09-20 at the Wayback Machine: An annotation-based programming model for the component model
  • book