TY - GEN
T1 - Extensions and foundations of object-oriented programming
AU - Goguen, Joseph A.
AU - Meseguer, José
N1 - We wish to thank: to SRI International and the Center for the Study of Language and Information at Stanford University, where this work was performed; the National Science Foundation, the Office of Naval Research, and the System Development Foundation, which supported it; and Prof. Rod Burstall, with whom J.G. developed many of the ideas concerning parameterization and institutions, Dr. Kokichi Futatsugi, Prof. Jean-Piere Jouannaud, Mr. Timothy Winkler, Prof. David Plaisted, and Dr. Joseph Tardo, who have all contributed significantly to the OBJ system. Finally, we thank Prof. Hans-Dieter Ehrich for some valuable discussions and suggestions during his visit to SRI in May 1986.
in part by Office Foundation.
PY - 1986/6/1
Y1 - 1986/6/1
N2 - This paper has three major objectives: (i) to provide several new features for object-oriented programming (OOP); (ii) to provide a rigorous logical semantics for OOP; and (in) to unify OOP with functional programming. FOOPS is a clean new programming language that embodies our approach to these objectives. Following a broad definition of "logical programming, " our main techniques are described: (1) subsorts (from order-sorted algebra) for multiple inheritance; (2) a distinction between "adt" (for abstract data type) modules and "object" modules; and (3) "reflection, " in the sense of providing a built-in data type for programs in a functional sublanguage. Among the features of FOOPS that are new to OOP are: (4) user-definable abstract data types; (5) generic modules; (6) strong but flexible typing, with overloaded mixfix operations; (7) integration of coding with specification; and (8) an operational semantics (based on term-rewriting) that should be very efficient on suitable parallel machines. In addition, (9) a logical basis is provided in "reflective" logic. Some examples of FOOPS are given.
AB - This paper has three major objectives: (i) to provide several new features for object-oriented programming (OOP); (ii) to provide a rigorous logical semantics for OOP; and (in) to unify OOP with functional programming. FOOPS is a clean new programming language that embodies our approach to these objectives. Following a broad definition of "logical programming, " our main techniques are described: (1) subsorts (from order-sorted algebra) for multiple inheritance; (2) a distinction between "adt" (for abstract data type) modules and "object" modules; and (3) "reflection, " in the sense of providing a built-in data type for programs in a functional sublanguage. Among the features of FOOPS that are new to OOP are: (4) user-definable abstract data types; (5) generic modules; (6) strong but flexible typing, with overloaded mixfix operations; (7) integration of coding with specification; and (8) an operational semantics (based on term-rewriting) that should be very efficient on suitable parallel machines. In addition, (9) a logical basis is provided in "reflective" logic. Some examples of FOOPS are given.
UR - https://www.scopus.com/pages/publications/85049159188
UR - https://www.scopus.com/pages/publications/85049159188#tab=citedBy
U2 - 10.1145/323779.323755
DO - 10.1145/323779.323755
M3 - Conference contribution
AN - SCOPUS:85049159188
T3 - Proceedings of the 1986 SIGPLAN Workshop on Object-Oriented Programming, OOPWORK 1986
SP - 153
EP - 162
BT - Proceedings of the 1986 SIGPLAN Workshop on Object-Oriented Programming, OOPWORK 1986
PB - Association for Computing Machinery
T2 - 1986 SIGPLAN Workshop on Object-Oriented Programming, OOPWORK 1986
Y2 - 9 June 1986 through 13 June 1986
ER -