In a context of a concept of component-based software engineering (CBSE), a survey of things & stuff – in a context of object oriented programming systems – focusing on Java, Common Lisp, STELLA, and COMPO.
Java [Object Model]
- Concept: Java class
- Class definition object
- Class instance object
- Concept: Java class loader
- Concept: Java package
- See also: Java class loader
- Java package import declarations
- Defined within class definitions
- Orthogonal to classpath configuration
- Providing some class definition dependency information
- Explicitly provided class definition dependencies
- Orthogonal to: Class definition dependencies effectively resolved onto the package of a depending class – moreover, in applications onto the runtime classpath – without explicit import declarations
- Such that a Java class cannot be completely defined until all of the classes referenced in the class’ class definition are defined
- Orthogonal to: annotations within class definitions
- Annotation providers …
- Implementing
java.lang.annotation
[JDK7]
- Implementing
- Annotation providers …
Common Lisp (CLtL2)
- Contextual Notes
- ANSI Common Lisp
- Common Lisp type definitions
- Common Lisp Object System (CLOS)
- Classes and type definitions
- Not all type specifiers are class names e.g.
(simple-array byte (1 2))
- Most type specifiers contain a class name e.g.
simple-array
- ….
- Not all type specifiers are class names e.g.
- Classes and type definitions
- Metaobject Protocol (MOP)
- Provides a normative object module and a corresponding set of functional procedures such that may be applied as to redefine or extend an implemenation’s underying class model, as with regards to:
- Class Definitions
- Slot Definitions
- Definitions of Generic Function and other funcallable standard instances
- Not all funcallable instances are generic functions
- Method Combination – applied during evaluation of calls to generic functions
- Argument precedence order – applied as with regards to method combination and method dispatching
- Method Definitions
- Method Specializers – applied when a method is defined
- Method Lambda – initialized when a method is defined; applied when a call to a generic function is evaluated, such that the evaluation results in an initialization of any single effective method, “Successfully”
- Method Dispatching – as applied in construction of an effective method,m such that would be applied during evaluation of a calls to a generic function
- Provides a normative object module and a corresponding set of functional procedures such that may be applied as to redefine or extend an implemenation’s underying class model, as with regards to:
STELLA
- Contextual Notes
- Lisp-like syntax
- Defined by PowerLoom
- Provides a KIF dialect
- Implemented with transformations to C++, Java, Common Lisp
COMPO
- Contextual Notes
- Component specification language
- Declaration Syntax – Lua-like Syntax
- Abstract syntax – UML model for COMPO
- Defined in: Spacek, P., Dony, C., Tibermacine, C., Fabresse, L., Spacek, P., Dony, C., … Tibermacine, C. (2013). Bridging the Gap between Component-based Design and Implementation with a Reflective Programming Language
Applications:
- To do fun, cool things
- With non-commercial stuff
- Because Advertising is not Culture