Many object calculi (for example, [1]) or language-specific modeling techniques (for example, [2]) do not capture well the elements of recent object-oriented language design. The flyweight object-oriented (FOO) calculus is a simple, minimal class-based calculus for modeling object-oriented computational features, including larger-scale features such as inheritance and generics. FOO is compact relative to recent formalization techniques and can model Java, C#, or Scala extensions with minimal overhead.
FOO integrates nominal and structural subtyping, using the latter as a substitute for object fields and constructors. Similar to the technique used in Scala, structural components are given as anonymous sets of methods adjoined to nominal classes. In this way, section 2 shows how to define such object-oriented features as subtype polymorphism, inheritance, and fields.
The formal semantics given in section 3 include two reduction rules for dynamic behavior, and static-behavior rules for determining component typing, hierarchical relations, well formedness, and so on. Further work is needed to determine FOO’s ability to model modern object-oriented features.
At four pages, this paper is autologically compact. Readers should be familiar with object-oriented formalizations, or with language formalizations and object-oriented languages. The bibliography is oversized in relation to the rest of the paper, but is also thorough and appropriate.