Methods and techniques of object-oriented software construction: extendibility and reusability. Classes, Interfaces, Objects, information hiding, single and multiple Inheritance, object composition and delegation. UML: class diagrams. Test-driven development. Programming in Java: polymorphism and types, method invocation and delegation, RTTI, Generics. Design Patterns. Lambda expressions.
- Thinking in Java. B. Eckel (Prentice Hall).
- Object-Oriented Design and Patterns. C. Horstmann (Wiley).
Learning Objectives
Knowledge acquired:
- key concepts of the object-oriented technology for software design;
- main features of object-oriented languages, exemplified by Java, and programming techniques;
- schemes of advanced reusable solutions to commonly occurring problem in software design.
Competence acquired(at the end of the course):
students will demonstrate an understanding of object-oriented principles for designing and implementing reusable and extendible software components.
Skills acquired (at the end of the course):
skill of developing flexible software, using advanced object-oriented techniques.
Prerequisites
Courses required: Programming
Courses recommended: Algorithms and data structures.
Teaching Methods
Contact hours for: Lectures (hours): 72
Hours reserved to private study and other indivual formative activities: 150
Intermediate examinations: 8
Type of Assessment
Written and oral exam.
Course program
Oject-oriented techniques for software construction: design principles and language features in order to achieve extendibility, reusability and compatibility.
1. Classes, Encapsulation and Information Hiding.
2. UML (Unified Modeling Language): the class diagram for analysis, design and documentation.
3. Inheritance. Object composition and delegation. Abstract classes.
4. Classes as Types. Polymorphism by subtyping and Genericity.
5. Object-oriented Programming in Java. Object Construction, Copy and Serialization.
Error handling by Exceptions. Generics. RTTI and Reflection. Testing of programs.