[home] [documents]
 

Ulf Schünemann:
Composite Objects: Dynamic Representation and Encapsulation
by Static Classification of Object References
;
PhD thesis, Memorial Univ. of Newfoundland (Canada), submitted June 2005.
 
Abstract. The composition of several objects to one higher-level, composite object is a central technique in the construction of object-oriented software systems and for the management of their structural and dynamic complexity. Standard object-oriented programming languages are concerned mainly with class inheritance (the other central technique), and with elementary objects. They do not support the expression of objects' composition, and do not ensure any kind of encapsulation of composite objects. In particular, there is no guarantee that composite objects control the changes of their own state (state encapsulation).
We propose to advance software quality by new program annotations that document the design with respect to object composition and, based on them, new static checks that exclude designs violating the encapsulation of composite objects' state. No significant restrictions are imposed on the composite objects' internal structure and dynamic construction. Common design patterns like Iterators and Abstract Factories are supported.
We extend a subset of the Java language by mode annotations at all types of object references, and a user-specified classification of all methods into potentially state-changing mutators and read-only observers. The modes superimpose composition relationships between objects connected by paths of references at run-time. The proposed mode system limits, orthogonally to the type system, the invocation of mutator methods (depending on the mode of the reference to the receiver object), the permissibility of reference passing (as parameter or result), and the compatibility between references of different modes. These restrictions statically guarantee state encapsulation relative to the mode-expressed object composition structure.

Keywords: composite objects, object composition, abstraction, representation, runtime modularity, encapsulation, alias control, access control, static type system, type qualifiers, reference modes.


Download: ps.gz (0.9M), ps (2.8M), converted to pdf (5.0M).

Title, contents, etc. (9 pg): ps.gz (210k) ps (514k) pdf (122k)
Chapter 1: Introduction (14 pg): ps.gz (245k) ps (639k) pdf (228k)
Chapter 2: Abstraction in Object-Oriented Programming (21 pg): ps.gz (267k) ps (750k) pdf (296k)
Chapter 3: Modularity in Object-Oriented Programming (23 pg): ps.gz (275k) ps (739k) pdf (326k)
Chapter 4: Related Work (10 pg): ps.gz (223k) ps (543k) pdf (191k)
Chapter 5: The Base-JaM Fragment (50 pg): ps.gz (344k) ps (907k) pdf (1.0M)
Chapter 6: JaM with the Full Mode System (75 pg): ps.gz (466k) ps (1.3M) pdf (1.4M)
Chapter 7: Discussion (34 pg): ps.gz (272k) ps (686k) pdf (577k)
Chapter 8: Conclusion (2 pg): ps.gz (205k) ps (495k) pdf (49k)
Appendix A: The Definition of JaM (6 pg): ps.gz (216k) ps (529k) pdf (206k)
Appendix B: JaM-Code of the Map Example (9 pg): ps.gz (208k) ps (508k) pdf (84k)
Bibliography (6 pg): ps.gz (221k) ps (535k) pdf (133k)
 

http://www.cs.mun.ca/~ulf/my/diss/ulf-diss.html, Ulf Schünemann, 020705