Using Roles in Java

M. Schrefl, T. Thalhammer
Schr04b (2004)
Journal Software - Practice and Experience (SP&E), Vol. 34, No. 5, April 2004, ISSN 1097-024X, John Wiley & Sons, pp. 449-464, 2004.
Copy  (In order to obtain the copy please send an email with subject  Schr04b  to


Using roles in object-oriented design leads to a more natural representation of a given problem domain. Despite a log of research into role based systems, there is still a gap between conceptual representation of roles and the usage of roles in strongly typed object-oriented programming languages such as C++ or Java. Since these languages associate classes and their instances exclusively and permanently, representing evolving objects that may take on different roles over time is difficult without special support: (1) Entities must be reclassified any time they evolve and (2) class hierarchies may grow exponentially if entities may take on several independent roles.

This article shows how role designs in UML can be easily implemented in Java. It introduces the Java Role Package, which provides a set of classes to support handling of evolving object without modifying the semantics of Java itself.