School of Science
Department of Physics
18204
18204 Object Oriented Programming
Course Webpage: https://eclass.uoa.gr/courses/PHYS304/
Course Content
- Introduction to Object Oriented Programming, programming paradigms, different approaches to handling and organising state
- Java programming language syntax
- Types, classes, objects, class fields and methods, object initialization, Encapsulation, method Overloading, field and method modifiers, null and this, method calling in Java
- Inheritance, base class initialization, method overriding, subclasses and subclass limitations, Polymorphism, dynamic and static binding, abstract classes, sealed classes, the Object class
- Enumerations, Interfaces, Interfaces and Inheritance, default methods, callback as a programming technique, static and private methods, cloning objects, lambda expressions, functional interfaces, method references, introduction to threads
- Inner classes, anonymous classes, local inner classes, Builder design pattern
- Generic programming, type constraints and type limits, erasure, how the compiler handles generic types, type erasure and inheritance.
- Exceptions and Exception Handling, Collections in the standard library: Lists, Sets, Queues, Maps, collection views
- Multithreaded programming, threads, thread states, Locks, Conditions, Collections in multithreaded programs
- Java facilitiew for multi-threaded programming: ThreadPools, Executors, CompletableFutures. Problems in multithreaded programms: data dependencies, race conditions. Approaches used in other programming paradigms
- Introductiot to Graphical User Interfaces, principles of UI systems, Abstract Window Toolkig (AWT) and Swing, basic UI elements in Swing, Model-View-Controller pattern
- Streams, stream processing, streams and collections, suppliers, reducers, transforming streams
- Basic Design Patterns in OOP: builder, abstract factory, adapter, composite, decorator, flyweight, chain of responsibility, command, interpreter, mediator, memento, observer, state, visitor pattern
- Network programming, Asynchronous I/O, Java NIO, Reactor Pattern
- Introduction to Java Database Connectivity (JDBC)