Publication Type

Conference Paper

Publication Date



Recent trends in programming language design and implementation are aimed at integrating the two most important constructs to combat complexity: modules and classes. Both constructs provide encapsulation, a cornerstone of reliable programming. These constructs differ in their approach to building hierarchies: modules define visibility of components while classes define visibility of functionality. How can modules and classes be effectively integrated within a simple programming language? This question captures the essence of developing semantics of these constructs to ensure that they interact in a meaningful way. This paper develops a formal denotational semantic framework for understanding the interaction between classes and modules within programming languages. This semantic framework is developed incrementally; beginning with a base object oriented language with support for classes, objects, message passing and inheritance; and followed by extensions that support modules. These extensions consider


Programming Languages, Formal Definitions and Theory, Theory of Computation, Specifying and Verifying and Reasoning about Programs, Semantics of Programming Languages, Formal Languages


Programming Languages and Compilers | Software Engineering

Research Areas

Software Systems


Joint Modular Languages Conference

First Page


City or Country

University of Ulm, Germany

Creative Commons License

Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License.