
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
From this lecture you will learn:
• How to communicate during this course
• Where to ask questions
• How to ask questions
• Communication channels
From this lecture you will learn:
• Where to find good tests to verify your knowledge
• How to get unlimited access to Learn IT application (only for my students from Udemy)
Why I Created This Bot
The Challenge: From Passive Learning to Real Mastery
The Solution – Learn IT Bot
Inside the Learn IT Bot – Key Features
Adaptive Difficulty & Endless Practice
Live Demo of the Learn IT AI Bot
Why It Matters – From Learning to Real-World Readiness
In this lesson, I’ll show you how my students get exclusive, free, no sign-up access to a one-of-a-kind AI Bot I personally built to help you deeply learn the material, reinforce your knowledge, and gain a real advantage in interviews, real-world work and career growth.
From this lecture you will learn:
• What is OOP
• What is an object
• Class
• Why do we need OOP
• OOP advantages
• OOP VS Functional programming
• Inheritance
• Encapsulation
• Polymorphism
• Abstraction
From this lecture you will learn:
• What does class consist of
• Fields
• Initialization blocks
• Constructors
• Methods
• Nested classes
• Getters and setters
• toString() method
• How to create object
From this lecture you will learn:
• Concrete classes
• Nested classes
• Final classes
• POJO classes
• Abstract classes
• Anonymous classes
• Abstract keyword
From this lecture you will learn:
• What are interfaces
• What does interface consist of
• Abstract class VS Interface
• Interface VS Class VS Type
From this lecture you will learn:
• What is inheritance
• ‘super’ keyword
• ‘instanceof’ operator
• How to extend classes
• Inheritance rules
From this lecture you will learn:
• What is polymorphism
• Method overriding
• Override VS Overload
• Dynamic binding
• ‘final’ keyword
From this lecture you will learn:
• What is ‘static’ keyword
• Where we can use ‘static’ keyword
• Static methods
• Static fields
• Static import
• Static VS dynamic binding
From this lecture you will learn:
• What is encapsulation
• Access modifiers
• Which modifiers to use and when
• Rules during overriding
From this lecture you will learn:
• What is an object
• Object class overview
• JNI
• ‘native’ keyword
• @Deprecated annotation
The Quiz covers content from the following lessons:
Object-Oriented Programming: Basics
Classes & Objects
Different types of Classes, Abstract keyword and Abstract classes
Interfaces
Inheritance
Polymorphism
Static in Java - ‘static’ keyword
Encapsulation
Object, JNI and Object class overview
From this lecture you will learn:
• What are SOLID principles
• SOLID principles in OOP
• Single responsibility principle
From this lecture you will learn:
• Open / closed principle
• Code examples
From this lecture you will learn:
• Liskov substitution principle
• Code examples
From this lecture you will learn:
• Interface segregation principle
• Code examples
From this lecture you will learn:
• Dependency inversion principle
• Code examples
The Quiz covers content from the following lessons:
SOLID principles overview & Single Responsibility Principle
Open / Closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
What GRASP Is
Purpose of GRASP in OOP and Architecture
GRASP vs SOLID
GRASP vs Design Patterns
GRASP and UML
When GRASP Provides Maximum Value
Typical Misconceptions About GRASP
Summary and Lesson Transition
Introduction to the Information Expert Principle
Core Idea: Assigning Responsibilities Based on Domain Data
Identifying True Experts in a Domain Model
Conflicts Between Information Expert and Low Coupling
Anti-Patterns: Fake Experts and Misused Data Classes
Practical Example: Applying the Information Expert Principle
Anti-Patterns demo
Information Expert in action demo
Introduction to the Creator Principle
Rules for Assigning Object Creation Responsibility
Linking Creator with Information Expert
When to Avoid Creator (Factory vs Domain Rules)
Common Mistakes with Creator
Practical Example: Applying the Creator Principle
Anti-Patterns demo
Creator Principle in action demo
Introduction to the Controller Principle
Types of Controllers: Façade Controller vs Use Case Controller
Mapping System Events to Controllers
Avoiding Bloated Controllers and the God Class Anti-Pattern
When Not to Use a Controller
Practical Example: Applying the Controller Principle
Introduction to Low Coupling
Techniques for Reducing Coupling
Coupling Metrics and Red Flags
Low Coupling vs Performance Trade-Offs
Relationship with Patterns: Adapter, Facade
Practical Example: Identifying and Reducing Coupling
Introduction to High Cohesion
Identifying Cohesive Responsibilities
Splitting Responsibilities in Feature Rich Classes
Cohesion Metrics: Understanding LCOM Basics
Anti-Patterns: Utility Classes and Swiss Army Knife Classes
Practical Example: Improving Cohesion in Real Code
Introduction to Polymorphism
When to Replace Conditionals with Polymorphism
Using Interfaces and Abstract Classes in GRASP
Linking Polymorphism with Strategy and State Patterns
Pitfalls of Polymorphism
Practical Example: Refactoring Conditionals into Polymorphism
Introduction to Pure Fabrication
When Domain Model Entities Should Not Take Responsibility
Service Objects, Repositories, Managers – Allowed or Not
Balancing Pure Fabrication vs Cohesion
Typical Mistake: Moving All Logic to Services
Practical Example: Applying Pure Fabrication Correctly
Introduction to Indirection
How Indirection Reduces Coupling
Common Use Cases for Indirection
Indirection in Event Bus, Mediator, and Controller Layers
When Indirection Becomes Too Much
Patterns That Rely on Indirection: Observer and Mediator
Practical Example: Applying Indirection in System Design
Introduction to Protected Variations
Identifying Unstable Points in a System
Protecting Variations with Interfaces and Abstractions
Adapters and Anti Corruption Layers
Aligning Protected Variations with Dependency Inversion
Real World Examples of Protected Variations by Domain
Practical Example: Protecting a System from Change
Introduction: Why GRASP Patterns Must Be Considered Together
Conflicts Between GRASP Patterns: Information Expert vs Low Coupling
Synergies Between GRASP Patterns: Polymorphism and Protected Variations
How the Controller Pattern Impacts Cohesion and Coupling
Understanding Trade offs Between Competing GRASP Principles
Choosing the Dominant Pattern in Design Decisions
Practical Guidelines for Balancing GRASP Patterns in Real Systems
Introduction: GRASP Across Architectural Layers
Applying GRASP in the Domain Layer
Applying GRASP in the Application Layer
Applying GRASP in the Infrastructure Layer
Where GRASP Does Not Apply
Common Misunderstandings When Applying GRASP by Layer
Practical Guidelines for Using GRASP in Layered Architectures
Introduction: Why Compare GRASP, SOLID, and GoF
What Problems GRASP Solves
What Problems SOLID Solves
What Problems GoF Design Patterns Solve
Why GRASP Is Earlier and More Foundational
How GRASP Influences SOLID Principles
Mapping GRASP to SOLID and GoF Patterns
From this lecture you will learn:
• Requirements for EXAM task
• BDD – overview
• Exam task – demo
• Object-oriented programming homework
• What is a clean architecture
• What is a coupling
• Types of a coupling
• What is a cohesion
• Types of a cohesion
• Benefits of Clean Architecture
• Plugin concept
• Why do we need clean architecture
• Advantages and disadvantages of clean architecture
• Tell, don’t ask principle
• How to apply ‘Tell don’t ask’ in real life
• What is data structures
• Objects VS Data structures
• Getters and Setters in objects
• When to use data structures
• What is Law of Demeter
• Goals
• Exception from law
• Pros & Cons
• Code Examples
KISS Principle - Definition
Variants of KISS in Software Development
Key Concepts of KISS
Why Use KISS Principle / Benefits
How to Apply KISS Principle
Case Studies of KISS Principle
Code Examples of KISS Principle
YAGNI Principle - Definition
Why Use YAGNI Principle / Benefits
How to Apply YAGNI
Case Studies of YAGNI Principle
Code Examples of YAGNI Principle
YAGNI Principle VS KISS Principle - Key Differences
DRY Principle - Definition
Why Use DRY Principle / Benefits
How to Apply DRY
Contrasting Concepts - WET & AHA
Case Studies of DRY Principle
Code Examples of DRY Principle
• Problem statement
• Why do we need a good structure
• How to establish good code structure
• Factors to consider during the code grouping
• Cohesion Principles
• Common closure principle
• Common reuse principle
• Reuse-release equivalence principle
• Coupling principles
• Acyclic dependencies principle
• Stable dependencies principle
• Stable abstractions principle
• Package by layer
• Package by feature
• Conway's law
• How technical factors impact code structure
• Tools for code analysis
• Why do we need design patterns
• What are GoF patterns
• Key points of GoF patterns
• Creational Patterns: Overview
• Structural Patterns: Overview
• Behavioral Patterns: Overview
• Class & Object Patterns
• What patterns we are going to learn in this course
• Answers to most common questions of my students
• Singleton
• Prototype
• Factory Method
• Builder
• Abstract Factory
• Factory Method VS Abstract Factory
• Proxy
• Decorator
• Adapter
• Façade
• Comparative Analysis
• Bridge
• Flyweight
• Composite
Strategy Pattern
Command Pattern
Strategy VS Command
Template Method
Iterator
Chain of responsibility
• Visitor
• Visitor VS Decorator
• State
• Observer
• Memento
• Interpreter
• Mediator
Unlock the full potential of Java development with my comprehensive course on best practices. Whether you're a Java developer looking to elevate your coding skills, a Development Lead, an Architect, or a QA professional aiming to enhance testing efficiency. This course is your gateway to a higher level of Java expertise. It provides a deep dive into industry-proven techniques.
Key Learning Points:
Solid Foundation in OOP Principles:
Master the fundamental concepts of OOP and discover their direct applications in Java development.
Application of SOLID Principles:
Learn how to apply SOLID principles systematically, ensuring the creation of Java code that is robust, scalable, and easily maintainable.
Object-Oriented Architecture Design:
Develop the skills needed to create scalable and maintainable Object-Oriented Architecture for Java applications, ensuring your projects stand the test of time.
Application of GoF Design Patterns:
Understand and implement the renowned Gang of Four (GoF) design patterns, addressing common challenges encountered in software design.
Preparation for Design Patterns Interviews:
Learn how to navigate design pattern-related problems commonly encountered in interviews, enhancing your problem-solving skills and interview performance.
Effective OOP Interview Preparation:
Equip yourself with the knowledge and skills needed to confidently navigate OOP-related interview questions, enhancing your prospects in job interviews.
Hands-On Exam on Object-Oriented Programming:
Demonstrate your practical proficiency in applying OOP principles through a comprehensive examination, solidifying your understanding of key concepts.
Understanding Java Platform Module System (JPMS):
Explore the benefits of modularity in Java applications using the Java Platform Module System, gaining insights into creating modular and efficient codebases.
Comprehensive Testing Techniques:
Master Unit Testing with JUnit, delve into Integration Testing, and learn to harness the power of Mockito and PowerMockito for effective and reliable testing.
Adoption of TDD, BDD & ATDD Methodologies:
Gain practical experience in Test-Driven Development (TDD), Behavior-Driven Development (BDD), and Acceptance Test-Driven Development (ATDD), transforming your approach to software development.
Web Application Architecture:
We are going to learn the best practices of web application development
Best Practices of REST Architecture Design in Java Applications:
Architecture - that is something what is critically important from the very beginning.
Stay Updated with Java New Versions:
Keep pace with the latest features and improvements in recent Java versions, ensuring you leverage the full potential of the language.
Effective Logging Practices in Java:
Understand the critical role of logging in Java applications and learn best practices using frameworks like SLF4J and Logback.
Secure Coding Practices:
Explore secure coding practices, addressing OWASP Top 10 security issues in Java applications, fortifying your code against potential vulnerabilities.
Designing RESTful Architectures:
Master the principles of RESTful architecture and learn best practices for designing RESTful APIs in Java, ensuring efficient communication in modern software systems.
Understanding Software Development Metrics and KPIs:
Gain insights into the importance of metrics and key performance indicators (KPIs) in software development. This knowledge enables informed decision-making and continuous improvement in your development processes.
Embark on this educational journey to become a proficient and well-rounded Java developer, QA professional, architect, or tech lead, armed with the latest industry best practices and techniques. Join us on a journey to master Java best practices and elevate your software development skills to new heights.