Recently, we (2001) proposed a language called ACOEL (a component-oriented extension language) for abstracting and composing software components. Components in ACOEL are black-box components, and each component consists of: (1) an internal implementation containing classes, methods, and fields that is hidden to the external world; and (2) an external contract consisting of a set of typed input and output ports. Components in ACOEL interact with each other only via these ports. In this paper we extend ACOEL in two directions: (1) use mixins to customize the services provided by a component without exposing its internal implementation, (2) add support for virtual types and sub-type relation among components. We show how mixins and virtual types together allows us to build adaptable applications based on black-box component principles.
['Vugranam C. Sreedhar']
Mixin' up components