The course, which is a natural prosecution of "Programming" course, aims to present some abstractions and concepts useful for the design, development and maintenance of programs large size. The focus is on the object-oriented paradigm, with particular emphasis on the process of specification, modeling of data types, and design, and on some of the main design patterns.design patterns.
Expected learning outcomes
The student is able to deal with core aspects of object oriented programming and she knows some of the most common design patterns. She can evaluate code bases with respect to their qualities (such as Reusability, Verificability, Evolvibility, Maintainability) and she is able to design a set of interfaces and classes suitable to solve a simple problem whose specification is given in natural language.
The main topics that will be covered during the course are: - Encapsulation - Information Hiding - Type and Interfaces - Object states - Unit testing - Mocking e Composition - Law of Demeter - Inheritance - Abstract class - Inversion of Control - GUI, JavaFX - Design Pattern: Composite, Decorator, Adapter, Command, Template, Observer, MV*
Prerequisites for admission
Knowing how to write and develop programs that use the fundamental constructs of imperative programming; knowing and being able to use profitably at least one imperative programming language.
The theory part is carried out through lectures. The laboratory part alternates lectures with exercises and practical activities carried out individually or in small groups.
The reference text is:
M.P.Robillard - Introduction to Software Design with Java, Springer 2019.
The exam consists of a laboratory test and an oral test. In the laboratory test, lasting 4 hours, exercises are assigned that require you to create (or understand and modify) programs in Java that highlight the skills acquired regarding the structuring and design of software also through the use of design patterns.
The exam ends with the oral test, which is accessed after passing the laboratory test, which focuses on the discussion of the laboratory test relating to some topics covered in the course.
At the end of the oral exam, the overall evaluation is expressed in thirtieths, taking into account the following parameters: degree of knowledge of the topics, ability to apply knowledge to the resolution of concrete problems, ability of critical reasoning, clarity of exposition and language properties.