Object-oriented programming: an objective sense of style

@inproceedings{Lieberherr1988ObjectorientedPA,
  title={Object-oriented programming: an objective sense of style},
  author={Karl J. Lieberherr and Ian M. Holland and Arthur J. Riel},
  booktitle={OOPSLA '88},
  year={1988}
}
We introduce a simple, programming language independent rule (known in-house as the Law of Demeter#8482;) which encodes the ideas of encapsulation and modularity in an easy to follow form for the object-oriented programmer. You tend to get the following related benefits when you follow the Law of Demeter while minimizing simultaneously code duplication, the number of method arguments and the number of methods per class: Easier software maintenance, less coupling between your methods, better… 
Issues in the Design of an Object Oriented Programming Language
TLDR
This paper shows that appropriate design choices can yield a language that fulfills the promise of object oriented programming without sacrificing the requirements of structured programming.
Comments on “the law of demeter” and C++
TLDR
A rule of good style for object-oriented programming has recently been put forward, actually in several flavours, and a new language-specific formulation is presented, argumenting that it is better in class than object flavour.
Interface-oriented programming and representation inference
TLDR
The object-oriented paradigm is extended to a new model called interface-oriented programming (IOP), which is implemented in a language called PJ, and the implementation-biased partial class increments of OOP are generalized and replaced with the particle construct, an unbiased partial class construct where all inheritance dependencies, variable types, and dynamic instantiation expressions are declared using interfaces.
The Automatic Reorganization of Object Oriented Hierarchies - A Case Study
TLDR
An approach to restructure inheritance hierarchies, to discover missing abstractions and to enforce programming style guidelines is described and the results of its application to the Eiffel library are examined.
Refactorings to evolve object-oriented systems with aspect-oriented concepts
TLDR
This thesis documents a collection of novel refactorings enabling the extraction of crosscutting concerns from object-oriented legacy source code and the subsequent restructuring of the aspects thus obtained, and proposes several novel aspectoriented code smells.
On the notion of inheritance
TLDR
This article aims at a comprehensive understanding of inheritance, examining its usage, surveying its varieties, and presenting a simple taxonomy of mechanisms that can be seen as underlying different inheritance models.
Metric Development for Object-oriented Software 6.1 Introduction
TLDR
The work presented in this chapter is important for its own sake and as a way of gaining Published in Software Measurement, edited by Austin Melton, pp. 75{92.
Introduction to the literature on object-oriented design, programming, and languages
This paper is an introduction to the literature on object-oriented design, object-oriented programming, a few programming languages (especially C++), and some related topics in language design.This
The Darker Side of C++ Revisited
The C++ language is to a high degree a faithful follower of Simula as an object-oriented language geared more toward software engineering than exploratory programming. I highlight several of its
Automatic method refactoring using weighted dependence graphs
TLDR
A mechanism that automatically refactors methods in object-oriented frameworks by using weighted dependence graphs, whose edges are weighted based on the modification histories of the methods to find the appropriate boundary between frozen spots and hot spots in the methods.
...
...

References

SHOWING 1-10 OF 20 REFERENCES
C++ Programming Language
TLDR
Bjarne Stroustrup makes C even more accessible to those new to the language, while adding advanced information and techniques that even expert C programmers will find invaluable.
Object-oriented programming with class dictionaries
TLDR
It is demonstrated that class dictionaries are ideal for simplifying object-oriented programming and makes interesting links between language design, data structure design, and data-base design.
The Modular Structure of Complex Systems
TLDR
This paper shows how the software design technique known as information hiding, or abstraction, can be supplemented by a hierarchically structured document, which it is called a module guide, intended to allow both designers and maintainers to identify easily the parts of the software that they must understand, without reading irrelevant details.
Elements of Programming Style
TLDR
These notes provide guidelines for internal program documentation and style for student programmers, geared mainly for a block structured language such as Pascal or C, most of the points discussed are applicable to any programming language.
Object-oriented programming ; an evolutionary approach
TLDR
The author describes the development of an object-oriented C language compiler, and how it can be put to work.
Demeter: a case study of software growth through parameterized classes
  • K. Lieberherr, A. Riel
  • Computer Science
    Proceedings. [1989] 11th International Conference on Software Engineering
  • 1988
TLDR
Demeter is a system designed for the development of large software projects using a software design methodology which focuses on growing rather than building software, and provides a facility for the reuse of software which was developed in previous software projects.
Common Lisp Object System specification
TLDR
This specification presents adescription of the standard Programmer Interface for the Common Lisp Object System, a object-oriented extension to Common Lisp as defined in Common Lisp: The Language, and provides a facility for declaring new types of method combination.
An introduction to Trellis/Owl
TLDR
This paper provides a brief introduction to the Trellis/Owl language and discusses the basic elements of the language, objects, and shows how these are specified and implemented using types, operations, and components.
Assessing the quality of abstract data types written in Ada
  • D. Embley, S. Woodfield
  • Physics
    Proceedings. [1989] 11th International Conference on Software Engineering
  • 1988
TLDR
It is argued that an ADT that contains and exportsonly one domain and exports only operations that pertain to that domain has the best cohesive properties, and that ADTs that make neither explicit nor implicit assumptions about other ADTs in the system have the best coupling properties.
...
...