| Bjarne Stroustrup has never called C++ just an object-oriented language |
| |
| Instructor |
| Jim Coplien |
| |
| Duration |
| 4 Days |
| On Organization site |
| |
| Overview |
|
You think C++ is an object-oriented language? Its designers consciously gave it support for several paradigms including generic programming, overloading — and of course object-based and object-oriented programming. If you’re using an object-oriented design method for your C++ programs, you are missing out on much of the power of the language. Come to this course to learn a design technique that exploits the power of C++. The course is based on the critically acclaimed book, Multi-Paradigm Design for C++.
|
| |
| Target Audience |
This course is for:
1. System Architects
2. Programmers
3. Analysts |
| |
| Prerequisites |
| Participants should have some experience in C++ programming. |
| |
| Course objectives |
Upon completion of this course the participant will be able to (limited to 7 items, be clear and concise):
1. Choose specific C++ programming techniques for given design circumstances.
2. Mix C++ paradigms tastefully within a single domain.
3. Create clear documentation of the structure of a domain, and of the dependencies between domains
4. Fully exploit the major features of C++ in an intuitive yet disciplined way
5. Apply the basic techniques of domain analysis to complex software problems |
| |
| Syllabus |
1. The Goals of Architecture and Design
• Architecture and Paradigm
• Architecture and Organization
• Architecture and software families
• Architecture and process
2. Paradigms, Design and Analysis
• What is a paradigm?
• A “Universal paradigm”
• OO as a special case
• C++ is not object oriented!
• Dimensions of Analysis
3. Domain Analysis
• Properties of Domains
• Example: A Text Editor
• Commonality Analysis with examples
• Variability Analysis with examples
• Parameters of Variation
• Positive and Negative Variation
4. Solution Domain Analysis
• The paradigms
• Procedural, modular, overloading, OO
• Parametric
• Transformational Analysis Rules
• Negative Variability Rules
5. Simple Domain Partitioning
• Domain/Paradigm Partitioning
• Defining system partitions
• Defining interfaces between partitions
• Co-existing with other paradigms
6. Transformational Analysis
• Text Editing Example
• Variability tables.
• Transformational Analaysis
• Reducing to code
• Domain Dependency Graphs
7. Mutually Dependent Domains
• Unified design and solution
• Text Buffer Example
• FSM Example
• The plight of UML
• Relationship to patterns
• Relationship to OO
|