LISP and Symbolic Computation

, Volume 1, Issue 2, pp 185–212 | Cite as

Object-oriented programming with class dictionaries

  • Karl J. Lieberherr


A class dictionary defines all data structures that appear in a program as well as a language for describing data specified by the data structures. We demonstrate that class dictionaries are ideal for simplifying object-oriented programming. Our class dictionary-based approach to object-oriented programming is independent of any particular programming language, so it is applicable to a large variety of object-oriented systems. The experience in designing and using over one hundred class dictionaries has resulted in a set of useful design techniques. This novel approach to object-oriented programming makes interesting links between language design, data structure design, and data-base design.


Operating System Artificial Intelligence Data Structure Programming Language Structure Design 
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.
    Albano, A., Cardelli, L., and Orsini, R., Galileo: A strongly-typed, interactive conceptual language.ACM Transactions on Database Systems 10(2) (1985), 230–260.Google Scholar
  2. 2.
    Allen, F., Loomis, M., and Mannino, M. The integrated dictionary/directory system.ACM Computing Surveys 14(2) (1982).Google Scholar
  3. 3.
    Balzer, R.N., Program enhancement.ACM SIGSOFT Software Engineering Notes 11(4) (1986), 66.Google Scholar
  4. 4.
    Bobrow, D., De Michiel, L.G., Gabriel, P., Keene, S.E., Kiczales, G., and Moon, D.A. Common lisp object system. Workshop at OOPSLA 87, August 1987.Google Scholar
  5. 5.
    Boyle, J.M., and Muralidharan, M.N. Program reusability through program transformation.IEEE Transactions on Software Engineering SE-10(5) (1984).Google Scholar
  6. 6.
    Cameron, R.D., and Ito, M.R. Grammar-based definition of metaprogramming systems.ACM Transactions on Programming Languages and Systems 6(1) (1984), 20–54.Google Scholar
  7. 7.
    Cardelli, L., and Wegner, P. On understanding types, data abstraction, and polymorphism.ACM Computing Surveys 17(4) (1985), 471.Google Scholar
  8. 8.
    Cox, B.J.,Object-Oriented Programming, An evolutionary approach. Addison-Wesley, Reading, MA, 1986.Google Scholar
  9. 9.
    Dahl, O.J., Myhrhaug, B. and Nygaard, K. Simula 67 common base language. Publ. N. S-22, Norwegian Computing Centre, Oct. 1970.Google Scholar
  10. 10.
    Donzeau-George, V., Huet, G., Kahn, G., and Lang, B.Programming environments based on structured editors: The MENTOR experience. Technical Report, Res. Rep. 26 INRIA, 1980.Google Scholar
  11. 11.
    Donzeau-George, V., Huet, G., Kahn, G., Lang, B., Levy, J.J. A structure oriented program editor: A first step towards computer assisted programming. InProceedings of International Computing Symposium 1975.Google Scholar
  12. 12.
    Fraser, C.W. Syntax-directed editing of general data structures. InProc. ACM SIGPLAN/SIGOA Conference on Text Manipulation, Portland, OR, 1981, pp. 17–21.Google Scholar
  13. 13.
    Freiling, M.J., Alexander, J.H., Shulman, S.J., Staley, J.L., Rehfuss, S., and Messick, S.L. Knowledge level engineering: Ontological analysis. InProceedings AAAI, 1986, pp. 963–968.Google Scholar
  14. 14.
    Goldberg, A.V., and Lieberherr, K.J. Gem: A generator of environments for metaprogramming. InSOFTFAIR II, ACM/IEEE Conference on Software Tools, San Francisco, 1985, pp. 86–95.Google Scholar
  15. 15.
    Goldberg, A., and Robson, D.Smalltalk-80: The Language and its Implementation. Addison-Wesley, Reading, MA, 1983.Google Scholar
  16. 16.
    Kohlbecker, E., and Wand, M. Macro by example. InACM Symposium on Principles of Programming Languages, ACM, 1987.Google Scholar
  17. 17.
    Kreowski, H.J. Some initial sections of the algebraic specification tale.Bulletin of the European Association for Theoretical Computer Science, No.(31) (1987), 55–78.Google Scholar
  18. 18.
    Kristensen, B.B., Madsen, O.L., Moller-Pedersen, B., Nygaard, K. An algebra for program fragments. InACM SIGPLAN 85 Symposium on Programming Languages and Programming Environments, SIGPLAN, Settle, Washington, 1985.Google Scholar
  19. 19.
    Lamb, D.A. Idl: Sharing intermediate representations.ACM Transactions on Programming Languages and Systems 9(3) (1987), 297–318.Google Scholar
  20. 20.
    Lieberherr, K.J.The Art of Growing Software: An object-oriented CASE approach, in preparation.Google Scholar
  21. 21.
    Lieberherr, K.J., and Riel, A.J. Demeter: A case study of software growth through parameterized classes,Journal of Object-Oriented Programming,1(3) (1988a), in press.Google Scholar
  22. 22.
    Lieberherr, K.J., and Riel, A.J. Demeter: A case study of software growth through parameterized classes. InICSE, International Conference on Software Engineering, Raffles City, Singapore, 1988b.Google Scholar
  23. 23.
    Liskov, B., Snyder, A., and Schaffert, C., Abstraction mechanisms in clu.Communications of the ACM 20(8) (1977), 564–576.Google Scholar
  24. 24.
    MacQueen, D. Modules for standard ml.Polymorphism Newletter,2(2) (1985).Google Scholar
  25. 25.
    MacQueen, D. Using dependent types to express modular structure. InACM Symposium on Principles of Programming Languages, Jan. 1986.Google Scholar
  26. 26.
    Madsen, O.L., and Nørgard, C. An object-oriented metaprogramming system. InProceedings of the Annual Hawaii International Conference on System Sciences, 1988, pp. 406–416.Google Scholar
  27. 27.
    Meyer, B. Genericity versus inheritance. InObject-Oriented Programming Systems, Languages and Applications Conference, 1986, pp. 391–405.Google Scholar
  28. 28.
    Moon, D.A. Object-oriented programming with flavors. InObject-oriented Programming Systems, Languages and Applications Conference, Portland, OR, 1986, pp. 1–8.Google Scholar
  29. 29.
    Mylopoulos, J., Bernstein, P.A., and Wong, H.K.T. A language facility for designing interactive database intensive systems.ACM Transactions on Database Systems 5(2) (1980), 185–207.Google Scholar
  30. 30.
    Partsch, H., and Steinbrueggen, R. Program transformation systems.ACM Computing Surveys 15(3) (1983), 199–236.Google Scholar
  31. 31.
    Schaffert, C., Cooper, T., Bullis, B., Kilian, M., and Wilpolt, C. An introduction to trellis/owl. InObject-Oriented Programming Systems, Languages and Applications Conference, 1986, pp. 9–16.Google Scholar
  32. 32.
    Smith, J.M., and Smith, D.C.P. Data base abstractions: Aggregation and generalization.ACM Transactions on Database Systems 2(2) (June 1977).Google Scholar
  33. 33.
    Solomon, M. Type definitions with parameters. InPrinciples of Programming Languages, Tucson, AZ, 1978, p. 31.Google Scholar
  34. 34.
    Stefik, M., and Bobrow, D.G. Object-oriented programming: Themes and variations.The AI Magazine (Jan. 1986), 40–62.Google Scholar
  35. 35.
    Stroustrup, B.The C++ Programming Language. Addison-Wesley, Reading, MA, 1986.Google Scholar
  36. 36.
    Teitelbaum, T. Reps T. The synthesizer generator.SIGPLAN,19(5) (1984).Google Scholar
  37. 37.
    Thatcher, J.W., Wagner, E.G., and Wright, J.B. Data type specification: Parameterization and the power of specification techniques.ACM Transactions on Programming Languages and Systems (1982), 711–732.Google Scholar
  38. 38.
    Thomsen, K.S.Multiple Inheritance, A structuring mechanism for data, processes and procedures. Technical Report DAIMI PB—209, University of Aarhus, Denmark, Ap. 1986.Google Scholar
  39. 39.
    Wile, D. Program developments: Formal explanations of implementations.Communications of the ACM 26(11) (1983).Google Scholar
  40. 40.
    Wirth, N.Algorithms + Data Structures = Programs. Prentice Hall, Englewood Cliffs, NJ, 1976.Google Scholar
  41. 41.
    Wirth, N. On the design of programming languages. InIFIP, Amsterdam, North-Holland, Amsterdam, 1974, pp. 386–393.Google Scholar
  42. 42.
    Wirth, N.Programming in Modula-2. Springer-Verlag, Berlin, 1984.Google Scholar
  43. 43.
    Wirth, N. The programming language pascal.Acta Informatica 1(1971), 35–63.Google Scholar
  44. 44.
    Wirth, N. What can we do about the unnecessary diversity of notation for syntactic definitions?Communications of the ACM,20(11) (1977), 822–823.Google Scholar

Copyright information

© Kluwer Academic Publishers 1988

Authors and Affiliations

  • Karl J. Lieberherr
    • 1
  1. 1.College of Computer ScienceNortheastern UniversityBoston

Personalised recommendations