Attribute-oriented programming


title: "Attribute-oriented programming" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["programming-paradigms"] topic_path: "technology/programming-languages" source: "https://en.wikipedia.org/wiki/Attribute-oriented_programming" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0

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

References

  • {{cite web | last = Wada | first = Hiroshi | author2 = Suzuki, Junichi | year = 2005 | url = https://www.cs.umb.edu/~jxs/pub/models05.pdf | title = Modeling Turnpike Frontend System: a Model-Driven Development Framework Leveraging UML Metamodeling and Attribute-Oriented Programming | publisher = In Proc. of the 8th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (MoDELS/UML 2005) | access-date = 2006-03-21 | url-status = live | archive-url = https://web.archive.org/web/20160303170619/http://www.cs.umb.edu/~jxs/pub/models05.pdf | archive-date = 2016-03-03
  • {{cite web |last=Rouvoy |first=Romain |author2=Merle, Philippe |year=2006 |url=http://research.microsoft.com/~cszypers/events/WCOP2006/rouvoy-wcop-06.pdf |title=Leveraging Component-Oriented Programming with Attribute-Oriented Programming |publisher=In Proc. of the 11th ECOOP International Workshop on Component-Oriented Programming (WCOP 2006) |url-status=dead |archiveurl=https://web.archive.org/web/20061223004531/http://research.microsoft.com/~cszypers/events/WCOP2006/rouvoy-wcop-06.pdf |archivedate=2006-12-23

References

  1. "The Java Community Process(SM) Program - communityprocess - final".

::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::

programming-paradigms