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
120
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
Manjong Han
August 01, 2018
Tweet
Share
More Decks by Manjong Han
See All by Manjong Han
Git을 이용한 더 나은 버전관리
ibluemind
2
1.1k
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
ibluemind
1
210
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
300
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
230
AWS 클라우드 입문하기
ibluemind
2
420
Other Decks in Programming
See All in Programming
大規模マルチテナントを解決するYugabyteDBという選択肢
nnaka2992
1
250
Product Management LT会_クアンド新家
shinshin
0
260
SDCon2024: Enabling DevOps and Team Topologies thru architecture: architecting for fast flow
cer
PRO
0
780
はしめてのプログラミングとロボット制御
watawatavoltage
0
290
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
190
Prompt FlowによるLLMアプリケーション開発
yuto2000
1
1k
DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話【デブサミ2024夏】
texmeijin
1
620
SRE チーム立ち上げ前に考えたこと・取り組んだこと / Considerations and Preparations Before Establishing an SRE Team
mackey0225
3
320
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
「2024年版 Kotlin サーバーサイドプログラミング実践開発」の補講 〜O/Rマッパー編〜
n_takehata
2
260
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
OpenAI/Gemini APIを使って EPUBを翻訳するCLIツールをつくってみた
tomiyan
0
790
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
325
20k
Faster Mobile Websites
deanohume
303
30k
Principles of Awesome APIs and How to Build Them.
keavy
124
16k
Atom: Resistance is Futile
akmur
261
25k
Designing the Hi-DPI Web
ddemaree
276
34k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
224
21k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
20
7.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
26
1.6k
Bash Introduction
62gerente
607
210k
Fireside Chat
paigeccino
25
2.8k
Leading Effective Engineering Teams 2024
addyosmani
3
300
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