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
240
웹 어플리케이션 설계와 구현 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
140
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
320
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
250
AWS 클라우드 입문하기
ibluemind
2
430
Other Decks in Programming
See All in Programming
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
240
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
120
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
100
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
200
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
110
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
260
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
1k
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
20
3.7k
Is Xcode slowly dying out in 2025?
uetyo
1
210
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
A better future with KSS
kneath
239
17k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Building an army of robots
kneath
306
45k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Site-Speed That Sticks
csswizardry
10
660
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
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