Dominik Przybysz
OOP revisited
#1about 3 minutes
Defining object-oriented programming principles
Objects are modeled on real-world items with state and behavior, guided by core principles like encapsulation, SOLID, and GRASP.
#2about 4 minutes
The core principle of encapsulation and information hiding
Encapsulation protects an object's internal state by bundling data and methods into a single unit, but is often broken by public getters and setters.
#3about 5 minutes
Avoiding common pitfalls with getters and setters
Avoid exposing internal state by returning immutable collections, using optionals for nullable values, and carefully managing visibility modifiers.
#4about 4 minutes
Using abstraction and the information expert principle
Abstraction simplifies complexity by delegating responsibility to the object that holds the necessary information, following the "Tell, Don't Ask" rule.
#5about 3 minutes
Applying the Law of Demeter and pure fabrication
The Law of Demeter reduces coupling by limiting object interactions, while pure fabrication creates artificial classes for specific responsibilities.
#6about 4 minutes
Balancing single responsibility, cohesion, and coupling
Effective design involves creating classes with a single reason to change, high internal cohesion, and low external coupling.
#7about 6 minutes
Implementing dependency inversion with hexagonal architecture
The dependency inversion principle decouples modules by depending on abstractions, enabling patterns like hexagonal architecture and avoiding leaky abstractions.
#8about 8 minutes
Understanding inheritance and the Liskov substitution principle
Inheritance creates "is-a" relationships, but subclasses must be substitutable for their base classes without altering program correctness.
#9about 6 minutes
Preferring composition and leveraging polymorphism
Composition offers a more flexible alternative to tight coupling from inheritance, while polymorphism allows a single interface to represent different forms.
#10about 1 minute
Key takeaways for designing object-oriented systems
Good OOP design requires intentionally hiding details, applying principles thoughtfully, and making conscious decisions about class structure and interaction.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
01:40 MIN
Introducing the four principles of data-oriented programming
Data-Oriented Programming - Version 1.1
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
01:51 MIN
The 1980s shift to object-oriented programming
From Punch Cards to AI-assisted Development
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
04:57 MIN
Recognizing OOP abusers that misuse object-oriented principles
Identifying code smells
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
03:32 MIN
Applying data-oriented programming principles in Java
Modern Java: This is not your father's Java anymore
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
01:17 MIN
The pattern of data-oriented programming in Java
Algebraic Data Types + Pattern Matching = Elegant and readable Java code
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
02:53 MIN
Applying principles for practical software design
Modern software architectures
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
02:37 MIN
Recognizing object-oriented and dependency antipatterns
Antipatterns - nemesis of software development
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
01:42 MIN
Moving beyond the dogma of clean code
Intentional Code - Minimalism in a World of Dogmatic Design
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
Featured Partners
Related Videos
I will have to refactor ! And now ? Refactoring Techniques in Java
Kamila Santos
Java with a Clojure mindset
Dan Lebrero
Domain-Driven Transformation—How to Bring (Back) Sustainable Architecture to Legacy and Monoliths
Henning Schwentner
Give your build some love, it will give it back!
Amanda Martin
Modern Java: This is not your father's Java anymore
Ron Veen
Cloud Chaos and Microservices Mayhem
Holly Cummins
Get old, go slow, write code!
Tobias Modig
Best of Java 15 and beyond—my favorite features
Michael Inden
Related Articles
View all articles



From learning to earning
Jobs that call for the skills explored in this talk.




wunschlösung GmbH
Jena, Germany
Intermediate
Senior
Java
Docker
MongoDB

wunschlösung GmbH
Jena, Germany
Intermediate
Senior
Java



Uniwunder GmbH
Dresden, Germany
Intermediate
Senior
Java
Kotlin

CONTIAMO GMBH
Berlin, Germany
Senior
Python
Docker
TypeScript
PostgreSQL