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
670
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Less Abstract! Surprising effects of expressing OOP in pictures
Ivan Nemytchenko
November 18, 2019
More Decks by Ivan Nemytchenko
See All by Ivan Nemytchenko
Semantic_AI_knowledge.pdf
inem
0
34
Code Topology Notation
inem
0
190
The Shape of a Service Object
inem
0
1.6k
The Curse of Service Object
inem
0
370
Modern Make for modern (Rails) programmers
inem
0
130
Откуда берется сложность в Rails-проектах и куда бы её деть?
inem
0
330
Rails без боли и оверинжиниринга
inem
0
610
Painless Rails: наводим порядок в контроллерах
inem
0
340
Pure functions and side effects
inem
0
90
Other Decks in Technology
See All in Technology
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1k
Microsoft Build Keynoteふりかえり
tomokusaba
0
120
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
4
960
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
2
170
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
500
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
3.4k
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
480
脆弱性対応、どこで線を引くか
rymiyamoto
0
250
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
530
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
470
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
110
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Accessibility Awareness
sabderemane
1
130
Designing Experiences People Love
moore
143
24k
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?