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
  • Get Citation Alerts
  • 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

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 34, Issue 10
    Oct. 1999
    460 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/320385
    Issue’s Table of Contents
    • cover image ACM Conferences
      OOPSLA '99: Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
      October 1999
      462 pages
      ISBN:1581132387
      DOI:10.1145/320384
    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)102
    • Downloads (Last 6 weeks)20
    Reflects downloads up to 10 Aug 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