PROGRAMMAZIONE ORIENTATA AGLI OGGETTI
Giorgio Brajnik
Alex Falcon
OBIETTIVI FORMATIVI
Furthermore, the student should have developed practical experience in using typical programming tools, including Eclipse, Intellij, git, maven.
CONTENUTI
Procedural abstraction: specification, contracts, pre and post-conditions, assertions, exceptions. Checked and unchecked exceptions, reflection and masking; overloading.
Data abstraction: abstract data types, abstract and concrete specification, invariants.
Abstraction of iteration: iterators.
OO Design with Card-Responsability-Collaboration. State, behavior and protocol. Single Responsibility Principle.
Abstraction on types: abstract classes, interfaces; substitution principle, equality, polymorphism, inheritance. Parametric types, internal classes, anonymous classes. Dependency inversion.
Functional programming in Java.
Design patterns: factory, builder, decorator, observer.
TESTI DI RIFERIMENTO
J. Bloch. Effective Java, Addison-Wesley Professional; 3 edition (January 6, 2018), ISBN-13: 978-
0134685991.
Complementary books: R. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. ISBN-13: 978-0132350884, Prentice Hall; 1 edition (August 11, 2008).