Attribute-oriented programming
This article includes a list of general references, but it lacks sufficient corresponding inline citations. (August 2009) |
Attribute-oriented programming (@OP) is a technique for embedding metadata, namely attributes, within program code.
Attribute-oriented programming in various languages
[edit | edit source]C++
[edit | edit source]C++ has support for attributes. C++11 added attributes, which can indicate extra information to the compiler. C++26 added annotations for reflection.
C#
[edit | edit source]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
[edit | edit source]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
[edit | edit source]Java has support for annotations. With the inclusion of Metadata Facility for Java (JSR-175)[1] 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
[edit | edit source]The Unified Modeling Language (UML) supports a kind of attribute called stereotypes.
Tools
[edit | edit source]- Annotation Processing Tool (apt)
- Spoon, an Annotation-Driven Java Program Transformer
- XDoclet, a Javadoc-Driven Program Generator
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
External links
[edit | edit source]- Don Schwarz. Peeking Inside the Box: Attribute-Oriented Programming with Java5
- Sun JSR 175
- Attributes and Reflection - sample chapter from Programming C# book
- Modeling Turnpike Project
- Fraclet Archived 2008-09-20 at the Wayback Machine: An annotation-based programming model for the Fractal component model
- Attribute Enabled Software Development book