1
Presentation of the design function
- Review of the basic notions of OO and UML programming. UML notation diagrams. Its advantages for design.
- The challenges for the design: increasing re-use without restraining enhancements.
- Re-use through inheritance: advantages and disadvantages.
2
The basic principles in object design
- The evolution strategy with the Open/Closed Principle (OCP).
- Effective re-use through inheritance and interfaces: the Liskov Substitution Principle (LSP)
- The concept of polymorphism.
- The impact of object design on project life cycles.
Hands-on work
Illustration of the division of responsibilities between classes.
3
The principles for organisation into packages
- The package as a design unit with the Reuse/Release Equivalency Principle (REP) and the Common Reuse Principle (CRP).
- Dividing up packages thanks to the Common Closure Principle (CCP).
- Organisation between packages: Acyclic Dependencies Principle (ADP) and Stable Dependencies Principle (SDP).
Hands-on work
The construction and hierarchical organisation of packages.
4
The principles for constructing classes
- Managing dependencies logically with the Dependency Inversion Principle (DIP).
- Reducing noticeable complexity with the Interface Segregation Principle (ISP).
- Allocating responsibilities with the GRASP principle.
5
The principles of design patterns
- The technical principles of designing an object application.
- How to re-use experience when designing and developing object applications: design patterns as software solutions.
- The origins and scope of the patterns.
- The advantages and limitations of design patterns.
- Design patterns as a response to technical problems.
- Resolving recurrent problems and ensuring a long life for developments.
6
Gamma and GoF: the founding principles
- The pattern catalogue of the "gang of four".
- The objectives and advantages.
- Isolating the creation of objects from their use with creational patterns for objects: factory, singleton and prototype.
- Refining the assignment of responsibilities through behavioural patterns: chain of responsibility, method pattern and ob
- Improving the structuring of classes with structure patterns: adapter, facade and composite.
Hands-on work
Example of designing and programming with the GoF patterns.