Chapter 3

  1. Object-oriented development centers around the decomposition of a system into objects. See slide 3-development. Aspects of the process of development include the definition of an object model, the choice of a method guiding the process of development, the management of the process of development and the actual design, capturing the essential architectural properties of the system.
  2. Modeling may be used to capture the requirements of a system, to define a conceptual model of the domain in analysis, to describe the system architecture during design and to realize the implementation objects. See slide 3-perspectives.
  3. The OMT method distinguishes between an object model, a dynamic model and a functional model. See slide 3-dimensions.
  4. A functional approach describes the global steps of a computation, whereas an object-oriented approach is of a more distributed nature, describing the objects participating in the computation. Advantages of an object-oriented approach are support for localized changes and support to introduce concurrency in the form of active objects. See slides sli-3-functional and sli-3-OO.
  5. See slide 3-booch.
  6. Most of the heuristics are based on a linguistic analysis of the requirements document. See slide 3-heuristics.
  7. Criteria to eliminate spurious classes essentially come down to avoiding classes that provide no information. See slide 3-eliminating.
  8. The CRC method consists of defining, for each class, its responsibilities and its collaborators, that is the classes that are needed to function properly. See slide 3-crc.
  9. A contract defines the behavior of an object by means of an invariant and assertions characterizing the pre- and post-conditions of the methods supported by an object. See slide 3-obligations.
  10. Contracts may help to decide who is responsible for software failures. See slide 3-limits.
  11. Partial types are types designed to have subtypes. By refinement through inheritance, partial types may be given a concrete realization. See slide 3-partial.
  12. Refining a contract amounts to strengthening the invariant and, for each method, weakening the pre-conditions and strengthening the post-conditions. Also, methods may be added. See slide 3-inheritance.
  13. Semantic modeling is mostly concerned with defining the attributes of objects and the relation between object classes. Object-oriented modeling, in contrast, is more concerned with characterizing the behavioral properties of objects. However, the two approaches are converging.
  14. Abstract systems may be regarded as the characterization of the functionality offered by a collection of abstract data types. It specifies the repertoire of methods available to the user of such a collection.
  15. Classes corresponding to actual events specify the interactions which must occur between objects. The resources which are needed when the event occurs are specified when creating the event. Protection is offered by hiding the interaction between the objects in the definition of the event activation operator.