A feedback inheritance model
Abstract A key distinguishing feature of various object-oriented programming languages is their inheritance mechanism and the purpose(s) that it is designed to serve. The conventional hierarchical inheritance model was designed for the benefit of subclasses. Subclasses can use properties of their parent classes, but not the other way around. Real life is full of situations where both the parent and child classes need to use properties belonging to each other. Such situations are hard to represent using the hierarchical inheritance model. A feedback inheritance model is proposed as a natural way to represent such situations and remedy this shortcoming. The proposed model relaxes some of the constraints of the hierarchical inheritance model and provides control over dependency among related classes, while at the same time maintaining consistency with issues such as information hiding, access, visibility, and encapsulation. These relaxations prevent users from attempting tricky and costly approaches using the hierarchical model to control the dependency among classes. Such attempts may result in inefficient and expensive software. This article includes a survey of the current inheritance models and the languages that use them. The notions of synthesized attributes, synthesized interfaces, and clans are introduced as part of the definition of the feedback inheritance model.