Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Less Abstract! Surprising effects of expressing...
Search
Ivan Nemytchenko
November 18, 2019
Technology
1
600
Less Abstract! Surprising effects of expressing OOP in pictures
Ivan Nemytchenko
November 18, 2019
Tweet
Share
More Decks by Ivan Nemytchenko
See All by Ivan Nemytchenko
Code Topology Notation
inem
0
96
The Shape of a Service Object
inem
0
970
The Curse of Service Object
inem
0
300
Modern Make for modern (Rails) programmers
inem
0
82
Откуда берется сложность в Rails-проектах и куда бы её деть?
inem
0
270
Rails без боли и оверинжиниринга
inem
0
470
Painless Rails: наводим порядок в контроллерах
inem
0
260
Pure functions and side effects
inem
0
48
Solving architectural problems with OOP in pictures
inem
1
5.9k
Other Decks in Technology
See All in Technology
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
3
1.5k
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.6k
OPENLOGI Company Profile for engineer
hr01
1
20k
IAMのマニアックな話2025
nrinetcom
PRO
6
1.4k
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
200
リクルートのエンジニア組織を下支えする 新卒の育成の仕組み
recruitengineers
PRO
2
180
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
550
“常に進化する”開発現場へ! SHIFTが語るアジャイルQAの未来/20250306 Yuma Murase
shift_evolve
0
100
RaspberryPi CM4(CM5も)面白いぞ!
nonnoise
0
150
どちらかだけじゃもったいないかも? ECSとEKSを適材適所で併用するメリット、運用課題とそれらの対応について
tk3fftk
2
280
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
110
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
230
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Writing Fast Ruby
sferik
628
61k
BBQ
matthewcrist
87
9.5k
Being A Developer After 40
akosma
89
590k
A better future with KSS
kneath
238
17k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Code Reviewing Like a Champion
maltzj
521
39k
Fireside Chat
paigeccino
35
3.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
13
1k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Embracing the Ebb and Flow
colly
84
4.6k
Transcript
Less Abstract! Effects of expressing OOP in pictures Ivan Nemytchenko
@inemation inem.at
Who is this guy? • Educator • Freelance consultant •
Complexity fighter • GitLab fan • Serbian Siberian • inem.at • @inemation
Serbian Siberian ??
I am Russian
None
None
Omsk is in Siberia
I live in Serbia
Serbia != Siberia
Serbia != Siberia != Syria
What’s the problem? Abstractions on top of abstractions on top
of other abstractions!
What’s the problem? Very hard to see the big picture
in real projects
What’s the problem? Very hard to see the big picture
in real projects CRC Cards
What’s the problem? Very hard to see the big picture
in real projects UML :(
What to expect here? 1. It is gonna be fun!
2. You’ll become better at: • Learning, teaching, explaining complex concepts • Visualizing big picture • Finding architecture flaws •Tracking dynamics
OOP in pictures Foundation Advanced concepts Using in practice
How to illustrate Dependency Injection * with one picture **
so that everyone understands ?
“Smart kettle” task Boil water correctly and safely! 1. No
code 2. Just classes 3. And their methods
Artistic soldiers method
Kettle components (objects) small dudes == objects
Kettle components (objects) small dudes == objects
Kettle components (objects) small dudes == objects
Kettle components (objects) small dudes == objects
Objects with methods! arms == methods
A method number of fingers == number of arguments
Instance variables Stored inside the brain
Instance variables Can be reused later
But how other stuff is going to look like?…
Returning results door on the body
Private methods “internal arms”
Exception puking
Basic anti-patterns
Too many arguments
Too many methods
Too long methods
Too many instance variables
Too much conditional logic in methods Swallen arms
Too much of everything!!!
OOP in pictures Foundation Advanced concepts Using in practice
Polymorphism same number of hands with same number of fingers
None
None
Classes A spawning platforms
Classes A spawning platform
same topology Object & classes have the
Topology Cups and donuts share the same topology
same topology Object & classes have the
Execution flow
Execution flow
Execution flow
Execution flow == Rube Goldberg machine
Execution flow
Execution flow
Execution flow
Dependencies have to remember about classes to use them
Dependencies
Side effects
Dependency Injection Instead of remembering thing we pass them as
arguments
None
OOP in pictures Foundation Advanced concepts Using in practice
Visual language!
None
None
None
None
None
None
None
None
None
None
None
Big picture
Dynamic anti-patterns
Dynamic anti-patterns
Dynamic anti-patterns
Dynamic anti-patterns
Dynamic anti-patterns
None
None
None
None
None
None
None
OOP in pictures Foundation Advanced concepts Using in practice
None
– George Box “All models are wrong but some are
useful.”
• Big picture • Modelling • Documenting • Sharing knowledge
• Explaining What can you use it for
Ivan Nemytchenko, inem.at, @inemation RubyConf 2019 Questions?