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
540
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
20
The Shape of a Service Object
inem
0
520
The Curse of Service Object
inem
0
240
Modern Make for modern (Rails) programmers
inem
0
70
Откуда берется сложность в Rails-проектах и куда бы её деть?
inem
0
260
Rails без боли и оверинжиниринга
inem
0
360
Painless Rails: наводим порядок в контроллерах
inem
0
240
Pure functions and side effects
inem
0
38
Solving architectural problems with OOP in pictures
inem
1
5.6k
Other Decks in Technology
See All in Technology
開発生産性を始める前に開発チームができること / optim-improve-development-productivity.pdf
optim
0
110
o1のAPIで実験してみたが 制限きつすぎて辛かった話
pharma_x_tech
0
170
アプリをリリースできる状態に保ったまま 段階的にリファクタリングするための 戦略と戦術 / Strategies and tactics for incremental refactoring
yanzm
6
1.4k
【株式会社ELYZA】|GENIAC成果報告会 自社開発モデルプレゼンテーション
elyza
1
120
再考 アクターモデル/ reconsider actor model
ytake
0
350
PdMはどのように全てのスピードを上げられるか ~ 非連続進化のための具体的な取り組み ~
sansantech
PRO
4
1.2k
不動産売買取引におけるAIの可能性とプロダクトでのAI活用
zabio3
0
270
自作Cコンパイラ 8時間の奮闘
soukouki
0
840
開発者の定量・定性データを組み合わせて開発者体験を把握するための取り組み
ham0215
1
110
AWS SAW を広めたい @四国クラウドお遍路
kazzpapa3
0
230
Creative UIs with Compose: DroidKaigi 2024
chrishorner
1
550
eBPFのこれまでとこれから
yutarohayakawa
10
3.2k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
65
9.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
Happy Clients
brianwarren
96
6.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
2.1k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
363
22k
Building Adaptive Systems
keathley
36
2.1k
Designing for humans not robots
tammielis
248
25k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
190
16k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
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?