Lecture Notes for CS 325
Object-Oriented System Design, 19 February
2001
-
data abstraction predominates in in object-oriented design
-
thing oriented, not behavior oriented
- things are stable,
revisable, and natural
- requires the right frame of mind
- analysis and design
- a loose boundary between
analysis and design
- analysis concentrates on the problem,
design on the solution
- analysis is more concrete, design is
more abstract
- there should be an easy transition between
analysis and design models
- design includes static and dynamic
models, as well as functional models
- design moves into
implementation issues
- entities in the solution domain
- concepts
- classes and objects
- classes
are the boxes in the architectural specification
- class
encapsulation provides the basis for module independence
- public
and private methods and variables
- the interface describes the
public portions of the class
- the interface is a powerful
concept, which some languages exploit (sml) and others don't (c++)
- state, behavior, and identity
- persistent
values
- object attributes are state
- behavior is state
plus operations
- identity is a tricky concept
-
classes
- classes are the types for objects
- classes
define the interface, state, and methods for objects
- classes
are similar to adts.
- class interface and visibility at the
interface
- methods operate on class state; method types
-
classes are passive
- object-class relations
-
the message and client-server model of interaction - not really.
- invokes relation between objects
- to invoke an object,
the object must be known to the invoker
- the links or
associated-with relation
- establishing links via globals,
locals, or parameters
- visibility and sharing, coupling
-
traversing links to return answers
- bi-directional links
-
link maintenance objects
- aggregation relation, part-of
- inheritance and polymorphism
- inheritance relation,
is-a
- base or super class, derived or sub- class
- sharing
between is-a related classes
- inheritance hierarchy
-
factoring common features up the hierarchy
- reuse via
inheritance
- graphical representations of inheritance
hierarchies
- strict and non-strict inheritance
- multiple
inheritance
- who provides what
- several whos
providing a what
- bad, don't use
- behavioral
similarities leads to polymorphism
- static or object
polymorphism - a tiger is a feline
- dynamic or feature
polymorphism - tigers do things differently than tabbies
-
overloading
- criteria for good ood
- hide
information - don't have a loose interface
- coupling - naturally
high; don't make it higher
- cohesion - naturally low due to
component similarity
- reuse via inheritance along with
specialization; increases coupling
- some ood rules
-
functions only in the interface
- client-oriented interfaces only
- no violating the interface
- explicit interactions
- natural hierarchy
- no type-based case analysis
- design notations
- architectural
-
classes
- association and multiplicity
- aggregation
- inheritance
- dynamic
- inter-class
communication
- fence-post diagrams
- time goes down,
messages go across
- functional
- dfd diagrams
This page last modified on 19 February
2001.