Submit Search
Upload
Modelování v OOP (a lehký úvod do DDD)
•
0 likes
•
237 views
M
Matěj Koubík
Follow
74. Poslední sobota #posobota
Read less
Read more
Software
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
Úvod do OOP
Úvod do OOP
Tomáš Holas
Django
Django
Tomáš Holas
Doctrine for NoSQL
Doctrine for NoSQL
Benjamin Eberlei
Doctrine and NoSQL
Doctrine and NoSQL
Benjamin Eberlei
Beyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
Jeremy Cook
Hexagonal architecture in PHP
Hexagonal architecture in PHP
Paulo Victor Gomes
OOP in PHP
OOP in PHP
Tarek Mahmud Apu
PHP in one presentation
PHP in one presentation
Milad Rahimi
Recommended
Úvod do OOP
Úvod do OOP
Tomáš Holas
Django
Django
Tomáš Holas
Doctrine for NoSQL
Doctrine for NoSQL
Benjamin Eberlei
Doctrine and NoSQL
Doctrine and NoSQL
Benjamin Eberlei
Beyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
Jeremy Cook
Hexagonal architecture in PHP
Hexagonal architecture in PHP
Paulo Victor Gomes
OOP in PHP
OOP in PHP
Tarek Mahmud Apu
PHP in one presentation
PHP in one presentation
Milad Rahimi
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Kacper Gunia
PHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generation
Alexander Obukhov
Beyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
Jeremy Cook
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
Multilingualism makes better programmers
Multilingualism makes better programmers
Alexander Varwijk
Crafting Evolvable Api Responses
Crafting Evolvable Api Responses
darrelmiller71
Maintaining legacy applications
Maintaining legacy applications
Xethron
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
Java script+mvc+with+emberjs
Java script+mvc+with+emberjs
ji guang
JPA - Java Persistence API
JPA - Java Persistence API
Thomas Wöhlke
Real World Dependency Injection - phpday
Real World Dependency Injection - phpday
Stephan Hochdörfer
Sparkling Water Applications Meetup 07.21.15
Sparkling Water Applications Meetup 07.21.15
Sri Ambati
Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?
Roberto Franchini
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Guido Schmutz
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016
Kacper Gunia
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
Oleg Zinchenko
Hexagonal architecture
Hexagonal architecture
Alessandro Minoccheri
Drupal 8 migrate!
Drupal 8 migrate!
Andy Postnikov
Practical AngularJS
Practical AngularJS
Wei Ru
CQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshell
Andrea Giuliano
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
OnePlan Solutions
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
umasea
More Related Content
Similar to Modelování v OOP (a lehký úvod do DDD)
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Kacper Gunia
PHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generation
Alexander Obukhov
Beyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
Jeremy Cook
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
Multilingualism makes better programmers
Multilingualism makes better programmers
Alexander Varwijk
Crafting Evolvable Api Responses
Crafting Evolvable Api Responses
darrelmiller71
Maintaining legacy applications
Maintaining legacy applications
Xethron
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
Java script+mvc+with+emberjs
Java script+mvc+with+emberjs
ji guang
JPA - Java Persistence API
JPA - Java Persistence API
Thomas Wöhlke
Real World Dependency Injection - phpday
Real World Dependency Injection - phpday
Stephan Hochdörfer
Sparkling Water Applications Meetup 07.21.15
Sparkling Water Applications Meetup 07.21.15
Sri Ambati
Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?
Roberto Franchini
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Guido Schmutz
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016
Kacper Gunia
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
Oleg Zinchenko
Hexagonal architecture
Hexagonal architecture
Alessandro Minoccheri
Drupal 8 migrate!
Drupal 8 migrate!
Andy Postnikov
Practical AngularJS
Practical AngularJS
Wei Ru
CQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshell
Andrea Giuliano
Similar to Modelování v OOP (a lehký úvod do DDD)
(20)
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
PHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generation
Beyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
Multilingualism makes better programmers
Multilingualism makes better programmers
Crafting Evolvable Api Responses
Crafting Evolvable Api Responses
Maintaining legacy applications
Maintaining legacy applications
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
Java script+mvc+with+emberjs
Java script+mvc+with+emberjs
JPA - Java Persistence API
JPA - Java Persistence API
Real World Dependency Injection - phpday
Real World Dependency Injection - phpday
Sparkling Water Applications Meetup 07.21.15
Sparkling Water Applications Meetup 07.21.15
Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
Hexagonal architecture
Hexagonal architecture
Drupal 8 migrate!
Drupal 8 migrate!
Practical AngularJS
Practical AngularJS
CQRS, ReactJS, Docker in a nutshell
CQRS, ReactJS, Docker in a nutshell
Recently uploaded
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
OnePlan Solutions
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
umasea
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
VitsRangannavar
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
Dinusha Kumarasiri
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
joe51371421
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
Mehedi Hasan Shohan
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio, Inc.
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
gurkirankumar98700
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
Frank van der Linden
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
kotipi9215
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
MyIntelliSource, Inc.
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
Andreas Granig
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Christina Lin
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
soniya singh
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
Tier1 app
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
MyIntelliSource, Inc.
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
Power Karaoke
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
kalichargn70th171
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
Wave PLM
Recently uploaded
(20)
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽❤️🧑🏻 89...
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
Modelování v OOP (a lehký úvod do DDD)
1.
MODELOVÁNÍ V OOP A
LEHKÝ ÚVOD DO DDD Matěj Koubík @mkoubik
2.
DOMAIN DRIVEN DESIGN
3.
CO JE TO
MODEL?
4.
CO JE TO
MODEL? (užitečné) zjednodušení "reality"
5.
ARCHITEKTURA WEBOVÉ APLIKACE UI layer Application
layer Domain layer Persistence layer Storage
6.
CO JE DOMÉNOVÝ MODEL?
7.
<?php namespace AppModel; class Client extends Entity { // ... }
8.
„Zygohistomorphic Prepromorphisms“
9.
„Dual Overhead Rate
Recovery“
10.
„It's Lupus“
11.
UBIQUITOUS LANGUAGE anglicky! platí v nějakém
kontextu
12.
VALUE OBJECT Address $street Pernerova
53 $city Praha 8 $zipCode 186 00
13.
VALUE OBJECT IMMUTABLE public function changeZipCode($newZipCode) { return new Address(
$this>street, $this>city, $newZipCode ); }
14.
ENTITY Person $id 1 $name John
Doe $email john@doe.com
15.
ENTITY VALIDACE $validator>isValid($person); $person>isValid(); public function __construct($name) { $this>name = $name; }
16.
ENTITY ANEMIC MODEL if ($person>getAge() >= 18) { $originalName = $person>getOriginalName();
$person>setName($newName); $person>setOriginalName($originalName); }
17.
ENTITY ANEMIC MODEL public function rename($newName) { if ($this>age < 18) {
throw new Exception; } $this>originalName = $this>name; $this>name = $newName; } $person>rename($newName);
18.
ENTITY ANEMIC MODEL
19.
AGGREGATE
20.
FACTORY interface ICustomerFactory { /** * @param string $name
* @param Address $address * @returns Customer */ function create($name, Address $address); }
21.
BOUNDED CONTEXT class Order extends Entity { // ... }
class Product extends Entity { // ... }
22.
BOUNDED CONTEXT -- Martin
Fowler
23.
BOUNDED CONTEXT core domain supporting
subdomain generic subdomain
24.
REPOSITORY $repository = []; $repository[$product>getId()] = $product;
interface IProductsRepository { function save(Product $product); // make it explicit! function getById($id); // return whole aggregate! function delete($id); } @ChangeTrackingPolicy("DEFERRED_EXPLICIT")
25.
SERVICE stateless singleton SRP!
26.
DOMAIN EVENT objekt ne command immutable obsahuje
data může implementovat interface
27.
CO SI ZAPAMATOVAT make
it explicit definujte slovník rozlišujte kontext vyhněte se anemickému modelu
28.
ZDROJE KE STUDIU
29.
ZDROJE KE STUDIU Domain-Driven
Design: Tackling Complexity in the Heart of Software (Eric Evans)
30.
31.
ZDROJE KE STUDIU Implementing
Domain-Driven Design (Vaughn Vernon)
32.
ZDROJE KE STUDIU StackOverflow.com google
33.
DĚKUJI
Download now