Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Semantic analysis of virtual classes and nested classes

Published: 01 October 1999 Publication History

Abstract

Virtual classes and nested classes are distinguishing features of BETA. Nested classes originated from Simula, but until recently they have not been part of main stream object- oriented languages. C++ has a restricted form of nested classes and they were included in Java 1.1. Virtual classes is the BETA mechanism for expressing generic classes and virtual classes is an alternative to parameterized classes. There has recently been an increasing interest in virtual classes and a number of proposals for adding virtual classes to other languages, extending virtual classes, and unifying virtual classes and parameterized classes have been made. Although virtual classes and nested classes have been used in BETA for more than a decade, their implementation has not been published. The purpose of this paper is to contribute to the understanding of virtual classes and nested classes by presenting the central elements of the semantic analysis used in the Mjølner BETA compiler.

References

[1]
Ada Reference Manual, Proposed Standard Document, United States Department of Defense, July 1980]]
[2]
K. Arnold, J. Gosling: The Java Programming Language Second Edition, Addison Wesley, 1998.]]
[3]
K. Bruce, M. Odersky, P. Wadler: A Statically Safe Alternative to Virtual Types, European Conference on Object- Oriented Programming, ECOOP'98, Lecture Notes in Computer Science, Vol. 1445, Springer Verlag, 1998.]]
[4]
G. Bracha: Personal communication, 1999.]]
[5]
O.J. Dahl, K. Nygaard, B. Myrhaug: Simula 67 Common Base Language, Technical Report, Publ. no. S-2, Norwegian Computing Center, Oslo, 1968.]]
[6]
E. Ernst: Propagating Class and Method Combination, European Conference on Object-Oriented Programming, ECOOP'99, Lecture Notes in Computer Science, Vol. 1628, Springer Veflag, 1999.]]
[7]
G. Herin: Name Analysis for Object-Oriented Languages, in {9}.]]
[8]
A. Igarashi, B. Pierce: Foundations for Virtual Types, European Conference on Object-Oriented Programming, ECOOP'99, Lecture Notes in Computer Science, Vol. 1628, Springer Verlag, 1999.]]
[9]
J.L. Knudsen, M. Ltifgren, O.L. Madsen, B. Magnusson: Object-Oriented Environments - The Mj01ner Approach, Prentice Hall, 1994.]]
[10]
B.B. Kristensen, O.L. Madsen, B. M011er-Pedersen, K. Nygaard: Abstraction Mechanisms in the BETA Programming Language, Proceedings of the Tenth ACM Symposium on Principles of Programming Languages, January 24-26 1983, Austin, Texas.]]
[11]
B.B. Kristensen, O.L. Madsen, B. M~ller- Pedersen, K. Nygaard: Classification of Actions or Inheritance also for Methods, European Conference on Object-Oriented Programming, ECOOP'87, Lecture Notes in Computer Science, Vol. 276, Springer Verlag, 1987.]]
[12]
B. Liskov, A. Snyder, R. Atkinson, C. Schaffert: Abstraction Mechanisms in CLU, Comm. ACM 20, 8 (1977), 564-576.]]
[13]
O.L Madsen, B. M~ller-Pedersen: Virtual Classes, a Powerful Mechanism in Object-Oriented Languages, Conference on Object-Oriented Programming, Languages, Systems and Applications, OOPSLA' 89, ACM Sigplan Notices, 24(10), 1989.]]
[14]
O.L. Madsen, B. Magnusson, B. M~ller-Pedersen: Strong Typing of Object-Oriented Languages Revisited, Conference on Object-Oriented Programming, Languages, Systems and Applications, OOPSLA'90, ACM Sigplan Notices, 25(10), 1990, also in {9}.]]
[15]
O.L. Madsen, B. M011er-Pedersen, K. Nygaard: Object- Oriented Programming with the BETA Programming Language, Addison Wesley/ACM Press, 1993.]]
[16]
O.L. Madsen: An Overview of BETA, in {9}.]]
[17]
O.L. Madsen: Open Issues in Object-Oriented Programming a Scandinavian Perspective, Software Practice and Experience, Vol. 25, No. $4, Dec. 1995.]]
[18]
O.L. Madsen: BETA: A Block-Structured Concurrent Object- Oriented Language, in Handbook of Object-Technology (S: Zamir, ed.), CRC Press, 1998.]]
[19]
B. Magnusson: An Overview of Simula, in {9}]]
[20]
B. Meyer: Genericity versus Inheritance, Conference Object- Oriented Programming Systems, Languages and Applications, OOPSLA'86, ACM Sigplan Notices, September 1986.]]
[21]
B. Meyer: Object-oriented Software Construction, Prentice Hall, 1988.]]
[22]
P. Naur (ed.): Revised Report on The Algorithmic Language ALGOL 60 Regnecentralen. Copenhagen, 1962.]]
[23]
P. Nauer: The Design of the GIER ALGOL Compiler, BIT 3, 124-140, 145-166, 1963.]]
[24]
D. Shang: Subtypes and Convertible Types, Object Currents, 1 (6), June 1996.]]
[25]
B. Stroustrup: The C++ Programming Language, Addison- Wesley, 1986.]]
[26]
K.K. Thorup: Genericity in Java with virtual Classes, European Conference on Object-Oriented Programming, ECOOP'97, Lecture Notes in Computer Science, Vol. 1241, Springer Verlag, 1997]]
[27]
M. Torgersen: Virtual Types are Statically Safe, 5th Workshop on Foundations of Object-Oriented Languages, January 1998.]]
[28]
K.K. Thorup, M. Torgersen: Structured Virtual Types, informal session on types for Java, 5th Workshop on Foundations of Object-Oriented Languages, January 1998.]]
[29]
K.K. Thorup, M. Torgersen: Unifying Genericity m Combining the benefits of virtual types and parameterized types, European Conference on Object-Oriented Programming, ECOOP'99, Lecture Notes in Computer Science, Vol. 1628, Springer Verlag, 1999.]]

