Repo: https://github.com/z1n0v1/M02-Java-OOP

Here you can find my solutions for SoftUni’s Java OOP course.

Java OOP is the second course from the Java Advanced module. It is 7 week long and focuses on the object oriented programming and its use as part of writing Java.

In this course you’ll learn about:

  • Working with Abstraction - (Lab) - (Exercise)
    • Project Architecture
    • Code Refactoring
    • Enumerations
    • Static Keyword
    • Java Packages
  • Encapsulation - (Lab) - (Exercise)
    • What is Encapsulation?
    • Keyword this
    • Access Modifiers
    • Mutable and Immutable Objects
    • Keyword final
    • Validation
  • Inheritance - (Lab) - (Exercise)
    • Inheritance
    • Class Hierarchies
    • Accessing Base Class Members
    • Reusing Classes
    • Type of Class Reuse
  • Interfaces and Abstraction - (Lab) - (Exercise)
    • Abstraction
    • Interfaces
    • Abstract Classes
    • Interfaces vs Abstract Classes
  • Polymorphism - (Lab) - (Exercise)
    • Polymorphism
    • Override Methods
    • Overload Methods
  • SOLID - (Lab) - (Exercise)
    • Single Responsibility
    • Open/Closed
    • Liskov Substitution
    • Interface Segregation
    • Dependency Inversion
  • Reflection and Annotation - (Lab) - (Exercise)
    • Reflection API
    • Reflecting Annotations
  • Exceptions and Error Handling
    • What are Exceptions?
    • Handling Exceptions
    • Raising (Throwing) Exceptions
    • Best Practices
    • Creating Custom Exceptions
  • Unit Testing - (Lab)
    • What is Unit Testing?
    • Unit Testing Basics
    • Dependency Injection
    • Mocking and Mock Objects
  • Test Driven Development
    • Code and Test
    • Test-Driven Development
    • Reasons to use TDD
    • Myths and Misconceptions about TDD
  • Design Patterns
    • Definition of Design Patterns
    • Benefits and Drawbacks
    • Types of Design Patterns

The next course part of the Software Engineering track is MySQL.