Algorithmic abstraction via polymorphism in object-oriented programming languages - Zhuang, Qingyu (ProQuest Dissertations & Theses, 1996)
The abstraction gap between algorithms and functions (procedures) causes numerous duplicate efforts in implementing the same algorithms as well as apparent under-use of many efficient algorithms. A solution to this problem is to realize algorithmic abstraction at the programming language level in addition to data abstraction. For this purpose, a programming language needs to have (1) an adequate type hierarchy for defining the domains of algorithms and (2) proper constructs for writing the sequences of steps of algorithms that are polymorphic to all types of objects in an algorithm domain. Many object-oriented programming languages use a two-level hierarchy of entities (objects and classes) to support data abstraction. This hierarchy is only adequate to support two forms of polymorphism: universal-bounded polymorphism and inclusion-bounded polymorphism. Neither of them is proper for algorithmic abstraction. The main aim of this thesis is to develop an adequate type structure and proper forms of polymorphism for algorithmic abstraction in object-oriented programming languages. We define a four-level hierarchy of entities: objects, classes, types, and kinds. Objects and classes have ordinary meanings; a type is a set of classes that have exactly the same external behaviour; and a kind is a set of types that share common properties. Based on the type hierarchy, we establish various forms of polymorphism which allow us to write polymorphic functions at different abstraction levels. We show that kinds are at the proper abstraction level for defining the domains of algorithms, and that kind-bounded polymorphic functions are algorithms which we propose to be supported at the programming language level. Another goal of this thesis is to develop an object-oriented algebraic theory for the semantics of the four-level type hierarchy. In our approach, a kind corresponds to a structured signature which can have other signatures as its sorts. Thus, any algebra of a structured signature is a structured algebra which can have other algebras as its domains. We show that a structured algebra fits naturally into the structure of a class.