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
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
Search
Manjong Han
August 01, 2018
Programming
1
150
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
Manjong Han
August 01, 2018
Tweet
Share
More Decks by Manjong Han
See All by Manjong Han
Git을 이용한 더 나은 버전관리
ibluemind
2
1.2k
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
ibluemind
1
240
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
330
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
250
AWS 클라우드 입문하기
ibluemind
2
430
Other Decks in Programming
See All in Programming
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
510
CSC305 Lecture 05
javiergs
PRO
0
210
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
310
CSC509 Lecture 06
javiergs
PRO
0
260
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.1k
CSC509 Lecture 05
javiergs
PRO
0
300
Devvox Belgium - Agentic AI Patterns
kdubois
1
120
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
330
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
180
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
830
Foundation Modelsを実装日本語学習アプリを作ってみた!
hypebeans
0
110
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.3k
We Have a Design System, Now What?
morganepeng
53
7.8k
Typedesign – Prime Four
hannesfritz
42
2.8k
The Cost Of JavaScript in 2023
addyosmani
54
9k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Balancing Empowerment & Direction
lara
4
690
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Practical Orchestrator
shlominoach
190
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Transcript
ਢ যܻா࣌ ࢸ҅৬ ҳഅ III - ࣗਝয ҳഅী ҙೞৈ 2018.08.01
@ೠࣁࢎߡࠁউҊ١Ү ٚۑ CTO ೠ݅ઙ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ҳઑ ߑߨۿ ޙઁਸ ೧Ѿೞӝ ਤ೧ ੋр അप ࣁ҅ܳ ೧ೞח ߑधਵ۽ द झమਸ ѐߊೞ۰ח ֢۱ਵ۽ ࢤ - “ؘఠ৬ ۽ࣁझܳ ܻ࠙ೞ ঋҊ ё۽ ݽ؛݂”: “ੋр ࢎҊೞח ߑध” - അप ࣁ҅ী ઓೞח ѐ֛ਸ ӝ߈ਵ۽ ೠ ёۄח ة݀ػ ױਤ۽ दझమਸ ҳࢿೞ Ҋ, п ёח ݫदܳ ా೧ ࢚ഐਊ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ё(object) ‣ data + operation on data ‣ instance of class - ېझ(class) ‣ description, abstraction - ݫࣁ(message) ‣ ё р ࢚ഐ ਊ(ݫࣗ٘ ഐ) ࣻױ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
୶࢚ച(abstraction) ‣ ࢚ࣁೠ ղਊਸ ऀӝҊ ೨बੋ ࠗ࠙(ౠ)ਸ ъઑೞৈ ݽ؛ച - ङച(encapsulation) ‣ ࠁ ץਸ ా೧ ё р Ѿبܳ хࣗदெ ਬࠁࣻ ਊ, ࢎਊࢿ ૐ - ࢚ࣘࢿ(inheritance) ‣ ೞਤ ఋੑীࢲ ࢚ਤ ఋੑ ӝמਸ ࢎਊೞৈ ഛೡ ࣻ ب۾ ೲਊ - ഋࢿ(polymorphism) ‣ ೞਤ ఋੑীࢲ ࢚ਤ ఋੑ ઁҕೞח ߑߨਸ ా೧ Ҋਬೠ زਸ ࣻ೯ оמ
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - Single
Responsibility Principle (SRP) ױੌ ଼ ਗ - Open-Closed Principle (OCP) ѐߑ ತࣧ ਗ - Liskov Substitution Principle (LSP) ܻझ ജ ਗ - Interface Segregation Principle (ISP) ੋఠಕझ ܻ࠙ ਗ - Dependency Inversion Principle (DIP) ઓ ਗ
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ױੌ
଼ ਗ (SRP) ‣ “ېझח ױ ೠ ѐ ଼ਸ оઉঠ ೠ.” ‣ “ېझܳ ߸҃ೞח ਬח ױ ೠ ѐৈঠ ೠ.”
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ױੌ
଼ ਗ (SRP) ‣ ೠ ېझী ࢲ۽ ܲ ਬ۽ ߸҃غח ଼ٜ ҕઓೞҊ ݶ SRPܳ ਤ߈ೞҊ ח ૐѢ ‣ ೧ ېझ п ݫٜࣗ٘ ־ҳী ೧ प೯غח ഛੋ റ ܻ࠙ ‣ ېझ ഐٜ ࢲ۽ ܲ ݫٜࣗ٘ਸ ࢎਊೠݶ, Ӓ ݫٜࣗ٘ пӝ ܲ ଼ী ࣘೡ оמࢿ ֫. ী ٮۄ ঌݏѱ ېझܳ ܻ࠙ೞب۾ ೠ.
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ѐߑ
ತࣧ ਗ (OCP) ‣ “ഛীח ৌ۰ যঠ ೞҊ, ߸҃ীח ײഃ যঠ ೠ.” ‣ “ӝמਸ ߸҃ೞѢա ഛೡ ࣻ ਵݶࢲ, Ӓ ӝמਸ ࢎਊೞח ٘ח ࣻغ ঋইঠ ೠ.” ‣ ӝמਸ ഛೞݶࢲب ӝמਸ ࢎਊೞח ӝઓ٘ח ߸҃غ ঋইঠ ೠ.
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ѐߑ
ತࣧ ਗ (OCP) ‣ ഛغח ࠗ࠙(, ߸ചೞח ࠗ࠙)ਸ ୶࢚ച೧ࢲ ೧Ѿ оמೞ. 1. ੋఠಕझܳ ਊೠ ୶࢚ച ߑߨ 2. ࢚ࣘਸ ਊೠ ࢚ਤ ېझ۽ ୶࢚ച ߑߨ
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ѐߑ
ತࣧ ਗ (OCP) ‣ ইې ҃ ࠗ࠙ OCPܳ ਤ߈ೞҊ ח ૐѢ. 1. நझਸ ೠ. (instanceof ࢎਊ) 2. ࠺तೠ if-else ࠶۾ ৈۤ ઓೠ.
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ѐߑ
ತࣧ ਗ (OCP) ‣ ߸ച৬ ҙ۲ػ ҳഅ(߸ചо ࢚غח ࠗ࠙)ਸ ୶࢚ചೞח Ѫ ೨ब ‣ OCPܳ ా೧ࢲ ߸҃ ਬোೣਸ ઁҕೡ ࣻ
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ܻझ
ജ ਗ (LSP) ‣ “࢚ਤ ఋੑ ёܳ ೞਤ ఋੑ ё۽ ജ೧ب ࢚ਤ ఋੑਸ ࢎਊೞח ۽Ӓ ۔ ࢚ਵ۽ ز೧ঠ ೠ.”
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ܻझ
ജ ਗ (LSP) ‣ OCPח ୶࢚ച(ੋఠಕझ ҳഅ)৬ ഋࢿ(࢚ࣘ)ਸ ా೧ ೧Ѿ ‣ LSPח OCPܳ ߉ח ഋࢿী ҙೠ ਗਸ ઁҕ
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ܻझ
ജ ਗ (LSP) ‣ ইې ҃ ࠗ࠙ LSPܳ ਤ߈ೞҊ ח ૐѢ. 1. ݺदػ ݺࣁীࢲ ߩযդ чਸ ܻఢೠ. 2. ݺदػ ݺࣁীࢲ ߩযդ ৻ܳ ߊࢤೠ. 3. ݺदػ ݺࣁীࢲ ߩযդ ӝמਸ ࣻ೯ೠ.
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ੋఠಕझ
ܻ࠙ ਗ (ISP) ‣ “ੋఠಕझח Ӓ ੋఠಕझܳ ࢎਊೞח ۄܳ ӝળਵ۽ ܻ࠙غযঠ ೠ .” ‣ “ۄח न ࢎਊೞח ݫࣗ٘ী݅ ઓ೧ঠ ೠ.”
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ੋఠಕझ
ܻ࠙ ਗ (ISP) ‣ ࢎਊೞ ঋח ੋఠಕझ ߸҃ী ೧ࢲ ߊࢤೞח ࠛਃೠ ೱ(ࣗझ ஹ ੌ ١)ਸ ݶ ISPܳ ਤ߈ೞҊ ח ૐѢ ‣ ۄ ੑীࢲ ࢎਊೞח ӝמ݅ ઁҕೞب۾ ੋఠಕझܳ ܻ࠙ ‣ ೞա ӝמী ೠ ߸҃ ৈܳ ୭ࣗച೧ળ.
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ઓ
ਗ (DIP) ‣ “Ҋࣻળ ݽٕ ࣻળ ݽٕ ҳഅী ઓ೧ࢲח উػ.” ‣ “ࣻળ ݽٕ Ҋࣻળ ݽٕীࢲ ೠ ୶࢚ ఋੑী ઓ೧ঠ ೠ.”
ёೱ ࣗਝয ѐߊ • ۽ߡ ݃౯ SOLID ਗ - ઓ
ਗ (DIP) ‣ ࣻળ ݽٕ ߸҃غ؊ۄب Ҋࣻળ ݽٕ ߸҃غ ঋইঠ ೠ.
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁ : ݽٕࢿ(modularity), ਬোࢿ(flexibility), ഛࢿ
(extensibility), ਬҙܻࢿ(maintainability) • “ಁఢ(pattern)”ਸ ా೧ ёೱ ۽Ӓې߁ ਸ पഅ - ٘ ױਤ(code level): ீ߭ ~ҳഅ ಁఢ, ۽ߡ ݃౯ ~Clean Code - ېझ ױਤ(class level): GoF ~٣ੋ ಁఢ, ݃౯ ۞ ~ܻಂష݂ - ಁః, ݽٕ ױਤ(package level): ীܼ ী߈झ ~Domain Driven Development, ݃౯ ۞ ~PoEAA
ёೱ ࣗਝয ѐߊ • GoF ٣ੋ ಁఢ - ࣗਝয ҳഅীࢲ
ߊࢤೞח ޙઁী ೠ ೧Ѿ ߑߨਸ ܻ - ёೱ য(C++, झށష)ܳ ӝ߈ਵ۽ ಁఢചػ ߑߨ - ࢤࢿ ಁఢ(Creational Pattern), ҳઑ ಁఢ(Structural Pattern), ೯ز ಁఢ (Behavioral Pattern)
ёೱ ࣗਝয ѐߊ • ীܼ ী߈झ Domain Driven Development -
Ҋё, ࠺ૉפझ, ਃҳࢎ೦ بݫੋਸ ੜѱ ݽ؛݂ೞҊ ҳഅೞӝ ए, ೧ೞӝ ए ҳઑ۽ ࣗਝযܳ ࢸ҅ೞӝ ਤೠ ߑߨ - بݫੋীࢲ ൔ ࢎਊغח ਊযܳ ӝ߈ਵ۽ ೠ Ubiquitous Language ࢎਊ - ೞਤ بݫੋ ೡ/ҙबࢎܳ बਵ۽, ઑਸ ӝળਵ۽ Bounded Context - بݫੋ ݽ؛ Entity, Value Object, Service, Aggregate ١ ਃࣗ۽ അ
Reference https://en.wikipedia.org/wiki/Unified_Modeling_Language http://contents.kocw.or.kr/document/lec/2011/33/04/Ch01.pdf http://byul124.cafe24.com/blog/wp-content/uploads/1/1059072550.pdf http://cjmyun.tripod.com/Knowledgebase/ConceptsOfObjectOriented.htm