พื้นฐานการวิเคราะห์และออ

Download Report

Transcript พื้นฐานการวิเคราะห์และออ

พื้ นฐานการวิเคราะห์และออกแบบระบบเชิงวัตถุ
ด้วย UML
ดร. อดิศร ณ อุบล
แนวคิดเชิงวัตถุ(Object Oriented)
• แนวคิดเชิงวัตถุ(Object Oriented) หมายถึง การใช้ Object
เป็ นตัวหลักในการพิจารณาความเป็ นจริงต่างๆที่เกิดขึ้นในโลก
โดยมองทุกสิ่งในโลกเป็ นวัตถุท้งั หมด และมองว่ากิจกรรมที่
เกิดขึ้นในโลกนี้เกิดจากความสัมพันธ์และปฏิสมั พันธ์ระหว่าง
วัตถุ
ตารางเปรียบเทียบการวิเคราะห์และออกแบบระบบวิธเี ดิมกับวิธเี ชิงวัตถุ
วิธีเดิม
เริ่ มต้นจากการวิเคราะห์เอกสาร
ผลลัพธ์ และการทางานของ
ระบบงานเดิม
แตกการทางานออกเป็ นหน่วย
ย่อยๆ
องค์ประกอบต่างๆของระบบ เช่น
การประมวลผล การออกรายงาน
การคานวณ จะเกี่ยวพันกัน การ
เปลี่ยนแปลงจะกระทบซึ่ งกันและ
กัน
การปรับเปลี่ยนระบบต้องแก้ไข
วิธีเชิงวัตถุ
เริ่ มต้นการวิเคราะห์จาก Objects ที่
สามารถเห็นได้ชดั เจน
แบ่งกลุ่มของ Object ตาม
คุณลักษณะ
แต่ละ Object เป็ นอิสระต่อกัน การ
เปลี่ยนแปลงจะไม่กระทบกัน
การปรับเปลี่ยนระบบ ทาได้โดย
วัตถุ (Objects)
• วัตถุ (Object) คือหน่วยสนใจของระบบที่ทาให้ เกิดเหตุการณ์
วัตถุเป็ นได้ ท้งั สิ่งที่สามารถจับต้ องได้ (เช่น โต๊ะ รถยนต์
คอมพิวเตอร์ คน) และวัตถุท่ไี ม่สามารถจับต้ องได้ (เช่น
บริษัท ฝ่ ายต่างๆ หลักสูตร)
• การสื่อสารระหว่าง Object เรียกว่า Message
คลาส (Class)
• Class คือกลุ่มของ Object ที่มีโครงสร้ างพื้นฐานพฤติกรรมเดียวกัน
Object ที่มีคุณสมบัติเดียวกัน ก็จะรวมกลุ่มอยู่ใน Class เดียวกัน
• Class และ Object มีความคล้ ายกันมากจนทาให้ หลายคนสงสัยว่าเป็ น
สิ่งเดียวกันหรือไม่ ในความเป็ นจริง Class ถือว่าเป็ น นามธรรม
(Abstract) ในขณะที่ Object นั้นเป็ นสิ่งที่มีตัวตน (Concrete) กล่าวคือ
Class เป็ นเหมือนพิมพ์เขียวของ Object โดยที่ Class จะไม่สามารถ
ทางานได้ แต่ Object สามารถทางานได้
• การทางานของ Object จะเป็ นไปตามคุณสมบัติท่กี าหนดไว้ ใน Class
และ Object ทุกตัวก็ต้องอยู่ใน Class ดังนั้น Class และ Object จึงเป็ น
สิ่งคู่กนั เสมอ
ที่มา: การวิเคราะห์และออกแบบระบบ, โอภาส เอี่มสิริวงศ์ 2548
คลาส (Class)
• Class นอกจากจะมีช่ ือ Class กากับแล้ ว
ยังมี คุณสมบัติ (Attributes) และ หน้ าที่
การทางาน (Operations หรือ Methods)
Name
Attributes
Methods
Student
StudentID
FirstName
LastName
Address
Telephone
Birthdate
Faculty
GPA
Register()
Drop()
Withdraw()
ตัวอย่าง Class Student
การสืบทอดคุณสมบัติ (Inheritance)
• การสืบทอดคุณสมบัติ (Inheritance) คือ การที่ Subclass ได้ รับการ
ถ่ายทอดคุณสมบัติ (Attributes) มาจาก Superclass แล้ วผนวก
คุณสมบัติพิเศษเพิ่มเข้ าไป
-
Multiple Inheritance
• สัญญลักษณ์ท่ใี ช้ คือ ลูกศรหัวรูปสามเหลี่ยมใส ชี้จาก Subclass ไปยัง
Superclass
การสืบทอดคุณสมบัติ (Inheritance)
Transaction
Sales Transaction
Rental Transaction
TransactionNumber
EmployeeNumber
TransactionDate
TransactionTime
BarcodeNumber
Price
SalesTax
QuantitySold
TransactionNumber
EmployeeNumber
TransactionDate
TransactionTime
BarcodeNumber
Price
SalesTax
MemberNumber
Without Inheritance
TransactionNumber
EmployeeNumber
TransactionDate
TransactionTime
BarcodeNumber
Price
SalesTax
Sales Transaction
Rental Transaction
----inherited---TransactionNumber
EmployeeNumber
TransactionDate
TransactionTime
BarcodeNumber
Price
SalesTax
----local---QuantitySold
----inherited---TransactionNumber
EmployeeNumber
TransactionDate
TransactionTime
BarcodeNumber
Price
SalesTax
----local---MemberNumber
With Inheritance
การสืบทอดคุณสมบัติ (Inheritance)
• หลักของการสืบทอดคุณสมบัติจะทาให้ ความสัมพันธ์ระหว่าง
Object มีความชัดเจนยิ่งขึ้น กล่าวคือถ้ ามีความสัมพันธ์ท่ี
ชัดเจนมากขึ้นเท่าใด จะส่งผลให้ การออกแบบระบบงานง่ายขึ้น
• ผู้ออกแบบระบบงานเชิงวัตถุสามารถออกแบบระบบงานขนาด
ใหญ่ได้ โดยการอาศัย Object ที่มีการนิยามไว้ ก่อนหรือที่มีผ้ ูอ่นื
ทาการออกแบบไว้ ก่อนแล้ ว ซึ่งเป็ นที่มาของการนากลับมาใช้
ใหม่ (Reusability)
ที่มา: การวิเคราะห์และออกแบบระบบ, โอภาส เอี่มสิริวงศ์ 2548
ข้ อดีของการสืบทอดคุณสมบัติ
•
การสืบทอดคุณสมบัติมีข้อดี คือ
1. ทาให้ มีโครงสร้ างที่เป็ นระบบ สามารถปรับเปลี่ยนได้ ง่าย
2. ลดเวลาในการพัฒนาระบบ
3. ลดค่าใช้ จ่ายในการพัฒนาระบบ
ที่มา: การวิเคราะห์และออกแบบระบบ, โอภาส เอี่มสิริวงศ์ 2548
Polymorphism
• Polymorphism คือ การที่ Object ที่ต่างกันมีปฏิกริ ิยาตอบสนองต่อ
Function/ Message หนึ่งๆในวิธที ่ตี ่างกัน
• Class รูปสี่เหลี่ยม กับ Class รูปสามเหลี่ยม ได้ รับการสืบทอด
คุณสมบัตจิ าก Class รูปหลายเหลี่ยม โดยทั้งคู่มี Function ที่ช่ือ
draw() เหมือนกัน แต่เมื่อมีการเรียกใช้ function ดังกล่าว Object ที่
สร้ างจาก Class รูปสี่เหลี่ยมจะมีการวาดรูปสี่เหลี่ยม ขณะที่ Object ที่
สร้ างจาก Class รูปสามเหลี่ยมจะมีการวาดรูปสามเหลี่ยม
Polymorphism
• หลักการ Polymorphism ช่วยให้
สามารถนา code กลับมาใช้ ใหม่
ได้ เนื่องจากสามารถกาหนด
ชุดคาสั่งทั่วไป และมอบหน้ าที่
รายละเอียดของการนาไปใช้ แก่
Object ที่เกี่ยวข้ องจัดการ
draw()
draw()
draw()
Polymorphism
:HourlyPaidEmployee
2a:=calculatePay()
:PaySlip
1:=getTotalPay()
:WeeklyPaidEmployee
2b:=calculatePay()
:MonthlyPaidEmployee
2c:=calculatePay()
Encapsulation และ Information Hiding
• การซ่อนรายละเอียดเป็ นพื้นฐานของการปกปิ ดข้ อมูลภายในและวิธกี าร
ทางานของ Object
• ตามแนวคิดเชิงวัตถุ การจะล่วงรู้รายละเอียดข้ อมูลของ Object จะต้ องได้ รับ
อนุญาตจากเจ้ าของ Object นั้นก่อน กล่าวคือการเข้ าถึงข้ อมูลนั้น จะไม่
สามารถเข้ าถึงได้ โดยตรง แต่จะต้ องมีการตอบรับจาก Method ใน Object
ปลายทางนั้นว่าจะยอมให้ Object ที่ส่ง Message เข้ าถึงข้ อมูลของตนหรือไม่
• Encapsulation หมายถึง ลักษณะการเขียนโปรแกรมที่จะมีการซ่อนข้ อมูลที่
ต้ องการควบคุมความถูกต้ องของข้ อมูลไว้ (Information Hiding) และ
บังคับให้ Object อื่นเข้ าถึงข้ อมูลที่ซ่อนไว้ ผ่านทาง Interface ที่เตรียมไว้ ทา
ให้ สามารถควบคุมความถูกต้ องของข้ อมูลได้
Encapsulation และ Information Hiding
• กลไกการปกป้ องกันข้ อมูลและวิธกี ารทางานของ Object สามารถ
เป็ น
– Public (+) ซึ่งสามารถเข้ าถึงได้ โดยตรงจากภายนอก
– Private (#) ซึ่งจะถูกใช้ งานจากภายใน Class เท่านั้น
– Protected (-) ซึ่งจะสามารถเห็นหรือเข้ าถึงได้ จากภายใน Subclass
เท่านั้น
ความสัมพันธ์ระหว่าง Object
• ความสัมพันธ์ระหว่าง Object ประกอบด้ วย
1. Association
2. Aggregation
3. Composition
4. Generalization
Association
• เป็ นความสัมพันธ์ระหว่าง Object หรือ Class แบบ 2 ทิศทาง
work for
0..*
Employee
Company
1..*
hire
own
Person
0..*
Car
1..*
is owned by
Aggregation
• เป็ นความสัมพันธ์ระหว่าง Object หรือ Class แบบ “Whole-Part”
หรือ “is part of” โดยจะมี Class ที่ใหญ่ท่สี ดุ ที่เป็ น Object หลัก และมี
Class อื่นเป็ นส่วนประกอบ
Car
Engine
Body
Whole
Wheel
Part
Composition
• เป็ นความสัมพันธ์ระหว่าง Object
หรือ Class แบบขึ้นต่อกันและมี
ความเกี่ยวข้ องกันเสมอ โดยจะมี
Class ซึ่งเป็ นองค์ประกอบของ
Class อื่นที่ใหญ่กว่า
• เมื่อ Class ที่ใหญ่กว่าถูกทาลาย
Class ที่เป็ นองค์ประกอบก็จะถูก
ทาลายไปด้ วย
Text
Windows
Button
Menu
Generalization
Person
• เป็ นความสัมพันธ์ระหว่าง
Object หรือ Class ในลักษณะ
ของการสืบทอดคุณสมบัติจาก
Class หนึ่ง (Superclass) ไปยัง
อีก Class หนึ่ง (Subclass)
Lastname
Firstname
Birthdate
Gender
Walk()
Jump()
Talk()
Sleep()
Eat()
Student
Department
Year
GPA
Enroll()
Study()
Exam()
Graduate()
Teacher
Position
Expertise
Lecture()
Comment()
แบบฝึ กหัด
จงยกตัวอย่างความสัมพันธ์ระหว่าง Object ประเภทต่างๆ
1. Association
2. Aggregation
3. Composition
4. Generalization
Unified Modeling Language (UML)
• UML เป็ นภาษารูปภาพมาตรฐาน (Standard Modeling
Language) สาหรับใช้ ในการสร้ างโมเดลเชิงวัตถุ
• UML เป็ นเสมือนพิมพ์เขียวที่แสดงภาพรวมของระบบทั้งหมด โดย
จะแสดงในรูปแบบของแผนภาพ (Diagram) เพื่อให้ เกิดความ
เข้ าใจที่ตรงกันระหว่างผู้ออกแบบระบบ, โปรแกรมเมอร์และ
ผู้ใช้ งาน
ความเป็ นมาของ UML
• UML ถูกคิดค้ นที่บริษัท Rational Software ในปี 1994-1995
โดย Grady Booch, James Rumbaugh และ Ivar Jacobson
• ในปี 1997 UML version 1.1 ได้ ถูกเสนอเป็ นมาตรฐานกับ OMG
(Object Management Group) ซึ่งได้ ถูกกาหนดให้ เป็ นภาษาโมเดล
มาตรฐาน จากนั้น UML ได้ ถูกพัฒนาจนถึง version 1.4 (ปี
2001) และ 2.0 (ปี 2002)
UML Diagrams
• Structure Diagrams
– Class
– Object
– Package
– Deployment
– Component
– Composite Structure
• Behavior Diagrams
– Activity
– Sequence
– Collaboration
– Interaction Overview
Timing
– Behavioral State Machine
– Proxy State Machine
– Use Case
Use Case Diagram
Use Case Diagram เป็ นแผนภาพที่ใช้ ท่แี สดงปฏิสมั พันธ์
ระหว่างระบบงานและสิ่งที่อยู่นอกระบบงาน Use Case Diagram
ประกอบด้ วย
•
–
–
–
Actor คือ ผู้ท่กี ระทากับระบบ อาจเป็ นผู้ท่ที าการส่งข้ อมูล, รับ
ข้ อมูล หรือ แลกเปลี่ยนข้ อมูลกับระบบนั้นๆ เช่น ลูกค้ ากับระบบ
สั่งซื้อสินค้ าทางโทรศัพท์
Use Case คือ หน้ าที่หรืองานต่างๆในระบบ เช่น การเช็คสต็อค
การสั่งซื้อสินค้ า เป็ นต้ น
Relationship คือ ความสัมพันธ์ระหว่าง Use Case กับ Actor
Use Case Diagram
ATM Subsystem: Withdrawal
Enter Password
Check Balance
Card Holder
Withdraw Cash
Get Slip
ตัวอย่าง Use Case การถอนเงิน
Use Case Diagram
Telephone Ordering System
Check Status
Salesperson
Place Order
Customer
Fill Order
Clerk
Establish
Credit
Manager
ตัวอย่าง Use Case การสั่งซื้อสินค้ าทางโทรศัพท์
Activity Diagram
• Activity Diagram เป็ นแผนภาพที่ใช้ ท่แี สดงขั้นตอนการทางาน
ของ use case (เช่นเดียวกับ Sequence Diagram และ
Collaboration Diagram) แต่จะเน้ นไปที่งานย่อยของวัตถุ โดยจะมี
กระบวนการทางานคล้ ายกับ Flowchart
• Activity Diagram บางครั้งมีลักษณะคล้ าย Swimlane โดยจะ
แบ่งกลุ่มกิจกรรมที่เกิดขึ้นเป็ นช่อง โดยกากับแต่ละช่องด้ วยชื่อของ
Object แต่ละ Swimlane แสดงถึงกิจกรรมที่เกิดขึ้นกับ Object
นั้นๆ
CardHolder
ATM Machine
InsertCard
Request Password
Enter Password
Check Password
Account
Activity Diagram
Confirm Access
Display Transaction Type
ตัวอย่าง Activity Diagram การ
สอบถามยอดบัญชีจากตู้ ATM
Choose Transaction Type
Read A/C Balance
Display Balance
Close Transaction
Return Card
Confirm Balance
Class Diagram
• Class Diagram คือ แผนภาพที่ใช้ แสดง Class และ ความสัมพันธ์
ระหว่าง Class ของระบบที่สนใจ (Problem Domain) เช่น ในระบบ
จัดซื้อ Class ที่เกี่ยวข้ องคือ ผู้ผลิต, พนักงานจัดซื้อ, ใบสั่งซื้อ, ใบ
เสนอราคา, ใบเสร็จรับเงิน เป็ นต้ น
Class Diagram
• สัญญลักษณ์ Class ประกอบด้ วย
1. Class Name คือ ชื่อของ Class
2. Attributes คือ คุณลักษณะของ Class
3. Operations หรือ Methods คือ กิจกรรมที่สามารถกระทากับ
Object นั้นๆได้
Name
Attributes
Methods
Class Diagram
Customer
FirstName
LastName
CardName
PinNumber
Account
Account
1
VerifyPassword()
Number
Balance
Transaction
Has
*
Deposit()
Withdraw()
UpdateAccount()
1
Perform
*
ตัวอย่าง Class Diagram ในระบบธนาคาร
Transaction
TransactionID
TransactionDate
TransactionTime
TransactionType
Account
Amount
PostBalance
Sequence Diagram
• Sequence Diagram เป็ นแผนภาพที่ใช้ อธิบายการทางานของ Use
Case เพื่อแสดงถึงขั้นตอนการทางานและลาดับของการสื่อสาร
(Message) ระหว่าง Object ที่ตอบโต้ กนั
• Sequence Diagram จะแสดงอยู่ในรูปแบบ 2 มิติ โดยเส้ นประ
แนวตั้ง (Lifeline) จะนาเสนอในด้ านเวลา ส่วนเส้ นแนวนอน
(Message) จะนาเสนอเกี่ยวกับการโต้ ตอบกันระหว่าง Object หรือ
Class ต่างๆ
Sequence Diagram
ATM Machine
Account
Card Holder
InsertCard()
RequestPassword()
EnterPassword()
CheckPassword()
ConfirmAccess()
DisplayTransType()
ChooseTransType()
ReadAccBalance()
ConfirmBalance()
DisplayBalance()
CloseTrans()
ReturnCard()
ตัวอย่าง Sequence Diagram การสอบถามยอดบัญชีจากตู้ ATM
Collaboration Diagram
• Collaboration Diagram เป็ นแผนภาพชนิดเดียวกับ Sequence
Diagram โดย Sequence Diagram จะเป็ นแผนภาพที่แสดงถึงการ
สื่อสาร แต่ Collaboration Diagram จะนาเสนอการทางานร่วมกัน
ระหว่าง Object เป็ นหลัก แต่กส็ ามารถแสดงถึงลาดับก่อนหลังด้ วย
Collaboration Diagram
1. InsertCard
3. EnterPassword
7. ChooseTransType
11.CloseTrans
Card Holder
2. RequestPassword
6. DisplayTranstype
10. DisplayBalance
12. ReturnCard
ATM Machine
4. CheckPassword
8. ReadAccBalance
5. ConfirmAccess
9. ConfirmBalance
Account
ตัวอย่าง Collaboration Diagram การสอบถามยอดบัญชีจากตู้ ATM
Statechart Diagram
• Sequence Diagram เป็ นแผนภาพที่ใช้ แสดงสถานะต่างๆและการเปลี่ยน
สถานะของ Class ตั้งแต่เริ่มต้ นจนสิ้นสุด
Ready
Do/waiting
for instructions
Booting Complete
Boot
Do/loading the OS
Switch on Complete
Off
Do/Shut down
the power
Switch is turned on
On
Do/turn on
the Computer
ตัวอย่าง Statechart Diagram การเปิ ดเครื่องคอมพิวเตอร์
Component Diagram
• Component Diagram เป็ นแผนภาพที่แสดงโครงสร้ างและ
ความสัมพันธ์ระหว่างองค์ประกอบ (Components) ต่างๆของ
Software ซึ่งองค์ประกอบดังกล่าวอาจเป็ น Source Code,
Executable Program, Binary รวมถึง Text และ User Interface
Component Diagram
Professor.exe
Course.dll
Professor Info
Database.dll
AddCourse Offering
ตัวอย่าง Component Diagram ของระบบการลงทะเบียน
Deployment Diagram
• Deployment Diagram เป็ นแผนภาพที่แสดงสถาปัตยกรรมของ Hardware
และ Software ในระบบรวมทั้งความสัมพันธ์ระหว่าง
<<Client Workstation>>
Receptionist PC
<<LAN>>
<<Server>>
Office Server
<<LAN>>
Receptionist PC
Office Server
แบบฝึ กหัด
จงสร้ าง Use Case Diagram ของระบบห้ องสมุดในมหาวิทยาลัยแห่งหนึ่ง ซึ่งผู้เข้ าใช้
บริการได้ แก่ นักศึกษา อาจารย์ และพนักงานของมหาวิทยาลัย
ในกระบวนการทางาน เจ้ าหน้ าที่ห้องสมุดจะทาหน้ าที่ให้ บริการยืม/คืนหนังสือของแก่
บุคคลดังกล่าว นอกจากนี้ยังจะต้ องจัดการกับทรัพยากรในห้ องสมุด เช่น การเพิ่ม,
แก้ ไข, ลบข้ อมูลหนังสือและวารสาร รวมทั้งข้ อมูลเกี่ยวกับสมาชิกของห้ องสมุดอีก
ด้ วย
ทุกเดือน เจ้ าหน้ าที่ห้องสมุดจะต้ องทารายงานต่างๆ ส่งให้ กบั ผู้อานวยการศูนย์
สารสนเทศ เช่น รายงานจานวนสมาชิก, รายงานจานวนหนังสือและวารสารใหม่,
รายงานการยืม/คืนหนังสือ, รายงานค่าปรับล่าช้ า เป็ นต้ น