
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
From this lecture you will learn:
• What are methods
• How to declare a method
• What is method signature
• What is method overloading
• How to call method
From this lecture you will learn:
• Passing data by value
• Passing data by reference
• Passing primitive types to method in Java
• Passing reference types to method in Java
From this lecture you will learn:
• What is recursion
• What are recursive methods
• How to write recursive methods
• When do we need recursive methods
• Pros and cons of recursive methods
From this lecture you will learn:
• What are variable-length arguments
• Syntax of varargs
• Varargs in the methods
In this video we will review coding exercises from this section
The Quiz covers content from the following lessons:
Methods in Java: Overview
Parameter Passing Mechanism in Java
Recursive methods
Variable Length Arguments
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
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 course, you can learn Object-Oriented Programming from basics to advanced concepts.
All code examples in the course are written in Java but that's doesn't mean you can't apply the knowledge from this course in other programming languages. You can easily use the knowledge from this course in any language if you want to build applications with the help of an object-oriented programming approach.
There are a lot of other courses on this topic. So, why would you choose exactly this course? Here are just a few reasons:
- Coding exercises
To learn to program is not enough just watching videos and reading books. You also need to have a lot of practice. In this training course, you will have different practical tasks which will help you learn and understand Java better.
One of the key tasks where you can practice your knowledge is the implementation of a backend system for an online store. Also, you have a lot of tasks that use domain-specific terminology: accounts, transactions, users, carts, menu, services, etc. So that means you are learning programming without abstract concepts like it is written in the books or in other courses. You learn domain-specific terminology and during the lessons, we investigate specific extracts from code that can give you a clear vision of how you can apply the knowledge in real life.
- Open source code
We hide nothing from our students! Including the source code for the home task solutions and source code of examples that were shared during the lesson. Having the source code you can just copy and paste it to run it on your local computer to understand how things work better.
You are allowed to use all source code examples for learning purposes. This helps significantly to configure the environment and make tests work, especially in case students didn't work with any testing framework in the past.
- Q&A support
The significant difference between the online and offline learning process is the instructor's availability. If you are in one room with a tutor he always can help you to get understand the specific concept or to help fix your code on your computer.
In this course, we are supporting students with answers to any questions flagged in the Q&A section. In case there will be recurring questions - separate video lessons will be created to show how to address the issue.
So with this course you are not just getting video materials, code exercises, source code, access to the free mobile application without limits (which is still pretty cool, huh? :) ), but you also get tutor support and answers to your questions along with this course.
- Relevant knowledge
After our team investigated other Java courses on Udemy we realized that most of them have nothing in common with real life. The information which is shared there is very old and significantly out of date. For example, the instructor teaches a framework which is not been used already for 15 years. Or instructors do stress on the programming design which is not used anymore at all!
The instructor of this course is a consultant in a top-rated IT outsourcing company and helps to bring cutting-edge solutions in IT for all his clients. Feel free to check the LinkedIn page of the instructor and check skills endorsement. More than 19 thousand people across all over the world (BTW most of them are from the top 100 companies of the world) evaluated the skills of Andrii Piatakha.
With this course, you can be sure that you will spend your time learning the right things from one of the best IT consultants in the world.
- Free mobile App without limits for our students
Knowing Java is one skill. Be able to pass interviews in the company - that is another skill :) Nowadays a lot of companies use tests to select candidates on the first level of interview. We developed applications to practice skills specifically for such purposes.
In this course, we will provide you link to download our FREE mobile app for android. (soon it will be also available for iOS platforms)
The instructor of this course comes up with hundreds of tests that are used to test the knowledge of candidates. With this application, you will be well-prepared for the interview.
Also, only for our students - there is no limit on attempts to pass certification. In the course, we will tell you how to set up a special bonus code that will remove restrictions for our students inside the app.
- High concentration of useful material in each lesson
Sometimes you can notice that watching 5 minutes of our lesson is equivalent to watching another 30 minutes lesson.
This is because time spent for preparation for the lesson (script for the lesson, lesson structure) and video editing (to cut boring pieces of the lesson or time when the program loads) sometimes 10 times as much (sometimes even 20) as the final lesson duration after video editing.
Also, each topic is separated from another. In case some concept will be explained in the next lesson and you don't need to worry about understanding this in the scope of this lesson - the instructor will make an announcement when a specific topic will be covered.
Go and try it yourself! We will appreciate your feedback.
So don't wait! Take a look at the lessons' preview if you still have doubts!
Buy this course today, and you will get all updates for FREE!
For those who successfully passed this training course, or for students who were recognized for asking amazing questions, there is a special offer from the IT-Bulls company! The creator of this course is IT-Bulls company CEO and Founder. We are always in search of talents to run our amazing startups together with you. Probably you always dreamed about running your startup? In this course, you will be able to find the team who will teach you how to do that and (in particular cases) will be glad to help with implementation!
Hope you enjoy this course! And remember, we appreciate all your feedback! Your feedback will help us to become even better! Your feedback will help us to create to best Java course ever!
See you at the lessons! :)