Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Manjong Han
July 31, 2018
Programming
270
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
Manjong Han
July 31, 2018
More Decks by Manjong Han
See All by Manjong Han
Git을 이용한 더 나은 버전관리
ibluemind
2
1.2k
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
ibluemind
1
160
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
350
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
270
AWS 클라우드 입문하기
ibluemind
2
450
Other Decks in Programming
See All in Programming
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Workers Cache を知る
syumai
0
370
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
3
440
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
220
気持ちぃ〜角丸 Squircle
ryu1013
0
320
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
AmebaブログはKMPから卒業します
kmars0605
0
200
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
The Curse of the Amulet
leimatthew05
3
16k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
The Cost Of JavaScript in 2023
addyosmani
55
10k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
BBQ
matthewcrist
90
10k
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