Modularization for reusability and extensibility. Notion of class, abstraction interfaces, relations between classes (inheritance and customers, aggregation and composition, multiple inheritance). The object model and binding methods. The type system in Java and its properties. Generic type and subtype polymorphism. General use of classes. The formalism U.M.L. for the analysis and description of the system. Advanced solutions: The Design Pattern. Language used: Java.
-Thinking in Java. B. Eckel (Apogeo).
-Progettazione del software e Design Pattern in Java. C. Horstmann (Apogeo).
Learning Objectives
knowledge:
The course aims to acquaint the student with the techniques and objectives associated with the design and implementation of software according to the object-oriented methodology, by pointing out both the engineering aspects, the organization of components, and those programmativi, relating to characteristics of object oriented languages.
Acquired skills:
On deepening and application to case studies paradigm of knowledge acquired during the course, students will gain a more conscious and effective use of advanced programming techniques, addressed to the quality of the software product.
Skills acquired (at the end of the course):
Ability to develop flexible software, using advanced object-oriented techniques.
Prerequisites
Courses required: Programming
Recommended courses: Algorithms and Data Structures
Further information
Frequency of lessons and exercises: Recommended
Tools to support teaching UniFi E-Learning: http://el.unifi.it
Office hours:
FRIDAY.: 14:30 to 16:00
Type of Assessment
Written and Oral
Course program
The methodology for object-oriented software construction: design techniques and language constructs to obtain code extensible, reusable and compatible.
1. Classes, interface and hidden implementation.
2. UML (Unified Modeling Language), the "class diagram" for the analysis, design and documentation.
3. Inheritance '. Object composition and delegation of messages. Abstract classes.
4. Classes as types. Subtype and parametric polymorphism.
5. Object-oriented programming in Java. Classes and Interfaces; Construction of objects, copy and serialization, error handling with exceptions. RTTI and Reflection. Static control types: cast and Fairness. General classes.
6. Programming by contract: invariants, pre / post conditions, Sottocontratti.