Journal of the ACM · 2005 · 98 citations · 54 references
EngineeringLanguage ConstructsSoftware EngineeringObject OrientationRepresentation IndependenceSoftware AnalysisFormal VerificationEncapsulation (Computer Programming)Object-oriented DesignStatic AnalysisComputer EngineeringComputer ScienceSoftware DesignOwnership ConfinementProgram AnalysisAutomated ReasoningFormal MethodsAbstraction (Computer Science)Object-oriented ProgrammingSystem SoftwareAbstraction Technique
Representation independence formally characterizes the encapsulation provided by language constructs for data abstraction and justifies reasoning by simulation. Representation independence has been shown for a variety of languages and constructs but not for shared references to mutable state; indeed it fails in general for such languages. This article formulates representation independence for classes, in an imperative, object-oriented language with pointers, subclassing and dynamic dispatch, class oriented visibility control, recursive types and methods, and a simple form of module. An instance of a class is considered to implement an abstraction using private fields and so-called representation objects. Encapsulation of representation objects is expressed by a restriction, called confinement, on aliasing. Representation independence is proved for programs satisfying the confinement condition. A static analysis is given for confinement that accepts common designs such as the observer and factory patterns. The formalization takes into account not only the usual interface between a client and a class that provides an abstraction but also the interface (often called “protected”) between the class and its subclasses.
54
Adhi Harmoko S, M.Komp, Joseph Marie Jacquard et al. · 2005 · 18.3K citations
Mathematical Programming, Computational Science, Engineering +6
V. J. Rayward‐Smith, Thomas H. Cormen, Charles E. Leiserson et al. · Journal of the Operational Research Society · 1991 · 16.9K citations
Separation logic: a logic for shared mutable data structures
John Reynolds · 2003 · 2.1K citations
Notions of computation and monads
Eugenio Moggi · Information and Computation · 1991 · 1.7K citations