Definition: Object Oriented Design
Structuring design of an application with classes and class relationships.
Core Presentations
-
Class Relationships,
Example Relationships,
Example code
Illustrates complete set of class relationships: inheritance, composition, aggregation, using.
-
Software Design Goals,
pptx
Describes design goals and attributes for large software projects.
-
Design Principles
Discusses Liskov Substitution, Open and Closed, Dependency Inversion, and Interface Segregation principles.
-
Design Strategies,
pptx
Discusses general design and more specific OOD strategies.
-
Design Notes,
pptx
Discusses interface design and some cautions for team development.
-
Design Guidelines,
pptx
A bag of design ideas, suggestions, and advice.
-
Abstract Data Types,
pptx,
Code Example: Str Class
Complete discussion of building a reusable package, using a string class as an example.
-
Hiding and Other Evils,
docx,
Code Demo
Demonstrates one of the dark corners of the C++ programming language.
-
Packages,
Code Example: Str Pkg
A package is a physical packaging of code in (two) files.
-
UML Notation
Diagram notation used to describe software designs.
|
Design Concepts:
-
Encapsulate classes and packages
-
Principle of Least Knowledge
-
Prime Directives: No Surprises, Maximize Cohesion, Minimize Coupling, Keep it Small and Simple
-
Distinguish between application-side and solution-side
-
Use Namespaces to define a Project Taxonomy
-
Top-Down design
-
Bottom-up design
-
Incremental Development
-
Partitioning: classes, packages, processes, and machines
-
Distinguish between Interface, Abstract Class, and Concrete Class
-
Component: Interface, Object Factory, Concrete Implementation, DLL package
-
Delegation and Events
Design Notes:
-
Software size matters
-
Package structure is important
-
Favor local consequences
-
Extract function instead of cut and paste
-
Display information, not data
-
Distinguish between test types
-
Robustness: validate user input and directory specifications
Language Notes:
-
Distinguish between Value and Reference Types
-
Resource Acquizition is Initialization (RAII)
-
Implementing Initialization
-
Virtual Function Pointer Tables
|