Course Code: OMEGA-235
Course Title: Effective Java Programming
Duration: 5 Days

The main goal of this course is to

  • create Java technology applications that leverage the object-oriented features of the Java language, such as encapsulation, inheritance, and polymorphism
  • be a better Java programmer
  • learn philosophy and principles that lead us to be a better Java programmer
  • design good APIs

  • Developers

Module 1: Object Design Fundamentals

Module 2: OOP Principles and Design Patterns

Module 3: Interface Patterns:

  • Adapter
  • Facade
  • Composite
  • Bridge

Module 4: Responsibility Patterns:

  • Singleton
  • Observer
  • Mediator
  • Proxy
  • Chain of Responsibility
  • Flyweight

Module 5:Construction Patterns:

  • Builder
  • Factory Method
  • Abstract Factory
  • Prototype
  • Memento

Module 6 : Operation Patterns:

  • Template Method
  • State
  • Strategy
  • Command
  • Interpreter

Module 7: Extension Patterns:

  • Decorator
  • Iterator
  • Visitor

Module 8: Creating and Destroying Objects

Module 9: Methods common to all objects

  • equals() and hashCode()
  • toString()
  • Cloning: Deep and shallow copy
  • Comparing object

Module 10: Classes and Interfaces

Module 11: Generics

Module 12: Enums and Annotations

  • Annotations versus Naming patterns
  • Defining your own annotations
  • Reflection

Module 13: Methods

Module 14: General Programming

Module 15: Exceptions

  • Exceptions only for exceptional conditions
  • Programming errors
  • Recoverable conditions
  • Unnecessary usages
  • Standard versus Custom exceptions
  • Documenting Exceptions
  • Capturing failure information
  • Ignored exceptions

Module 16: Concurrency

  • Accessing shared mutable data
  • Effective use of synchronization
  • Executors, tasks and threads
  • Lazy initialization and concurrency

Module 17: Serialization