Introduction
Course Objectives
Course Approach
Object-Oriented Concepts
Software Development Problems
Abstraction
Objects
Properties of Objects
Encapsulation
Messages
Associations
Classes Describe Objects
Instantiation
Inheritance
Inheritance of Methods
Overloading Operations
Polymorphism
Multiple Inheritance
Evolutionary Development
Summary
Object-Oriented Concepts Quiz
Object-Oriented Development
Dealing with Complexity
Using Models
Modeling Notation
What is UML?
UML Diagrams
Typical OO Development Process
Using an Object-Oriented Model
Model Perspectives
Iterative and Incremental Development
Use-Case Driven Development
Summary
Development Process Quiz
Capturing Requirements
Requirements Gathering Process
Goal Statements
Auction Tent: Goal Statement
Actors
Use Cases
Auction Tent: Actors
Use Cases—Brief Descriptions
Actor Stereotypes
UML Notation for Use Cases
Scenarios
Auction Tent: Scenario Summaries
Workshop 1—Finding Requirements
Exploring Requirements
Use Case Dimensions
Use Cases—Expanded Descriptions
Writing a Course of Events
Writing Steps
Use Case Relationships
Extend and Include Notation
Handling Variations
Optional Specification Elements
Requirements Not Captured by Use Cases
Exploration and Refinement
Summary
Workshop 2—Use Case Specifications
Domain Modeling and Classes
Identifying Classes—Process
Naming Classes
Class or Attribute?
Candidates to Retain
Candidates to Eliminate
Additional Classes
Classes in the Wild
Auction Tent: Finding Classes
Workshop 3—Finding Classes
Domain Modeling and Relationships
Objectives
Class Diagram Notation
Multiplicity Notation
Association Examples
Unidirectional Associations
Association Roles
Redundant associations
Inheritance Notation
Identifying Relationships
Association or Operation?
Auction: Initial Class Diagram
Summary
Workshop 4—Identifying Relationships
Domain Modeling and Behavior
Objectives
Process Review
Finding Needed Services
Responsibilities
Overly Centralized Control
Stereotypes for Responsibilities
Boundary Behavior
Controller Behavior
Entity Behavior
Specialized Entity Behavior
Object Interaction Patterns
Sequence Diagram — Messages
Sequence — Guards and Iteration
Sequence — Object Creation
Sequence — System Boundary
Sequence — Method Activation
Definition Use Cases
Description Use Cases…
Specifying Operations
Description Perspective Interaction
Example: Replace card, normal scenario
Workshop 5—Exploring Behavior
Updating the Class Diagram
Use Case Controller Alternatives
Reviewing the Model
Summary
Workshop 6—Refining the Model
Additional Object Modeling Concepts
Additional Structural Concepts
Object Diagrams
Class-Level Characteristics
Dependency Relationships
Composition
Aggregation
Association, Aggregation or Composition?
Collections
Association Classes
N-ary Associations
Constraints
Interfaces
Interface Example
Notes
Workshop 7—Additional Structural Elements
Additional Behavioral Concepts
Object State
Finding States
State Diagram Example
State Diagram Notation
Expanded Notation Example…
Sub8-states and History Markers
Concurrent States
Using State Information
Activity Diagrams
Activity Diagram Example
Swimlanes
Summary
Workshop 8 — State and Activity Modeling
Solution Modeling
Design
Architectural Design Process
Architectural Design Issues
User Interfaces
Concurrency
Data Management
Distributed Objects
Subsystems
Subsystem Interfaces
Frameworks
Components
Component System Example
System Configuration—Components
System Configuration—Deployment
Summary
Solution Modeling Quiz
Class Design and Refinement
Class Design
Quality Design
Design Measure: Coupling
Reduce Interaction Coupling
Increase Inheritance Coupling
Design Measure: Cohesion
Inheritance Cohesion
Service Cohesion
Quality Design Strategies
Encouraging Design Simplicity
Distributing Responsibilities
Creating Generic Classes
Establishing Extension Points
Performance
Completing Implementation Details
Performance and Completeness
Summary
Workshop 9—Using Design Guidelines
Workshop 10—Extension and Refinement
Succeeding With Objects
Why a Defined Process is Needed
Model Building
OO Development Process
Process Phases
UML Diagrams
Process Artifacts
Development Roles
Use Case Driven Development
Risk Management
Example: Use Case Risk
Tracking Progress
Process Features and Benefits
Summary
Summary
OO Objectives
Applying OO
OO Technology
Applying the Course
Next Steps
Feedback
Workshop Solutions
Case Study 1
Workshop 1 – Capturing Requirements: System Scope & Basic Requirements
Workshop 2 – Capturing Requirements: Expanded Use Case Descriptions
Workshop 3 – Finding Classes
Workshop 4 – Identifying Relationships
Workshop 5 – Exploring Behavior
Workshop 6 – Refining the Initial Model
Workshop 7 – Additional Object Modeling Concepts
Workshop 8 – State and Activity Diagrams
Case Study 2
Workshop 9 – Using Design Guidelines
Workshop 10 – Extension and Refinement