Fondamenti di programmazione, E. Vicario, Editrice Esculapio
L.J. Aguilar, “Fondamenti di programmazione in C++”, McGraw-Hill
B. Eckel, “Thinking in C++”, freely available (HTML version) from: http://www.mindview.net/Books/DownloadSites
Design patterns, Gamma, Helm, Johnson, Vlissides, Pearson Education
Additional material (course slides and additional links) available on the course website (http://www.micc.unifi.it/bertini/)
Learning Objectives
Learn the basics of object oriented programming and design patterns.
Students will be able to program OO software in C++, and will have a basic knowledge of OOA and OOD. Representative Design Patterns will be presented.
Prerequisites
Knowledge of C programming.
Teaching Methods
About 60% of lectures in the classroom and 40% in labs.
Written and oral examination or development of a C++ program. The goal of the program has to be decided in accordance with the instructor.
<hr align="center" size="3" >
Course program
C++ language:
-Classes and objects
-Data abstraction
-Operator Overloading
-Methods
-Class Inheritance and Multiple Inheritance
-Virtual functions and abstract base classes
-Polymorphism
-C++ Streams (Input and Output)
-Templates
-Exceptions handling
OOA, OOD and OOP
-encapsulations
-delegation
-inversion of responsibility
-substitution
-implementation and interface inheritance
-fragile base class
-resource allocation
-responsibility, cohesion, coupling
Introduction to design patterns and idioms
-RAII
Fundamental Design Patterns:
-Observer
-Factory
-Adapter.