Software Reuse in an Object Oriented Framework: Distinguishing Types from Implementations and Objects from Attributes

  • J. Leslie Keedy
  • K. Espenlaub
  • G. Menger
  • A. Schmolitzky
  • M. Evered
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1844)


Almost no object oriented programming languages offer distinct language constructs for the definition of types and their implementations; instead these are united into a single class concept. Similarly object oriented programming languages do not normally distinguish between object types, which may be independently instantiated, and attribute types, which may not. The paper shows how these distinctions can be used to develop both a specialized and a generalized bracket technique, and how the ideas lead to interesting possibilities for reusing code in a flexible and modular way.


Attribute Type Object Type Type Definition Software Reuse Code Reuse 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Batory, D., Singhal, J., Thomas, J., Dasari, S., Geraci, B., Sirkin, M.: The GenVoca Model of Software-System Generators. IEEE Software, 89–94 (1994)Google Scholar
  2. 2.
    Baumgartner, G., Russo, V.F.: Signatures: A Language Extension for Improving Type Abstraction and Subtype Polymorphism in C++. Software - Practice and Experience 25(8), 863–889 (1995)CrossRefGoogle Scholar
  3. 3.
    Black, A., Hutchinson, N., Jul, E., Levy, H.: Object Structure in the Emerald System. In: Proceedings of the OOPSLA 1986, ACM SIGPLAN Notices, Portland, Oregon, vol. 21 (1986)Google Scholar
  4. 4.
    Black, A., Hutchinson, N., Jul, E., Levy, H., Carter, L.: Distribution and Abstract Types in Emerald. IEEE Transactions on Software Engineering SE-13(1), 65–76 (1987)CrossRefGoogle Scholar
  5. 5.
    Bracha, G., Cook, W.: Mixin-based Inheritance. In: Proceedings of the ECOOP/OOPSLA 1990, pp. 303–311 (1990)Google Scholar
  6. 6.
    Courtois, P.J., Heymans, F., Parnas, D.L.: Concurrent Control with Readers and Writers. Communications of the ACM 14(10), 667–668 (1971)CrossRefGoogle Scholar
  7. 7.
    DeMichiel, L., Gabriel, R.: The Common Lisp Object System: An Overview. In: Proceedings of the ECOOP 1987, pp. 151–170 (1987)Google Scholar
  8. 8.
    Edwards, S.H., Shakir, G., Sitaraman, M., Weide, B.W., Hollingsworth, J.E.: A Framework for Detecting Interface Violations in Component-Based Software. In: Proceedings of the 5th International Conference on Software Reuse, pp. 46–55. IEEE, Los Alamitos (1998)Google Scholar
  9. 9.
    Evered, M., Keedy, J.L., Schmolitzky, A., Menger, G.: How Well Do Inheritance Mechanisms support Inheritance Concepts? In: Mössenböck, H. (ed.) JMLC 1997. LNCS, vol. 1204. Springer, Heidelberg (1997)Google Scholar
  10. 10.
    Feathers, M.C.: Factoring Class Capabilities with Adjectives. Journal of Object Oriented Programming 12(1), 28–34 (1999)Google Scholar
  11. 11.
    Goguen, J.A.: Parameterized Programming. IEEE Transactions on Software Engineering SE-10(5), 528–543 (1984)CrossRefGoogle Scholar
  12. 12.
    Goguen, J.A., Tracz, W.: An Implementation-Oriented Semantics for Module Composition. In: Leavens, G., Sitaraman, M. (eds.) Foundations of Component-based Systems, Cambridge (2000)Google Scholar
  13. 13.
    Goldberg, A., Robson, D.: Smalltalk-80: The Language and its Implementation. Addison-Wesley, Reading (1983)zbMATHGoogle Scholar
  14. 14.
    Gosling, J., Joy, B., Steele, G.: The Java Language Specification. Addison-Wesley, Reading (1996)zbMATHGoogle Scholar
  15. 15.
    Guttag, J., Horning, J.J.: The Algebraic Specification of Abstract Data Types. Acta Informatica 10(1), 27 (1978)CrossRefMathSciNetzbMATHGoogle Scholar
  16. 16.
    Keedy, J.L., Evered, M., Schmolitzky, A., Menger, G.: Attribute Types and Bracket Implementations. In: Proceedings of the 25th International Conference on Technology of Object Oriented Systems, TOOLS 25, Melbourne, pp. 325–337 (1997)Google Scholar
  17. 17.
    Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  18. 18.
    Kristensen, B.B., Madsen, O.L., Moller-Pedersen, B., Nygaard, K.: The Beta Programming Language. In: Research Directions in Object-Oriented Programming, pp. 7–48. MIT Press, Cambridge (1987)Google Scholar
  19. 19.
    Leavens, G.T.: Modular Specification and Verification of Object-Oriented Programs. IEEE Software, 72–80 (July 1991)Google Scholar
  20. 20.
    Liskov, B., Curtis, D., Day, M., Ghemawat, S., Gruber, R., Johnson, P., Myers, A.C.: Theta Reference Manual, Report Number 88, MIT Laboratory for Computer Science, Cambridge, MA (1994)Google Scholar
  21. 21.
    Meyer, B.: Eiffel: the Language. Prentice-Hall, New York (1992)zbMATHGoogle Scholar
  22. 22.
    Parnas, D.L.: On the Criteria to be Used in Decomposing Systems into Modules. Comm. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  23. 23.
    Parnas, D.L.: A Technique for Module Specification with Examples. Comm. ACM 15(5), 330–336 (1972)CrossRefGoogle Scholar
  24. 24.
    Pascoe, G.A.: Encapsulators: A New Software Paradigm in Smalltalk-80. In: Proceedings of the OOPSLA 1986, pp. 341–346 (1986)Google Scholar
  25. 25.
    Schmolitzky, A.: Ein Modell zur Trennung von Vererbung und Typabstraktion in objektorientierten Sprachen [A Model for Separating Inheritance and Type Abstraction in Object Oriented Languages], Dr. rer. nat. [Ph.D.] Thesis, University of Ulm (1999)Google Scholar
  26. 26.
    Sitaraman, M., Weide, B.: Component-Based Software Using Resolve. ACM SIGSOFT Software Engineering Notes 19(4), 21–67 (1994)CrossRefGoogle Scholar
  27. 27.
    Snyder, A.: Encapsulation and Inheritance in Object-Oriented Programming Languages. In: Proceedings of the OOPSLA 1986, ACM SIGPLAN Notices, Portland, Oregon, vol. 21 (1986)Google Scholar
  28. 28.
    Soundarajan, N., Fridella, S.: Inheriting and Modifying Behavior. In: Proceedings of the 23rd International Conference on Technology of Object Oriented Systems, TOOLS 23, pp. 148–162. IEEE Computer Society Press, Los Alamitos (1998)CrossRefGoogle Scholar
  29. 29.
    Szyperski, C., Omohundro, S., Murer, S.: Engineering a Programming Language: The Type and Class System of Sather. In: Programming Languages and System Architectures, Jurg Gutknecht, pp. 208–227. Springer, Heidelberg (1993)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • J. Leslie Keedy
    • 1
  • K. Espenlaub
    • 1
  • G. Menger
    • 1
  • A. Schmolitzky
    • 2
  • M. Evered
    • 3
  1. 1.Department of Computer StructuresUniversity of UlmUlmGermany
  2. 2.Peninsula School of Computing and Information TechnologyMonash UniversityAustralia
  3. 3.School of Mathematical and Computer SciencesUniversity of New England ArmidaleAustralia

Personalised recommendations