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
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
Search
Manjong Han
July 31, 2018
Programming
1
220
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
Manjong Han
July 31, 2018
Tweet
Share
More Decks by Manjong Han
See All by Manjong Han
Git을 이용한 더 나은 버전관리
ibluemind
2
1.1k
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
ibluemind
1
130
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
310
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
230
AWS 클라우드 입문하기
ibluemind
2
420
Other Decks in Programming
See All in Programming
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
nekko cloudにおけるProxmox VE利用事例
irumaru
3
420
Criando Commits Incríveis no Git
marcelgsantos
2
170
As an Engineers, let's build the CRM system via LINE Official Account 2.0
clonn
1
670
良いユニットテストを書こう
mototakatsu
3
1.4k
Refactor your code - refactor yourself
xosofox
1
250
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
240
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
130
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
talk-with-local-llm-with-web-streams-api
kbaba1001
0
170
テスト自動化失敗から再挑戦しチームにオーナーシップを委譲した話/STAC2024 macho
ma_cho29
1
1.3k
fs2-io を試してたらバグを見つけて直した話
chencmd
0
220
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
Faster Mobile Websites
deanohume
305
30k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Git: the NoSQL Database
bkeepers
PRO
427
64k
KATA
mclloyd
29
14k
Thoughts on Productivity
jonyablonski
67
4.4k
BBQ
matthewcrist
85
9.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Agile that works and the tools we love
rasmusluckow
328
21k
Become a Pro
speakerdeck
PRO
26
5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Transcript
ਢ যܻா࣌ ࢸ҅৬ ҳഅ II - ࣗਝয ࢸ҅ী ҙೞৈ 2018.07.31
@ೠࣁࢎߡࠁউҊ١Ү ٚۑ CTO ೠ݅ઙ
ࣗਝয ѐߊۆ? • ױ҅ ۽ࣁझ - ࣗਝয ޙઁܳ ৈ۞ ױ҅۽
ա־য ೧Ѿೞח ߑध ਃҳࢎ೦ ࠙ࢳ ࢸ҅ ҳഅ పझ ਬࠁࣻ ҅ദ
ਃҳࢎ೦ ࠙ࢳ • ёೱ ࠙ࢳ(Object Oriented Analysis, OOA) - ࢎਊ
ਃҳࢎ೦ਸ ࠙ࢳೞৈ ਃҳػ ޙઁ৬ ҙ۲ػ ݽٚ ېझ(ё), ҙ۲ ࣘࢿ ߂ ো, ё р ҙ҅١ਸ ೞৈ ݽ؛݂ೞח Ѫ - ޙઁ ীࢲ ёա ѐ֛ٜਸ ইࢲ ӝࣿೞחؘ ਸ ك.
ёೱ ࣗਝয ѐߊ • ҳઑ SW ѐߊ ߑߨۿ - ҳઑ
࠙ࢳ(Structured Analysis) - ҳઑ ࢸ҅(Structured Design) - ҳઑ ۽Ӓې߁(Structured Programming) • ёೱ SW ѐߊ ߑߨۿ - ёೱ ࠙ࢳ(Object Oriented Analysis, OOA) - ёೱ ࢸ҅(Object Oriented Design, OOD) - ёೱ ۽Ӓې߁(Object Oriented Programming, OOP)
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ҳઑ ߑߨۿ ޙઁਸ ೧Ѿೞӝ ਤ೧ ੋр അप ࣁ҅ܳ ೧ೞח ߑधਵ۽ द झమਸ ѐߊೞ۰ח ֢۱ਵ۽ ࢤ - “ؘఠ৬ ۽ࣁझܳ ܻ࠙ೞ ঋҊ ё۽ ݽ؛݂”: “ੋр ࢎҊೞח ߑध” - അप ࣁ҅ী ઓೞח ѐ֛ਸ ӝ߈ਵ۽ ೠ ёۄח ة݀ػ ױਤ۽ दझమਸ ҳࢿೞ Ҋ, п ёח ݫदܳ ా೧ ࢚ഐਊ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ё(object) ‣ data + operation on data ‣ instance of class - ېझ(class) ‣ description, abstraction - ݫࣁ(message) ‣ ё р ࢚ഐ ਊ(ݫࣗ٘ ഐ) ࣻױ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ё(object) ‣ അप ࣁ҅ী ઓೞח ѐ֛ա ޛ۽ աఋյ ࣻ ח ױਤ ‣ ؘఠ: ېझ ࣘࢿী ӝח ё ࢚కܳ աఋղח ࠁ ‣ ؘఠী ҙೠ ઑ(ݫࣗ٘): ёо ܻೡ ࣻ ח ӝמ. ё ࢚కܳ ߸҃ <ࣘࢿ>: <ؘఠ> <ݫࣗ٘> ݫद
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ېझ(class) ‣ ёܳ ࢤࢿೡ ࣻ ח ҳઑ, ౣ, మ݁ ‣ ёܳ “ېझ ੋझఢझ(instance)”ۄҊ ܴࠗ ‣ ېझܳ “ё ఋੑ(type)”ۄҊ ܴࠗ ‣ ࢚ਤ ఋੑਵ۽ ୶࢚ചೡ ࣻ ח ࢚
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ݫࣁ(message) ‣ ё р ࢚ഐ ਊೡ ٸ ࢎਊغח ࣻױ ‣ ܲ ёীࢲ ౠ ёܳ ߸҃ೞӝ ਤೠ ਃ नഐ ‣ ࣻन ё ܴ, ࣻ೯ೡ ݫࣗ٘ ܴ, ੋ۽ ҳࢿ ‣ ݫदܳ ࣻन߉ ёח ೧ೞח ݫࣗ٘ܳ ࣻ೯ೞৈ ߈ജ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
୶࢚ച(abstraction) ‣ ࢚ࣁೠ ղਊਸ ऀӝҊ ೨बੋ ࠗ࠙(ౠ)ਸ ъઑೞৈ ݽ؛ച - ङച(encapsulation) ‣ ࠁ ץਸ ా೧ ё р Ѿبܳ хࣗदெ ਬࠁࣻ ਊ, ࢎਊࢿ ૐ - ࢚ࣘࢿ(inheritance) ‣ ೞਤ ఋੑীࢲ ࢚ਤ ఋੑ ӝמਸ ࢎਊೞৈ ഛೡ ࣻ ب۾ ೲਊ - ഋࢿ(polymorphism) ‣ ೞਤ ఋੑীࢲ ࢚ਤ ఋੑ ઁҕೞח ߑߨਸ ా೧ Ҋਬೠ زਸ ࣻ೯ оמ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
୶࢚ച(abstraction) ‣ ё р ҕాػ ࣘࢿա ೯ਤܳ ୶ೞৈ ޘח Ѫ ‣ ਃೞ ঋѢա ҙब ࢚ ইצ ࣁೠ ࠗ࠙ х୶ח Ѫ ‣ झಖҗ ҳഅਸ ܻ࠙ೞӝ ਤೠ ݾਵ۽ ࢎਊ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ङച(encapsulation) ‣ ࢲ۽ ҙ۲ ח ؘఠ৬ ܳ ઑೡ ࣻ ח ݫࣗ٘ܳ ೠ ޘਵ۽ ܻ ‣ Ӕܳ ాೠ ࠁ ץਵ۽ ղࠗ ؘఠܳ ৻ࠗ Ӕਵ۽ࠗఠ ࠁഐ ‣ ё р ࢚ഐਊਸ ݫद݅ਵ۽ оמೞѱ ೣ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
࢚ࣘࢿ(inheritance) ‣ Is-A ҙ҅۽ࢲ ӝઓ ېझ۽ࠗఠ ഛਸ ਊೞѱ ೣ ‣ ӝઓ ېझܳ ࢎਊೡ ࣻ Ҋ, ࠂغח ࠗ࠙ਸ ઁѢೡ ࣻ
ёೱ ࣗਝয ѐߊ • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) -
ഋࢿ(polymorphism) ‣ زੌೠ ܴ ݫࣗ٘о ېझী ٮۄ ܰѱ ؼ ࣻ ‣ Overloading زੌೠ ܴ ݫࣗ٘о ೞਤ ఋੑীࢲ ܲ ࢎনਵ۽ ؼ ࣻ ‣ Overriding زੌೠ ݫࣗ٘о ೞਤ ఋੑীࢲ ܲ زਸ ೞب۾ ೡ ࣻ
ёೱ ࣗਝয ѐߊ • ёೱ ࠙ࢳ(Object Oriented Analysis, OOA) •
ёೱ ࢸ҅(Object Oriented Design, OOD) • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP)
ёೱ ࣗਝয ѐߊ • ёೱ ࠙ࢳ(Object Oriented Analysis, OOA) •
ёೱ ࢸ҅(Object Oriented Design, OOD) • ёೱ ۽Ӓې߁(Object Oriented Programming, OOP) What How
ёೱ ࣗਝয ѐߊ ёೱ ࠙ࢳҗ ࢸ҅(Object Oriented Analysis/Design, OOA/D) “ё(object)
଼ਸ ݺഛ ೞח Ѫ” “ёܳ ೞҊ যڌѱ ࢲ۽ ҙ҅ܳ ݛѱ ೡ Ѫੋо”
ёೱ ࣗਝয ѐߊ • ёೱ ࠙ࢳ(Object Oriented Analysis, OOA) -
ࢎਊ ਃҳࢎ೦ਸ ࠙ࢳೞৈ ਃҳػ ޙઁ৬ ҙ۲ػ ݽٚ ېझ(ё), ҙ۲ ࣘࢿ ߂ ো, ё р ҙ҅١ਸ ೞৈ ݽ؛݂ೞח Ѫ - ޙઁ ীࢲ ёա ѐ֛ٜਸ ইࢲ ӝࣿೞחؘ ਸ ك. (ѐ֛ )
ёೱ ࣗਝয ѐߊ • ёೱ ࢸ҅(Object Oriented Design, OOD) -
ё ѐ֛ਸ ష۽ ߂ ҳചೠ. (଼ ೡ) - п ёٜ р ࢲ۽ যڌѱ ҙ҅ܳ ݛѱ ೡ Ѫੋоܳ Ѿೠ. (message)
ёೱ ࣗਝয ѐߊ بݫੋ ѐ֛(ஶࣆ) بݫੋ दпച(ӝ) ҳഅ Car -
name - color - vendor - owner + openWindow() + lockDoor() + start() class Car { String name; String color; Vendor vendor; Person owner; void openWindow() {} void lockDoor() {} void start() {} }
ёೱ ࣗਝয ѐߊ <ࢎਊࢎ۹ > UseCase যӒ ۔ਸ ా೧ दझమਸ
ࢎਊೞח ৬ दझ మ ӝמਸ ঈ <بݫੋ ݽ؛ > दझమ ࢎਊ ߂ दझమ ӝמ ز ೞӝ ਤ೧ ਃೠ ਃ ٜࣗਸ ё۽ അ <࢚ഐਊ যӒ ۔ > दझమ ࢎਊ о п بݫੋҗ যڃ ࢚ ഐਊਸ ా೧ࢲ ӝמ ਸ ਊೞѱ غח ঈ <ࢸ҅ ېझ > दझమ ࢎਊ о दझమ ӝמਸ ࢎਊ ೞӝ ਤ೧ ਃೠ ਃ ٜࣗ݅ ё۽ അ
ёೱ ࣗਝয ѐߊ • UML(Unified Modeling Language) - Rumbaugh OMT,
Booch OOD, Jacobson OOSE ١ নೠ ёೱ ࠙ࢳ ߑߨۿ ઓ೮Ҋ, ܳ ాೞӝ ਤ೧ UML ١ - ёೱ ࠙ࢳ ߂ ࢸ҅ܳ ਤೠ ળചػ ёೱ ݽ؛݂ য - ୨ 14о যӒ۔ ઙܨ ઓ (ҳઑ যӒ۔ 7ѐ, ೯ز যӒ۔ 7ѐ)
ёೱ ࣗਝয ѐߊ • ࢎਤ ѱ ઁ - ف ࢎۈ
҃ӝח 2ѐ ࢎਤܳ ҷ۰ ف ࣻܳ ب۾ ਃೠ. - दझమ ف ࢎۈ Ѿҗܳ ࠺Үೞৈ, ӏਵ۽ थಁܳ Ѿೞৈ ۱ೠ. ‣ ف ࣻо эਵݴ, ֫ ंੌ ҃ थܻ ‣ ف ࣻ ؊ ҃ थܻ
ёೱ ࣗਝয ѐߊ • ࢎਤ ѱ ઁ - 1. ࢎਊ
ࢎ۹ ࢎਤܳ ؍ بೠ ҃ӝ
ёೱ ࣗਝয ѐߊ • ࢎਤ ѱ ઁ - 2. بݫੋ
ݽ؛ Player Die - name - faceValue Game 2 2 Rolls Plays 2 1 Includes 2 1
ёೱ ࣗਝয ѐߊ • ࢎਤ ѱ ઁ - 3. ࢚ഐਊ
যӒ۔ : Game d1: Die d2: Die ҃ӝ play() roll() getFaceValue() roll() getFaceValue()
ёೱ ࣗਝয ѐߊ • ࢎਤ ѱ ઁ - 4. ࢸ҅
ېझ 2 1 Die - faceValue : int + roll() + getFaceValue(): int Game - die1: Die - die2: Die + play()
ࢸ҅ • ୶࢚ച (abstraction) - ࣁࠗੋ ҳഅ х୶Ҋ, بܳ աఋղח
ӝמਸ ֢ೠ. - ೨ब/ҕాੋ ࠗ࠙ਸ ࢚ਤ ఋੑ(ېझ/ੋఠಕझ)ਵ۽ ݽਵח Ѫ - ࢚ਤ ఋੑਸ ా೧ ب(ӝמ)ܳ աఋյ ࣻ Ҋ, ܳ ৻ࠗ ݽٕীࢲ ࢎਊ оמ
ࢸ҅ • ֫ ب, ծ Ѿب (high cohension, low coupling)
- ب: ೞա ݽٕ(ېझ) न ӝמ(଼)ਸ ৡೞѱ ೞח ب - Ѿب: ৈ۞ ݽٕ(ېझ) рী ଵઑೞҊ ח ҙ҅(ઓࢿ)о ъೠ ب - بо ֫ইঠ ࢎਊࢿ ֫ইҊ, Ѿبо ծইঠ ਬࠁࣻо ਊ೧.
ࢸ҅ • ইఃఫ(architecture) ࢸ҅ - Multitier ইఃఫ (N-tier ইఃఫ, Multilayered
ইఃఫ) - MVC (Model-View-Controller) ٣ੋ ಁఢ - بݫੋ ب ѐߊ (Domain Driven Development) - Representational state transfer (REST)
ࢸ҅ • ؘఠ߬झ(database) ࢸ҅ - ҙ҅ഋ DBMS (Relational Database Management
System) - ERD (Entity-Relationship Diagram) - ؘఠ߬झ ӏച (Database Normalization) - ؘఠ߬झ ࠙ೡ (Database Partitioning)
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