Skip to content

Intermediate course introducing Object-Oriented Programming (OOP) principles with the Java language. It covers the evolution of programming languages, the limitations of procedural programming, and the key features of OOP.

Notifications You must be signed in to change notification settings

MarinCervinschi/ObjectOrientedProgramming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ObjectOrientedProgramming

Intermediate course introducing Object-Oriented Programming (OOP) principles with the Java language. It covers the evolution of programming languages, the limitations of procedural programming, and the key features of OOP. The course includes various modules that delve into the basics of Java, object-oriented design, data structures, generics, functional programming, exceptions, and multi-threading. Each module is accompanied by practical lab exercises to reinforce the concepts learned.

Credits

Software

Modules

[E1] From Functions to Classes

  • Evolution of programming languages
  • Limits of procedural programming
  • Modularization, reuse of code, and object-oriented programming
  • Object-oriented programming key features

[E2] Basics

Lab: exercises.warmup, exercises.arrays, exercises.strings

  • Variables, methods and parameter passing
  • Fundamental data types
  • Decisions
  • Loops
  • Arrays (and brief introduction to ArrayList)
  • Strings
  • Input and output
  • Random numbers

[E3] Object Oriented Design

Lab: exercises.oop

  • Instance variables and encapsulation
  • Specifying the public interface of a class (and its implementation)
  • Static variables and methods
  • Inheritance hierarchies
  • Abstract classes
  • Interfaces (and anonymous implementations)
  • Object: the cosmic superclass
  • Wrapper types
  • UML class diagrams

[E4] Data Structures (Collections Framework)

Lab: package exercises.collections

  • Iterable and Iterator interfaces
  • List interface and its implementations (ArrayList, LinkedList)
  • Set interface and its implementations (HashSet, LinkedHashSet, TreeSet)
  • Deque interface and its implementations (ArrayDeque, LinkedList)
  • Map interface and its implementations (HashMap, LinkedHashMap, TreeMap)
  • Sorting and searching

[E5] Generic Data Structures (Generics)

Lab: exercises.generics

  • Generic classes and type parameters
  • Implementing generic types
  • Generic methods
  • Constraining type parameters
  • Type erasure

[E6] Functional Programming

Lab: exercises.functional

  • Lambda expressions
  • Functional interfaces
  • Producing, transforming, and collecting functional streams
  • The Optional type

[E7] Exceptions

Lab: exercises.exceptions

  • Throwing exceptions
  • Catching exceptions
  • Checked and unchecked exceptions
  • Closing resources

[E8] Multi-threading

Lab: exercises.threads

  • Thread states
  • Thread interference
  • Thread synchronisation (synchronised/wait/notify)
  • ExecutorService
  • Callable/Future/Task

About

Intermediate course introducing Object-Oriented Programming (OOP) principles with the Java language. It covers the evolution of programming languages, the limitations of procedural programming, and the key features of OOP.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published