คลาส ออบเจ็ค

Download Report

Transcript คลาส ออบเจ็ค

หน่วยที่ 1
แนวคิดของการเขียนโปรแกรมเชงิ วัตถุ
(Object-Oriented Programming
Concepts)
วัตถุประสงค์
ึ ษาเข ้าใจแนวคิดพืน
• เพือ
่ ให ้นั กศก
้ ฐานของการเขียน
โปรแกรมเชงิ วัตถุ
ึ ษาเข ้าใจความสม
ั พันธ์ระหว่างแนวคิด
• เพือ
่ ให ้นั กศก
ต่างๆ ของการเขียนโปรแกรมเชงิ วัตถุ
ึ ษาเข ้าใจประโยชน์ของการเขียน
• เพือ
่ ให ้นั กศก
โปรแกรมตามแนวคิดเชงิ วัตถุ
ึ ษาได ้เรียนรู ้สญ
ั ลักษณ์ทใี่ ชในการเขี
้
• เพือ
่ ให ้นั กศก
ยน
แผนภาพเพือ
่ แสดงการออกแบบโปรแกรมเชงิ วัตถุ
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
2
การเขียนโปรแกรมเชงิ วัตถุ
• Object-Oriented Programming (OOP)
• โปรแกรมเชงิ วัตถุ (Object-Oriented Program) คือ
ั พันธ์กน
โปรแกรมทีป
่ ระกอบด ้วยกลุม
่ ออบเจ็คทีป
่ ฏิสม
ั
• การเขียนโปรแกรมเชงิ วัตถุ คือการเขียนโปรแกรมโดย
การนากลุม
่ ของออบเจ็ค (Object) มาประกอบกันขึน
้
เป็ นโปรแกรม
• ข ้อดี
่ งว่างระหว่างระบบจริงและระบบทีจ
– เข ้าใจง่าย - ลดชอ
่ าลอง
โดยคอมพิวเตอร์
– ง่ายต่อการแก ้ไข - เพราะข ้อมูลและการทางานอยูภ
่ ายในออบ
เจ็ค
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
3
โปรแกรมตามแนวคิดเชงิ วัตถุ
Customer
Mary
Button
Order 563
add new order
Chair 213
add to
order
Customer
Bill
create
Text Box
get text
Order 143
add to
order
Lamp 453
display
Order 721
Label
Chair 654
Customer
Joe
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
Lamp 856
4
ออบเจ็คในชวี ต
ิ จริง สู่ ออบเจ็คในโปรแกรม
ของจริง
บ ้าน
รถยนต์
ทิชา
ั อยูใ่ น
อาศย
แบบจาลอง
ขับ
บ ้าน
รถยนต์
ทิชา
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
5
ความเป็ นมาของการเขียนโปรแกรมเชงิ วัตถุ
• เริม
่ ในยุค ค.ศ.1960s
– ภาษา Simula และจุดเริม
่ ต ้นของแนวคิดในการใช ้
ออบเจ็คเป็ นแนวคิดพืน
้ ฐานในการสร ้างโปรแกรม
จาลองสถานการณ์
• ต ้นยุค ค.ศ.1970s
– เกิดภาษา SmallTalk ซงึ่ เป็ นภาษาเชงิ วัตถุสาหรับใช ้
งานทั่วไปภาษาแรก
่ Ada95,
• จากนั น
้ ก็เกิดภาษาเชงิ วัตถุอก
ี หลายภาษา เชน
Eiffel, OO COBOL, Objective C, C++, Java, C#,
J# และอืน
่ ๆ
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
6
หลักการเชงิ วัตถุ (Object-Oriented Concepts)
•
•
•
•
•
•
ออบเจ็ค (Object)
คลาส (Class)
ั (Encapsulation)
เอ็นแคปซุเลชน
่ นรายละเอียด (Information Hiding)
การซอ
ื ทอดคุณสมบัต ิ (Inheritance)
การสบ
ึ (Polymorphism)
โพลีมอร์ฟิซม
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
7
ออบเจ็ค (Object)
•ออบเจ็ค คือ สงิ่ ทีส
่ ร ้างขึน
้ ในโปรแกรม เพือ
่ จาลองสงิ่
ต่างๆ อยูใ่ นขอบเขตปั ญหา
•ออบเจ็ค ใชจ้ าลองได ้ทัง้ สงิ่ ทีเ่ ป็ น
่ นักศก
ึ ษา, หนังสอ
ื )
– รูปธรรม (เชน
่ เหตุการณ์, การยืมหนังสอ
ื )
– นามธรรม (เชน
•ออบเจ็ค มี
– ข ้อมูล (Data) – บอกสถานะ (State) คือสภาพ
ของออบเจ็ค
– พฤติกรรม (Behaviour) – สงิ่ ทีอ
่ อบเจ็คสามารถ
ทาได ้ เกีย
่ วกับการจัดการข ้อมูลของตัวเอง และ
อืน
่ ๆ ทีเ่ กีย
่ วข ้อง
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
8
คลาส (Class)
• คลาส = แม่แบบ (Template) ของออบเจ็ค
• คลาสกาหนดลักษณะของออบเจ็คทีจ
่ ะถูกสร ้าง
• ออบเจ็ค = อินสแตนซ ์ (Instance)
ิ้ หนึง่ ทีส
• อินสแตนซ ์ หมายถึงของชน
่ ร ้างออกมาตาม
แม่แบบ
• คลาสใชก้ าหนด
้
– กลุม
่ แอททริบวิ (attribute) ซงึ่ ออบเจ็คใชในการ
เก็บข ้อมูล
– กลุม
่ เมธอด (methods) ซงึ่ อิมพลิเมนต์ฟฤติกรรม
ของออบเจ็ค
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
9
คลาส VS ออบเจ็ค
• คลาสกาหนดคุณสมบัตข
ิ องออบเจ็ค
• ออบเจ็คของคลาสเดียวกันมีลักษณะเดียวกัน คือ
– เก็บข ้อมูลแบบเดียวกัน
– ทางานแบบเดียวกัน
• ออบเจ็คจะมีลักษณะเฉพาะของตนเอง
– ค่าของข ้อมูลทีเ่ ก็บจะต่างกันขึน
้ อยูก
่ บ
ั สถานะของออบเจ็ค
แต่ละตัว
– ออบเจ็ค แต่ละตัวจะมีไอเด็นทิต ี้ (identity) ไม่ซ้ากัน
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
10
ตัวอย่าง คลาส และ ออบเจ็ค
มานะ:บุคคล
<บุคคล>
ื่
ชอ
ออบเจ็คของ
อายุ
ื่ = มานะ มีทร ัพย์
ชอ
อายุ = 30 ปี
ั
เบอร์โทรศพท์
= 0891119999
ั
เบอร์โทรศพท์
ยืน()
เดิน()
ยิม
้ ()
OOP 2/2550
มานี:บุคคล
ออบเจ็คของ
ื่ = มานี มีเพือ
ชอ
่ น
อายุ = 15 ปี
ั
เบอร์โทรศพท์
= 0872255665
ดร.สุขสถิต มีสถิตย์
11
ั ลักษณ์แทนคลาสในแผนภาพยูเอ็มแอล
สญ
(UML Diagrams)
ื่ คลาส>
<ชอ
ื่ คลาส>
<ชอ
<แอททริบวิ 1>
แบบย่อ
<แอททริบวิ 2>
:
<แอททริบวิ n>
<เมธอด 1>
<เมธอด 2>
แบบเต็ม
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
:
<เมธอด n>
12
ั ลักษณ์แทนออบเจ็คในแผนภาพยูเอ็มแอล
สญ
ื่ ออบเจ็ค>:< ชอ
ื่ คลาส>
<ชอ
แบบย่อ
ื่ ออบเจ็ ค>:< ชอ
ื่ คลาส>
<ชอ
<แอททริบวิ 1>
<แอททริบวิ 2>
:
<แอททริบวิ n>
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
แบบเต็ม
13
เมสเสจ (Message)
• เมสเสจ คือข ้อมูลทีส
่ ง่ ไปยังคลาสหรือออบเจ็คเพือ
่
สงั่ ให ้ทางาน
ั พันธ์ (Interact) กัน ด ้วยการสง่ เมส
• ออบเจ็คปฏิสม
เสจไปให ้กัน
• เมือ
่ ออบเจ็คได ้รับเมสเสจ จะเรียกเมธอดทีต
่ รงกับใน
เมสเสจขึน
้ มาทางาน
้
• ฉะนัน
้ การสง่ เมสเสจ = การเรียกใชเมธอดของออบ
เจ็คฝ่ ายรับ
• ออบเจ็คฝ่ ายสง่ ต ้องรู ้จักเมธอดทีอ
่ อบเจ็คฝ่ ายรับมี
• ออบเจ็คฝ่ ายรับอาจสง่ ค่าข ้อมูล (Return value)
กลับมา
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
14
เมสเสจ (Message)
• เมสเสจประกอบด ้วย
– ออบเจ็คฝ่ ายรับ
ื่ เมธอดทีเ่ รียก
– ชอ
– อาร์กวิ เมนต์ทเี่ มธอดต ้องการ
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
15
การสง่ เมสเสจ
เมสเสจพร ้อมอาร์กวิ เมนต์ถก
ู
สง่ ไปยังออบเจ็ค SV198
Deposit(250.00)
SV198:BankAccount
ถามยอดเงินในบัญช ี
getCurrentBalance()
SV198:BankAccount
current balance
ยอดเงินของ SV198
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
16
ั (Encapsulation)
เอ็นแคปซุเลชน
• หมายถึง การรวมข ้อมูลและการทางานทีเ่ กีย
่ วข ้องไว ้
ด ้วยกันภายในออบเจ็ค
้
• ทาให ้สามารถใชงานออบเจ็
คได ้โดยไม่ต ้องรู ้
โครงสร ้างภายในของออบเจ็ค
• ทาให ้ง่ายต่อการควบคุมการเข ้าถึงข ้อมูลเพือ
่ ป้ องกัน
ปั ญหา
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
17
่ นรายละเอียด (Information Hiding)
การซอ
่ นรายละเอียด (Information Hiding) หมายถึง
• การซอ
การเปิ ดเผยเฉพาะข ้อมูลทีจ
่ าเป็ นต่อการเรียกใช ้
ออบเจ็คเท่านัน
้ โดยรายละเอียดการทางานภายในของ
ออบเจ็คไว ้
็ ต์ของเมธอดทีต
• เปิ ดเผยลายเซน
่ ้องการให ้ออบเจ็คอืน
่
้ ้
เรียกใชได
่ นการอิมพลิเมนต์ของเมธอดทุกตัวไว ้
• ซอ
• เลือกอนุญาตให ้ออบเจ็คอืน
่ เข ้าถึงแอททริบวิ บางตัวได ้
โดยตรง
ั
• ใชร่้ วมกับเอ็นแคปซุเลชน
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
18
ื ทอดคุณสมบัต ิ (Inheritance)
การสบ
• หมายถึง การทีค
่ ลาสหนึง่ รับเอาคุณสมบัตข
ิ องอีก
คลาสหนึง่ มา และเพิม
่ เติมใหม่คณ
ุ สมบัต ิ
• เป็ นวิธก
ี ารในการออกแบบสงิ่ สองสงิ่ ขึน
้ ไปทีต
่ า่ งกัน
แต่มล
ี ักษณะบางอย่างเหมือนกัน
• ชว่ ยลดเวลาในการเขียนโปรแกรม เนือ
่ งจากทาให ้
้
สามารถนาโค ้ดกลับมาใชใหม่
ได ้ (Code reuse)
• ซุปเปอร์คลาส (Superclass) = คลาสทีถ
่ า่ ยทอด
คุณสมบัตไิ ปให ้คลาสอืน
่
ั คลาส (Subclasses) = คลาสทีส
ื ทอดคุณสมบัต ิ
• ซบ
่ บ
ของคลาสอืน
่ มา
ั คลาส เป็ นชนิดหนึง่ ของ (is-a, a-kind-of)
• ซบ
ซุปเปอร์คลาส
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
19
ื ทอดคุณสมบัต ิ (Inheritance)
การสบ
ื ทอดต่อลงไปได ้หลายลาดับชน
ั้
• คุณสมบัตส
ิ ามารถสบ
ั คลาสสามารถเป็ นซุปเปอร์คลาสของ
เนือ
่ งจาก ซบ
ั ้ การสบ
ื ทอดคุณสมบัต ิ
คลาสอืน
่ ได ้ ทาให ้เกิดลาดับชน
(Inheritance hierarchy)
ยานยนต์
จักรยานยนต์
รถบรรทุก
รถยนต์
รถยนต์สว่ นบุคคล
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
รถยนต์โดยสาร
20
ึ (Polymorphism)
โพลีมอร์ฟิซม
• แปลว่า หลายรูปแบบ
• สาหรับ OOP หมายถึง การทีอ
่ อบเจ็คต่างคลาสกัน
ทางานตอบสนองต่อเมสเสจทีเ่ หมือนกันในรูปแบบ
ทีแ
่ ตกต่างกันอย่างเหมาะสม
้
• ทาให ้สามารถใชงานออบเจ็
คโดยไม่ต ้องทราบ
คลาสของออบเจ็ค
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
21
ข ้อดีของการเขียนโปรแกรมเชงิ วัตถุ
• ความเป็ นธรรมชาติ
– มองโปรแกรมในมุมทีส
่ อดคล ้องกับการมองสภาพรอบตัว
ของมนุษย์
้
• การนากลับมาใชใหม่
(Reuse)
้ ้ดทีม
ั ทาให ้
– สง่ เสริมการใชโค
่ อ
ี ยูแ
่ ล ้ว เอ็นแคปซุเลชน
้
สามารถนาออบเจ็คจากโปรแกรมหนึง่ ไปใชในโปรแกรม
ื
อืน
่ ได ้ การรับถ่ายทอดโค ้ดของคลาสอืน
่ มาผ่านการสบ
ทอดคุณสมบัต ิ
• ความง่ายในการบารุงรักษา (Maintainability)
ั ชว่ ยให ้สะดวกในการหาจุดทีผ
– เอ็นแคปซุเลชน
่ ด
ิ พลาด
่ นรายละเอียดชว่ ยลดผลกระทบ
และเมือ
่ ใชร่้ วมกันการซอ
ึ่ ชว่ ย
ทีจ
่ ะเกิดขึน
้ เมือ
่ มีการแก ้ไขโปรแกรม โพลีมอร์ฟิซม
่ กัน
ชว่ ยลดผลกระทบเชน
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
22
สรุป
• การเขียนโปรแกรมเชงิ วัตถุมองโปรแกรมในเชงิ ของกลุม
่
ออบเจ็คทีเ่ กีย
่ วข ้องในการทางานของโปรแกรม
• แนวคิดเชงิ วัตถุหมายถึงมองปั ญหาในเชงิ ของออบเจ็คที่
เกีย
่ วข ้องกับปั ญหา
• OOP เกีย
่ วข ้องกับ
1. การเรียนรู ้ทีจ
่ ะคิดในเชงิ ของการแปลงวัตถุในชวี ต
ิ จริงเป็ นออบเจ็ค
โปรแกรมในรูปของโค ้ด ตามวัตถุประสงค์ของโปรแกรม
ั ท์) ใหม่ทใี่ ชทั
้ ่วไปในด ้านการเขียน
2. การเรียนรู ้หลักการ (และคาศพ
โปรแกรมเชงิ วัตถุ โดยไม่เกีย
่ วกับภาษาโปรแกรม
้ กการเชงิ วัตถุในการออกแบบโปรแกรม
3. การเรียนรู ้การประยุกต์ใชหลั
4. การเรียนรู ้โครงสร ้างเฉพาะของภาษาทีร่ องรับการเขียนโปรแกรมที่
้ กการเชงิ วัตถุ
ใชหลั
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
23
ทบทวน
1. คลาสและออบเจ็ค
คลาส
ื
– หน ังสอ
– ตัวอย่างออบเจ็ค
ื ชอ
ื่ การวิเคราะห์เชงิ วัตถุ
•หนั งสอ
์ ะอาด
– นางสาวดาวพระศุกร์ วงศส
– คลาส ทีเ่ ป็ นไปได ้
ึ ษา,
•นั กศก
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
ออบเจ็ค
24
ทบทวน
2. ข ้อมูลและพฤติกรรมของคลาสแมว
ข ้อมูล
OOP 2/2550
ั
โอเปอเรชน
ดร.สุขสถิต มีสถิตย์
25
ทบทวน
ื ทอดคุณสมบัต ิ
3. การสบ
ื้
เสอ
OOP 2/2550
ดร.สุขสถิต มีสถิตย์
26
แบบฝึ กห ัดหน่วยที่ 1
1. จงบอกประโยชน์ของการเขียนโปรแกรมเชงิ วัตถุ
2. สถานะของออบเจ็คหมายความว่าอะไร?
3. จงจาแนกสงิ่ ต่อไปนีว้ า่ สงิ่ ใดเป็ นคลาส สงิ่ ใดเป็ นออบเจ็ค
–
สมุด, บ ้านเลขที่ 12/5, ขนม, นายสุภาพ เรียบร ้อย
4. จงหาข ้อมูลและพฤติกรรมทีเ่ ป็ นไปได ้ของออบเจ็คของ
คลาสต่อไปนี้
–
สุนัข, รถยนต์, โซฟา
ั คลาส
5. จงแยกแยะว่าสงิ่ ใดเป็ นซุปเปอร์คลาสและซบ
•
•
•
OOP 2/2550
ต ้นไม ้, ไม ้ดอก
พนักงาน, ผู ้จัดการ
เค ้ก, ขนม
ดร.สุขสถิต มีสถิตย์
27