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
210
웹 어플리케이션 설계와 구현 II - 소프트웨어 설계에 관하여
Manjong Han
July 31, 2018
Tweet
Share
More Decks by Manjong Han
See All by Manjong Han
Git을 이용한 더 나은 버전관리
ibluemind
2
1k
웹 어플리케이션 설계와 구현 III - 소프트웨어 구현에 관하여
ibluemind
1
110
웹 어플리케이션 설계와 구현 I - 요구사항 분석에 관하여
ibluemind
1
300
Xamarin으로 모바일 앱 개발 빠르게 시작하기
ibluemind
1
220
AWS 클라우드 입문하기
ibluemind
2
410
Other Decks in Programming
See All in Programming
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
22
15k
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
310
エンターテイメント業界で利用されるAWS
demuyan
0
200
From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE
ivargrimstad
0
1.2k
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
2
330
サイコロで理解する統計的仮説検定の考え方
tatamiya
1
220
1인 개발자로 행복하게 살기 - GDG 송도 헬로월드 2024
benjaminkim
1
5.6k
Tailwind CSSを本気でカスタマイズする方法
fsubal
9
3.4k
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
630
Elm Form Validation
bkuhlmann
0
510
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
170
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
67
8.6k
Product Roadmaps are Hard
iamctodd
43
9.7k
Thoughts on Productivity
jonyablonski
57
3.8k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Debugging Ruby Performance
tmm1
70
11k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
186
16k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Web Components: a chance to create the future
zenorocha
305
41k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
A designer walks into a library…
pauljervisheath
199
23k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
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