ਢ যܻா࣌ ࢸ҅৬ ҳഅ II- ࣗਝয ࢸ҅ী ҙೞৈ2018.07.31 @ೠࣁࢎߡࠁউҊ١Үٚۑ CTO ೠ݅ઙ
View Slide
ࣗਝয ѐߊۆ?• ױ҅ ۽ࣁझ- ࣗਝয ޙઁܳ ৈ۞ ױ҅۽ ա־য ೧Ѿೞח ߑधਃҳࢎ೦ ࠙ࢳࢸ҅ҳഅపझਬࠁࣻ҅ദ
ਃҳࢎ೦ ࠙ࢳ• ёೱ ࠙ࢳ(Object Oriented Analysis, OOA)- ࢎਊ ਃҳࢎ೦ਸ ࠙ࢳೞৈ ਃҳػ ޙઁ৬ ҙ۲ػ ݽٚ ېझ(ё), ҙ۲ ࣘࢿ߂ ো, ё р ҙ҅١ਸ ೞৈ ݽ؛݂ೞח Ѫ- ޙઁ ীࢲ ёա ѐ֛ٜਸ ইࢲ ӝࣿೞחؘ ਸ ك.
ёೱ ࣗਝয ѐߊ• ҳઑ SW ѐߊ ߑߨۿ- ҳઑ ࠙ࢳ(Structured Analysis)- ҳઑ ࢸ҅(Structured Design)- ҳઑ ۽Ӓې߁(StructuredProgramming)• ёೱ SW ѐߊ ߑߨۿ- ёೱ ࠙ࢳ(Object OrientedAnalysis, OOA)- ёೱ ࢸ҅(Object OrientedDesign, OOD)- ёೱ ۽Ӓې߁(ObjectOriented 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)WhatHow
ёೱ ࣗਝয ѐߊёೱ ࠙ࢳҗ ࢸ҅(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 - faceValueGame2 2RollsPlays21Includes21
ёೱ ࣗਝয ѐߊ• ࢎਤ ѱ ઁ- 3. ࢚ഐਊ যӒ۔ : Game d1: Die d2: Die҃ӝplay()roll()getFaceValue()roll()getFaceValue()
ёೱ ࣗਝয ѐߊ• ࢎਤ ѱ ઁ- 4. ࢸ҅ ېझ 21Die- faceValue : int+ roll()+ getFaceValue(): intGame- 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)
Referencehttps://en.wikipedia.org/wiki/Unified_Modeling_Languagehttp://contents.kocw.or.kr/document/lec/2011/33/04/Ch01.pdfhttp://byul124.cafe24.com/blog/wp-content/uploads/1/1059072550.pdfhttp://cjmyun.tripod.com/Knowledgebase/ConceptsOfObjectOriented.htm