Working with Ada 9X classes

Ada 9X refines the Ada 83 concept of class and introduces class-wide types to support run-time polymorphism. We study how the Ada definition of class compares to other definitions of this term. We examine how run-time polymorphism is introduced in Ada 9X, how it relates to the different concepts of subtype, and how it compares with other forms of polymorphism. We also discuss the different uses of class-wide types, mainly as a means for dynamic binding (dispatching). However, since Ada 9X has adhered to the philosophy of building blocks, class-wide entities can be used for other purposes than dispatching. These uses are idioms that every programmer should be aware of. Some of these idioms are presented here. We also examine how classes are integrated with generics.

[1]  Jeannette M. Wing,et al.  A New Definition of the Subtype Relation , 1993, ECOOP.

[2]  Alfred Strohmeier,et al.  The Problematics of Testing Object-Oriented Software , 1970 .

[3]  Stanley B. Zdonik,et al.  Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like , 1988, ECOOP.

[4]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[5]  Gordon S. Blair,et al.  Object-oriented languages, systems and applications , 1991 .

[6]  Gary T. Leavens,et al.  Reasoning about object-oriented programs that use subtypes , 1990, OOPSLA/ECOOP '90.

[7]  Alfred Strohmeier,et al.  Advanced Object-Oriented Programming with Ada 95 , 1995 .

[8]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[9]  Gordon Blair u.a. 'OBJECT-ORIENTED LANGUAGES, SYSTEMS AND APPLICATIONS' , 1990 .

[10]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[11]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[12]  Hanspeter Mössenböck,et al.  The Programming Language Oberon-2 , 1991, Struct. Program..

[13]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[14]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[15]  Gary J. Cernosek ROMAN-9X: a technique for representing object models in Ada 9X notation , 1993, TRI-Ada '93.

[16]  Barbara Liskov,et al.  Data Abstraction and Hierarchy , 1987 .

[17]  Ed Seidewitz Object-oriented programming with mixins in Ada , 1992, ALET.

[18]  Luca Cardelli,et al.  Modula-3 language definition , 1992, SIGP.

[19]  Grady Booch,et al.  Object-oriented analysis and design with applications (2nd ed.) , 1993 .

[20]  Gabriel Eckert,et al.  Types, classes and collections in object-oriented analysis , 1994, Proceedings of IEEE International Conference on Requirements Engineering.

[21]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

[22]  Jean-Pierre Rosen,et al.  What orientation should Ada objects take? , 1992, CACM.

[23]  Stéphane Barbey,et al.  Advanced object-oriented features and programming in Ada 95 , 1995, TRI-Ada '95.

[24]  Grady Booch,et al.  Object-Oriented Analysis and Design with Applications , 1990 .

[25]  Craig Chambers,et al.  Object-Oriented Multi-Methods in Cecil , 1992, ECOOP.

[26]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[27]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .