SlideServe
Menu
Préférences
© SlideServe · v2026

Object vs Class composition

klyles avatar
15 diapositives · 196 Views · Jan 03, 2020

Explore the advantages and issues of implementation inheritance and object composition. Learn about proposals and approaches to discipline inheritance, behavioral specification, and reuse contracts. Compare delegation and inheritance in system dynamics and modularity. Discover the nuances of composition and subclassing without prior superclass code knowledge.

Object vs Class composition - slide 1
01 / 15Object vs Class composition
1 / 17

Télécharger la présentation

Object vs Class composition
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Object vs Class composition By Marine Ruhamanya

  2. Disciplined Inheritance • Problems with implementation inheritance: • Encapsulation • Fragile Base Class problem • However it is a powerful mechanism. • Several attempts to discipline the mechanism

  3. The specialization interface • Special interface between a class and its subclasses • C++, Java, C# support the notion of protected features of a class

  4. Typing the specialization interface • Overriding methods needs to be done carefully • Proposal (Lamping,1993): Type system to improve control • Declare method dependencies • Acyclic graph => methods arranged in layers • Cycles => all methods form a group • Subclass has to override methods group by group

  5. Behavioral specification • Semantic issues of implementation inheritance: • mostly related with re-entrance caused by self-recursion • Proposal (Stata and Guttag, 1995): • View a class as a combined definitions of interacting parts objects • Division of labor or method groups • No direct access between divisions

  6. Behavioral specification(2) • Use of specification techniques and the notion of behavioral subtyping • Stata-Guttag vs Lampig: • Stata-Guttag: split state and behavior into groups. Methods groups encapsulate part of the state • Lampig: any dependency of methods on state • Tight semantic control leads to object composition.

  7. Reuse contracts • Less restrictive forms of implementation • Proposal (Stayeart et al., 1996): Annotated interface: reuse contracts • Determine how reuse happens between classes and its subclasses • Specify structural aspects of a base class • Specify only the part of a call stucture subclasses can rely on. • New: set of modification operators

  8. Representation Invariants & Methods Refinements • Proposal (Stephen, 1999): • Associate invariants to a class specification that refers to protected variables • Proposal (Stata, 1999): • Separate the notion of subtyping and subclassing to allow partial overriding • Supercalls are allowed if overriding method is a proper refinement of the base class method.

  9. Disciplined inheritance to avoid the FBC problem • Proposal (Mikhajlov-Sekerinski, 1998): Set of rules: • Construction of subclasses based on superclass specification • Eliminate the introduction of new cyclic method dependencies • Superclasses instance variables are private and subclasses don’t introduce new ones. • Very restrictive, but interesting formal proof

  10. Creating subclasses without seeing the superclass code • Proposal (Leavens et al., 2000): • Java Modeling Language defined • Focus on the inverse of FBC problem • Provide 3 parts to a class specification: • 1st and 2nd : public and protected parts • 3rd: subclassing contract provide information accessed variables and methods call dependencies • Link to the FBC not further explored.

  11. From Class to Object Composition • Object composition - simpler form of composition: • Object send message to other object asking for support; • Outer and inner objects, forwading • Differences to implementation inheritance; • Outer object does not reimplement inner object functionality • ‘Implicit self-recursion’ or ‘possesion of common self’

  12. From Class to Object Composition • ‘Implicit self-recursion’ or ‘possession of common self’: • There is no ‘common self’ in object composition • In implementation inheritance: upcalls due to method invocation • Example ( page 135). • Advantage: dynamic

  13. Forwarding vs Delegation • Message passing • Delegation: message-send is classified as either regular (forwarding) or self-recursive (delegation) • Example (page 136 &137) • Message resending • Complexity exploses under delegation • Interaction diagram similar to that of implementation inheritance

  14. Delegation & Inheritance • Delegation – powerful programming tool • System based on OC and delegation are highly dynamic. • Languages are called prototype-based languages; e.g.: Self. • Not yet mainstream • Delegation is behind in discipline and modularity while inheritance is behind in system dynamics and late compsition

  15. End