Lecture Notes for CS 325

Object-Oriented System Design, 19 February 2001


  1. data abstraction predominates in in object-oriented design

    1. thing oriented, not behavior oriented

    2. things are stable, revisable, and natural

    3. requires the right frame of mind

  2. analysis and design

    1. a loose boundary between analysis and design

    2. analysis concentrates on the problem, design on the solution

    3. analysis is more concrete, design is more abstract

    4. there should be an easy transition between analysis and design models

    5. design includes static and dynamic models, as well as functional models

    6. design moves into implementation issues

    7. entities in the solution domain

  3. concepts

    1. classes and objects

      1. classes are the boxes in the architectural specification

      2. class encapsulation provides the basis for module independence

      3. public and private methods and variables

      4. the interface describes the public portions of the class

      5. the interface is a powerful concept, which some languages exploit (sml) and others don't (c++)

    2. state, behavior, and identity

      1. persistent values

      2. object attributes are state

      3. behavior is state plus operations

      4. identity is a tricky concept

    3. classes

      1. classes are the types for objects

      2. classes define the interface, state, and methods for objects

      3. classes are similar to adts.

      4. class interface and visibility at the interface

      5. methods operate on class state; method types

      6. classes are passive

    4. object-class relations

      1. the message and client-server model of interaction - not really.

      2. invokes relation between objects

      3. to invoke an object, the object must be known to the invoker

      4. the links or associated-with relation

      5. establishing links via globals, locals, or parameters

      6. visibility and sharing, coupling

      7. traversing links to return answers

      8. bi-directional links

      9. link maintenance objects

      10. aggregation relation, part-of

    5. inheritance and polymorphism

      1. inheritance relation, is-a

      2. base or super class, derived or sub- class

      3. sharing between is-a related classes

      4. inheritance hierarchy

      5. factoring common features up the hierarchy

      6. reuse via inheritance

      7. graphical representations of inheritance hierarchies

      8. strict and non-strict inheritance

      9. multiple inheritance

        1. who provides what

        2. several whos providing a what

        3. bad, don't use

      10. behavioral similarities leads to polymorphism

      11. static or object polymorphism - a tiger is a feline

      12. dynamic or feature polymorphism - tigers do things differently than tabbies

      13. overloading

  4. criteria for good ood

    1. hide information - don't have a loose interface

    2. coupling - naturally high; don't make it higher

    3. cohesion - naturally low due to component similarity

    4. reuse via inheritance along with specialization; increases coupling

    5. some ood rules

      1. functions only in the interface

      2. client-oriented interfaces only

      3. no violating the interface

      4. explicit interactions

      5. natural hierarchy

      6. no type-based case analysis

  5. design notations

    1. architectural

      1. classes

      2. association and multiplicity

      3. aggregation

      4. inheritance

    2. dynamic

      1. inter-class communication

      2. fence-post diagrams

      3. time goes down, messages go across

    3. functional

      1. dfd diagrams


This page last modified on 19 February 2001.