Contenu connexe
Plus de TaiMe Sakdisri (20)
4563456
- 1. หนวยที่ 9
โพลีมอรฟซึม
(Polymorphism)
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 1
- 3. โพลีมอรฟซึม (Polymorphism)
หรือการพองรูป
หมายความวา พฤติกรรมเดียวกันสามารถแสดงออก
ตางกันไดหลายรูปแบบ ขึ้นอยูกับชนิดของอ็อบเจกต
เปนการที่ออบเจกตตางคลาสกันสามารถรับเมสเสจ
็
เดียวกันได แตทํางานตอบสนองแตกตางกันไปตามวิธี
ของตัวเอง
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 3
- 4. ประโยชนของโพลีมอรฟซึม
ชวยใหสามารถเขียนโคดที่งายตอการแกไขและ
ขยาย
เพราะชวยลดผลกระทบทีเกิดขึนกับโคดเดิม เมือมี
่ ้ ่
การเพิ่มคลาส
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 4
- 5. การใชโพลีมอรฟซึม
โพลีมอรฟซม ทําใหตวแปรตัวเดียวอางถึงอ็อบเจกต
ึ ั
ของหลายคลาส ที่มเมธอดเหมือนกันได
ี
ทําใหคําสั่งเดียวสามารถเรียกใชเมธอดของคลาสที่
ตางกันได
โดยเมธอดใดจะถูกเรียกใหทางาน ขึ้นอยูกับวา
ํ
อ็อบเจกตที่รับเมสเสจเปนอ็อบเจกตของคลาสใด
เทคนิคทีใชในการทําโพลีมอรฟซึมสําหรับจาวา คือ
่
เลทบายดิ้ง (late binding)
การทําโพลีมอรฟซึมมักใชรวมกับการสืบทอด
คุณสมบัติ หรือ อินเตอรเฟส
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 5
- 6. การเลือกใชเมธอด
เออลีบายดิ้ง (early binding) หรือ สแตติกบายดิ้ง
่
(static binding) คือการที่คอมไพเลอรเลือก
เมธอดตอนคอมไพลโปรแกรม (compile time)
เลทบายดิ้ง (late binding) หรือ ไดนามิคบายดิ้ง
(dynamic binding) คือการที่เวอรชวลแมทชีน
(virtual machine) เลือกเมธอดที่จะรันขณะโปรแกรม
ทํางาน (runtime) โดยการหาชนิด
อ็อบเจกตเพื่อกําหนดเมธอดทีจะรันใหเหมาะสม
่
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 6
- 7. โพลีมอรฟซึม และการสืบทอด
คุณสมบัติ
ตัวแปรตัวเดียวสามารถใชอางถึงอ็อบเจกตของ
คลาสที่ใชในการประกาศตัวแปร และคลาสทีสบ ่ ื
ทอดคุณสมบัตของคลาสนี้ได
ิ
เชน ถา Cat และ Dog เปนซับคลาสของ Pet
คําสั่งตอไปนี้ใชได
Pet myPet;
myPet = new Pet();
myPet = new Cat();
myPet = new Dog();
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 7
- 8. โพลีมอรฟซึม และการสืบทอด
คุณสมบัติ
กําหนดเมธอดที่จะทําโพลีมอรฟซึมไวในซุปเปอรคลาส
เขียนเมธอดนั้นไวซับคลาสดวย โดยใชการ
โอเวอรไรดเมธอด
ถาใชคําสั่ง
myPet.toString();
เมธอด toString() ของคลาส Pet Cat หรือ Dog
จะถูกเลือกใหทางานขึ้นอยูกับวา myPet เปน
ํ
อ็อบเจกตของคลาสใด
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 8
- 9. โอเปอเรเตอร instanceof
ใชในการหาคลาสของอ็อบเจกต
โดยตรวจสอบวาอ็อบเจกตเปนของคลาสที่ระบุ
หรือไม
อ็อบเจกต instanceof ชือคลาส
่
ตัวอยาง
if (myPet instanceof Cat) {
System.out.println(“สัตวเลี้ยงตัวนี้เปนแมว”);
}
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 9
- 10. อินเตอรเฟส (Interface)
อินเตอรเฟส (interface) หรือ จาวาอินเตอรเฟส (Java
interface) ขอกําหนดความสามารถ โดยไมระบุ
การอิมพลีเมนต
อินเตอรเฟส ประกอบดวยขอกําหนดของเมธอด
ในรูปของรายการเมธอด และลายเซ็นของเมธอดแตละ
ตัว
ประโยชนของอินเตอรเฟส คือใชกําหนดพฤติกรรม
มาตรฐานของคลาส ในรูปของรายการเมธอดที่คลาส
ตองมี และรูปแบบการใชงานของเมธอด
อินเตอรเฟส ตองถูกอิมพลีเมนตโดยคลาส ถึงจะ
นําไปใชงานได
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 10
- 11. ลักษณะของอินเตอรเฟส
ทุกเมธอดในอินเตอรเฟสเปนแอบสแตร็กเมธอด
(abstract method) หมายความวา มีแตชอ ื่
พารามิเตอร และชนิดขอมูลสงคืน ไมมการอิมพลีเมนต
ี
ทุกเมธอดในอินเตอรเฟสเปนพับบลิค (public)
อินเตอรเฟสไมอินสแตนซแอททริบิว (instance
attribute)
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 11
- 12. การประกาศอินเตอรเฟส
public interface ชื่ออินเตอรเฟส {
// ลายเซ็นตเมธอด
}
ตัวอยาง
public interface Measurable {
double getMeasure();
}
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 12
- 13. การอิมพลีเมนตอินเตอรเฟส
public class ชื่อคลาส
implements ชืออินเตอรเฟส , ชื่ออินเตอรเฟส , ...
่
{
// แอททริบิว
// เมธอด
}
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 13
- 14. ตัวอยางการอิมพลีเมนตอินเตอรเฟส
ตัวอยาง
public class BankAccount implements
Measurable {
// เมธอดอื่นๆ
public double getMeasure() {
// คําสั่งอิมพลีเมนตเมธอด
}
}
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 14
- 15. โพลีมอรฟซึม และอินเตอรเฟส
ตัวแปรตัวเดียวสามารถใชอางถึงอ็อบเจกตของทุก
คลาสทีอมพลีเมนตอินเตอรเฟสที่ใชในการประกาศตัว
่ ิ
แปรได
เชน ถา Coin และ BankAccount อิมพลีเมนต
อินเตอรเฟส Measurable คําสั่งตอไปนี้ใชได
Measurable x;
x = new Coin ();
x = new BankAccount();
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 15
- 16. กรณีศึกษา: การออกแบบคลาส
นักศึกษา
นักศึกษามี 2 กลุม: ระดับปริญญาตรี และปริญญาโท
นักศึกษาแตละคนมีขอมูลดังนี: ชือ, คะแนนสอบ 3
้ ่
ครั้ง, เกรด (ผาน/ไมผาน)
การตัดเกรด
นักศึกษา การคิดเกรด
ปริญญาตรี ผาน ถา (test1+test2+test3)/3 >= 70
ปริญญาโท ผาน ถา (test1+test2+test3)/3 >= 80
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 16
- 17. การออกแบบ
Student
UndergraduateStudent GraduateStudent
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 17
- 18. การใชออกแบบโดยใช
โพลีมอรฟซึม กับกรณีศึกษา
การใชโพลีมอรฟซมชวยใหสามารถใชอารเรยเพียงชุด
ึ
เดียวในเก็บขอมูลตางชนิดกันได ทําใหการสราง
โปรแกรมงายขึ้น
ชวยใหสะดวกในการแกไขโปรแกรม เชน การเพิ่ม
ประเภทนักศึกษา
OOP 1/2551 part time ดร.สุขสถิต มีสถิตย 18