Harokopio University
School: School of Digital Technology
Department: Informatics and Telematics
Program: Undergraduate Programme

Object Oriented Programming II

Semester: 3 ECTS: 5.0 Compulsory Erasmus

General

Code: ΥΠ10

Language: Greek

Delivery: Face-to-face

Prerequisites: Object-Oriented Programming 1

Workload

  • Lectures: 26.0 hours
  • Lab: 0.0 hours
  • Study: 47.0 hours
  • Project: 52.0 hours

Course Content

- Polymorphism, method overloading, method overriding, abstract classes, template class design pattern, generics.
- Collections, setters and getters, object equality, object comparison, iterators, inner classes.
- Input and output streams, decorators, composite pattern, streams of characters, adapters, exception handling.
- Event logging, interface of a logger, levels of logging, chain of responsibility, logger construction, factories, singletons.
- Windows, graphic components, component placement, strategy pattern, Swing.
- Event-driven programming, observers, events and listeners, the interfaces of events and listeners in Swing, anonymous classes, the command pattern.
- The model-view-controller pattern.
- Defensive programming, assertions, unit testing, JUnit, mock objects, test-driven development.

Learning Outcomes

The objective of the course is to deepen on the design and development of applications using the object-oriented programming paradigm. It covers the basic principles and techniques used in the object-oriented design. It presents well-know design patterns and studies how those are applied to the design of well-known software libraries. It applies the paradigm of object-oriented programming in practice using Java. Students that will successfully complete this course should be able to:
- recall the basic principles and techniques of object-oriented programming
- design and implement applications with complex features
- identify and use design patterns
- use third-party libraries and data structures

Skills

- Independent work
- Team work
- Promoting free, creative and deductive reasoning