Day | Chapters & Strategies | Topics |
---|---|---|
1 |
Overview |
|
1 |
Design Strategies and Patterns Selection Surprisingly enough, the 7 Design Strategies and Techniques, and the 24 "Gang of Four" (GOF) Design Patterns all depend upon 7 simple categories. Here is a two-page Decision Map starting from those 7 categories and guiding us down to the selection of the proper Design Patterns best suited to solve the problem(s) at hand. |
|
5 hours (optional) |
Business Concept Modeling (BCM)—optional This optional chapter is for students who are not familiar with UML Analysis yet, especially Class Diagrams. These models are crucial in understanding what a system's subject matter, concepts, and mission precisely are. Class diagrams are also extensively used throughout Design Patterns as well as System's Architecture. Though not a substitute for the 5-day UML Analysis class this chapter is a valuable "survival kit". |
|
2 |
Object Design Fundamentals This chapter explains the fundamental principles of object design and the best strategies to implement them. We first cover the best basic OO Design techniques that implement Encapsulation & Specialization as well as Inheritance & Polymorphism. Then we we examine the best implementations of Associations and Association Classes. |
|
2 |
An Associations Framework (1 hour) Here is a great example of the "Write Once, Use Multiple Times" principle. This chapter, while solving a classical problem, is an opportunity to walk students through the process of designing general solutions to thorny problems. After appreciating how much extra work is usually deployed for the implementation of associations and association classes, we devise a sophisticated yet straightforward generic solution. We start with the UML design to generalize that code and review its implementation in C++, Java, and C#. The result is a powerful Association Framework. |
|
2 |
Implementing Methods Discover the world of Method Implementation. Those techniques go way beyond simple class methods and take advantage of Inheritance, Polymorphism, and Associations. You will cover the three Polymorphism Design Strategies and four "GOF" Design Patterns. |
|
2 |
Constructing Objects Discover the 9 different ways of constructing objects when many building options are needed and/or other objects are linked to the newly constructed one. You will cover 4 Design techniques and 5 GOF Design Patterns, just for the sake of constructing objects. |
|
3 |
Designing Complex Object Structures Here are one general Design Strategy and two Design Patterns to build any sophisticated object structure in the simplest, most elegant ways. |
|
3 |
The Autonomous Mission System (AMS) This is a case study sophisticated enough to exhibit the real power of class diagrams in building Business Concept Models or System Concept Models. It appeals to anyone aiming at automating and synchronizing operations among multiple, physical assets acting towards a common purpose or mission. Such assets may be fixed or mobile, like vehicles, drones, aircrafts, and computer systems—portable or not. Control of the entire operations is distributed to keep missions resilient in case any controlling assets would be lost due to hostile conditions. This is a key topic for Humanitarian, or Engineering, or Defense-related organizations. We use this AMS case study multiple times throughout this course. |
|
4 |
Making Objects Work Together Now that we can design and construct any objects—no matter how complex they might be—another, major challenge lies ahead of us. Objects must be able to communicate, collaborate, and work in synchrony for an application to play its role. Enter the world of object and system's behavior, serviced by the ubiquitous "Propagation" Design Strategy and 7 powerful Design Patterns. |
|
4 |
Objects that are Difficult to Handle Some objects or object structures are difficult to handle due to the unusual "weight" they represent. Those objects typically control sophisticated resources, carry with them large amounts of data, work with different layers of networking, or depend upon multiple domain spaces. The solutions presented in this chapter show how to keep their usage simple while properly handling their background responsibilities. Front-end simplicity is combined with back-end, heavy-duty work. |
|
5 |
Handling an Object's States Capture, restore, or manage the different States of an object, a structure, or a system. There are two important patterns allowing to do so in a safe, elegant, and reliable way. Though States have historically been implemented with long, cumbersome series of "switches", "cases" or even pointer tables. Here are very elegant, scalable, object-oriented solutions to implement States in a much more better way. |
|
5 |
Small Languages Handle dynamic business rules, special queries, and flexible algorithms or structures with a small language and its interpreter. Get possibly closer to human language and open new possibilities. |
|
5 |
Anti-Patterns Some mistakes keep recurring throughout the history of systems and application development but there is a way to fight back. Here is a classification of a few, main mistakes, or "Anti-Patterns", to help recognize, fix, or prevent them altogether. After having devoted so much time on what to do in this class it is now appropriate to also point out what should not be done. |
|