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
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
Manjong Han
August 01, 2018
More Decks by Manjong Han
See All by Manjong Han
Git을 이용한 더 나은 버전관리
ibluemind
2
1.2k
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
ibluemind
1
270
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
350
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
270
AWS 클라우드 입문하기
ibluemind
2
450
Other Decks in Programming
See All in Programming
初めての模倣学習とVLA
natsutan
0
380
高専キャリア LT 発表内容
crysta1221
6
5.3k
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
770
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
MySQLとPostgreSQLって何が違うの?
akagami
0
150
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
280
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
不幸な GC
chencmd
0
840
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
110
Go 1.27 における memory allocation の高速化
andpad
0
360
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
420
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
580
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
520
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Facilitating Awesome Meetings
lara
57
7.1k
Agile that works and the tools we love
rasmusluckow
331
22k
Music & Morning Musume
bryan
47
7.3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
510
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
A Tale of Four Properties
chriscoyier
163
24k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
850
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
First, design no harm
axbom
PRO
2
1.3k
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