FOOPS(ID:1323/foo004)


for A Functional Object Oriented Programming System

Goguen SRI

Very high level object-oriented specification language with an executable subset. It provides:

abstract data types,
objects,
classes,
overloading,
polymorphism, and
inheritance with overriding.
FOOPS also provides many additional features that go beyond what other current-generation object-oriented languages offer, including:
parameterised modules with semantic interface requirements,
a very powerful module interconnection language, and
`mixfix' syntax for functions, attributes and methods.

FOOPS is patterned after and built upon OBJ, a declarative specification language, from which it derives many of the above features.

Places
People:
Structures:
Related languages
LIL => FOOPS   Spec written in
OBJ2 => FOOPS   Augmentation of
FOOPS => OOZE   Based on
FOOPS => TOOR   Based on

References:
  • Goguen, J. et al "Extensions and Foundations for Object-Oriented Programming" view details
          in Shriver B. et al eds, Research Directions in Object-Oriented Programming, MIT Press 1987. view details
  • Singhal, Vivek and Batory, Don "P++ A Language for Large-Scale Reusable Software Components" view details
          in Proceedings of the 6th Annual Workshop on Software Reuse (Owego, New York), November 1993 view details
  • Borba, Paulo and Joseph Goguen, An operational semantics for FOOPS, In Roel Wieringa and Remco Feenstra, editors, International Workshop on Information Systems - Correctness and Reusability, IS-CORE'94, Technical Report IR-357. Vrije Universiteit, Amsterdam, September 1994. A longer version appeared as Technical Monograph PRG-115, Oxford University Computing Laboratory, November 1994. view details Abstract: FOOPS is a concurrent object-oriented language. We give a structured operational semantics for FOOPS, considering features such as classes of objects with associated methods and attributes, object identity, dynamic object creation and deletion, overloading, polymorphism, inheritance with overriding, dynamic binding, concurrency, nondeterminism, atomic execution, evaluation of expressions as background processes, and object protection.
          in Proceedings of the 6th Annual Workshop on Software Reuse (Owego, New York), November 1993 view details
  • Borba, Paulo and Joseph A. Goguen. Refinement of Concurrent Object Oriented Programs. Chapter 11 of Formal Methods in Object Technology, Stephen Goldsack and Stuart Kent (eds.), Springer, 1996. Also appears as Technical Report TR-18-95, Oxford University Computing Laboratory, Programming Research Group, November 1995 view details Abstract: FOOPS is a concurrent object oriented language. Based on FOOPS operational semantics, we introduce a notion of refinement for states of FOOPS systems together with a proof technique for proving refinement. Using this notion, we define refinement of FOOPS (method) expressions and programs. Although we focus on FOOPS, our definition of refinement is independent of this language.

    We also illustrate the use of refinement for stepwise formal development of programs in FOOPS. Based on that, we give an overall evaluation of our approach and comment on alternative approaches for the refinement of concurrent object oriented programs, concluding that none of them provide both a general definition of refinement and an effective proof technique such as the one presented here.


          in Proceedings of the 6th Annual Workshop on Software Reuse (Owego, New York), November 1993 view details
  • Borba, Paulo Semantics and Refinement for a Concurrent Object Oriented Language, DPhil thesis, Oxford University Computing Laboratory, July 1995. view details
          in Proceedings of the 6th Annual Workshop on Software Reuse (Owego, New York), November 1993 view details
  • Corina Cirstea. A Distributed Semantics for FOOPS. PRG Technical Report PRG-TR-20-95, 1995. view details
          in Proceedings of the 6th Annual Workshop on Software Reuse (Owego, New York), November 1993 view details