Cited By

View all
  • (2017)Familia: unifying interfaces, type classes, and family polymorphismProceedings of the ACM on Programming Languages10.1145/31338941:OOPSLA(1-31)Online publication date: 12-Oct-2017
  • (2016)Matriona: class nesting with parameterization in Squeak/SmalltalkProceedings of the 15th International Conference on Modularity10.1145/2889443.2889457(118-129)Online publication date: 14-Mar-2016
  • (2007)The when, why and why not of the BETA programming languageProceedings of the third ACM SIGPLAN conference on History of programming languages10.1145/1238844.1238854(10-1-10-57)Online publication date: 9-Jun-2007
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 October 1999
Published in SIGPLAN Volume 34, Issue 10

Check for updates

Author Tags

  1. generic class
  2. parameterized class
  3. semantic analysis
  4. virtual class

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)126
  • Downloads (Last 6 weeks)26
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2017)Familia: unifying interfaces, type classes, and family polymorphismProceedings of the ACM on Programming Languages10.1145/31338941:OOPSLA(1-31)Online publication date: 12-Oct-2017
  • (2016)Matriona: class nesting with parameterization in Squeak/SmalltalkProceedings of the 15th International Conference on Modularity10.1145/2889443.2889457(118-129)Online publication date: 14-Mar-2016
  • (2007)The when, why and why not of the BETA programming languageProceedings of the third ACM SIGPLAN conference on History of programming languages10.1145/1238844.1238854(10-1-10-57)Online publication date: 9-Jun-2007
  • (2002)On inner classesInformation and Computation10.1006/inco.2002.3092177:1(56-89)Online publication date: 25-Aug-2002
  • (2001)Family PolymorphismProceedings of the 15th European Conference on Object-Oriented Programming10.5555/646158.680013(303-326)Online publication date: 18-Jun-2001
  • (2001)Family PolymorphismECOOP 2001 — Object-Oriented Programming10.1007/3-540-45337-7_17(303-326)Online publication date: 21-Jun-2001
  • (2001)Virtual Classes and Their ImplementationCompiler Construction10.1007/3-540-45306-7_1(1-2)Online publication date: 23-Mar-2001
  • (2000)On Inner ClassesECOOP 2000 — Object-Oriented Programming10.1007/3-540-45102-1_7(129-153)Online publication date: 12-May-2000
  • (2000)Abstraction and Modularization in the BETA Programming LanguageModular Programming Languages10.1007/10722581_18(211-237)Online publication date: 2000
  • (2019)Abstraction in Modeling and Programming with Associations: Instantiation, Composition and InheritanceAdvances in Computer Communication and Computational Sciences10.1007/978-981-13-6861-5_2(11-31)Online publication date: 22-May-2019
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media