งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Object-Oriented Programming การเขียนโปรแกรมเชิงวัตถุ ผู้สอน อ. วาทินี ดวงอ่อนนาม.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Object-Oriented Programming การเขียนโปรแกรมเชิงวัตถุ ผู้สอน อ. วาทินี ดวงอ่อนนาม."— ใบสำเนางานนำเสนอ:

1 Object-Oriented Programming การเขียนโปรแกรมเชิงวัตถุ ผู้สอน อ. วาทินี ดวงอ่อนนาม

2 บทที่ 8 การสืบทอด (Inheritance) ตอนที่ 2 การพ้องรูป Polymorphism และ Constructor

3 เนื้อหา Reference ของ class แม่สามารถอ้างถึง class ลูกได้ การพ้องรูป Polymorphism รู้จักคำว่า Overloading การ Overload Constructor และการใช้ this เรียกใช้ constructor ของ class แม่ ด้วย super() เรียกใช้ constructor ของ class ลูก ( ตัวเอง ) ด้วย this()

4 note :argument และ parameter Argument parameter

5  การสืบทอด (Inheritance) ( ต่อ จากบทก่อนหน้า )

6 คลาสที่ใช้ศึกษา Animal + age : int + eat() + sleep() extends Dog + name: String + eat() Fish + sleep() + swim() extends

7 สร้าง class ต่าง ๆ

8 Reference ของ class แม่สามารถ อ้างถึง class ลูกได้ ปกติเราจะสร้าง วัตถุโดย หมายเหตุ ตัวแปร instance, reference, ตัวแปร Object ชื่อคลาส reference=new ชื่อคลาส (); เช่น Dog d=new Dog();

9 Reference ของ class แม่สามารถ อ้างถึง class ลูกได้ แต่ในกรณีที่วัตถุอยู่ใน class ที่ สืบทอด มาจาก class อื่นเรา สามารถให้ reference ของ class แม่ อ้างถึงวัตถุใน class ลูกได้ ชื่อคลาสแม่ reference=new ชื่อคลาสลูก (); เช่น Animal a=new Dog(); Animal + age : int + eat() + sleep() Dog + name: String + eat()

10 Reference ของ class แม่สามารถ อ้างถึง class ลูกได้ เราสามารถสั่งให้วัตถุใน class ลูกทำงานได้โดยผ่าน ทาง reference ของ class แม่ได้ Animal a=new Dog(); a.eat(); Animal + age : int + eat() + sleep() Dog + name: String + eat()

11 กรณี class ลูก override method

12 Animal + age : int + eat() + sleep() Dog + name: String + eat()

13 กรณี class ลูก ไม่ได้ override method Animal + age : int + eat() + sleep() Fish +sleep() +swim()

14 กรณี class ลูก ไม่ได้ override method

15 Animal + age : int + eat() + sleep() Fish +sleep() +swim()

16 หมายเหตุ เราสามารถใช้ reference คลาสแม่ อ้างถึงวัตถุคลาสลูก ซึ่งจะเรียกได้ เฉพาะเมธอดที่มีใน class แม่เท่านั้น เราเรียกเมธอด อื่นๆ จะทำให้ คอมไพล์ ไม่ผ่าน

17 กรณี class แม่เรียกสิ่งที่ไม่มีใน class แม่ Animal + age : int + eat() + sleep() Fish +sleep() +swim()

18 กรณี class แม่เรียกสิ่งที่ไม่มีใน class แม่ Animal + age : int + eat() + sleep() Fish +sleep() +swim()

19  การพ้องรูป Polymorphism

20 การพ้องรูป Polymorphism คืออะไร คือ การทำให้สิ่งหนึ่งสามารถทำงาน ได้หลากหลายรูปแบบตามความ ต้องการที่เกิดขึ้นในขณะหนึ่ง ๆ เช่น การที่ Method ชื่อเดียวกันสามารถ รับค่าที่ส่งมาแตกต่างกันได้หลาย รูปแบบ

21 Polymorphism การพ้องรูป ยกตัวอย่าง Method void calculate(int x) { } void calculate(double y) { } หากมีผู้ใช้โปรแกรมส่งข้อมูลเข้ามาเป็นตัวเลข จำนวนเต็ม เราก็สามารถเรียกเมธอด calculate(int x) ให้ทำงาน หากผู้ใช้โปรแกรมส่งข้อมูลเลขทศนิยมเข้ามาเรา ก็สามารถเรียกคำนวณให้ละเอียดมากขึ้นโดยเรียก เมธอด calculate(double y) โดยไม่ต้องไปตั้งชื่อเมธอดใหม่ เพียงแค่ตั้งค่า อาร์กิวเมนต์ที่แตกต่างกัน มีศัพท์เรียกเฉพาะว่า เมธอดชื่อนั้นถูก “Overload”

22 Overloading & Polymorphism 2 คำนี้เกี่ยวข้องกันอย่างไร ? Overloading คือ การกำหนดให้ method หรือ constructor ที่มีชื่อ เดียวกัน มี argument ที่แตกต่างกัน ทำให้ method หรือ constructor ดังกล่าวมีคุณสมบัติการพ้องรูป

23 กฎในการ Overload เมธอด 1. ชื่อ method เหมือนกัน 2. argument ของแต่ละ method ต้อง แตกต่างกัน เพื่อจะได้สามารถแยกความ แตกต่างระหว่างเมธอดเหล่านั้นได้ 3. ค่าที่ส่งคืนกลับออกไปจาก method (return type) จะเหมือนหรือแตกต่างกันก็ ได้

24 คำเตือน อย่าจำสับสันนะคะ กับคำว่า Override และ Overload

25 สร้าง class “Employee” Employee + name : String + salary : double +getDetails() +getDetails(name :String) :String +getDetails(s:double) : double

26 เรียก getDetails() ที่ได้ส่ง parameter

27 เรียก getDetails(“ ชาติชาย ”) parameter =“ ชาติชาย ”

28 เรียก getDetails(30000), parameter=

29  Constructor ( คอนสตรัคเตอร์ )

30 Constructor ( คอนสตรัค เตอร์ ) เป็นส่วนที่ประกอบด้วยคำสั่งที่ จำเป็นสำหรับการกำหนดค่าเริ่มต้น ให้กับ attribute ต่าง ๆ ของ Object โดย Constructor จะถูกเรียกให้ ทำงานโดยอัตโนมัติ (default constructor) เมื่อเราสร้าง Object จาก class ด้วย New

31 Student + name : String + grade : double

32 หน้าตาของ constructor คล้ายเมธอดแต่ต่างกันตรงที่ ชื่อต้องเหมือนกันกับ class ( แต่เมธอดชื่อต้อง ไม่เหมือนกับชื่อ class) ไม่มี return type

33 access modifier ของ constructor เหมือนกับ class

34 หากเราต้องการจะสร้าง constructor ขึ้นเอง constructor ที่สร้างขึ้นเองสามารถระบุ ให้มีหรือไม่มี argument ก็ได้ สร้างกี่อันก็ได้ ใน class หนึ่ง ๆ แต่ constructor แต่ละอันจะต้องมี argument ไม่เหมือนกัน สรุป มีชื่อเหมือนกันแต่ต่างกันที่ argument เราเรียก constructor เหล่านี้ว่า “overloaded constructor”

35  การ overload Constructor และการ ใช้ this

36 class Student this. แอตทริบิวต์, this. เมธอด () เป็นการอ้างถึง แอตทริบิวต์ และเมธอด ของ class นี้ name ที่ input เข้ามา จะนำไปกำหนดค่าให้กับ this.name this.name คือ name ที่เป็น attribute ของ class 2

37 Default Constructor

38 เรียก Constructor โดย parameter=“Student A”

39 เรียก Constructor โดย parameter=“Student A”,4.00

40 Constructor ใน class แม่จะไม่ถูก ถ่ายทอดให้ class ลูก class แม่จะถ่ายทอดแค่ attribute และ method เท่านั้น ( ต้องประกาศเป็น public และ protected ด้วย ) แต่ constructor ใน class แม่จะไม่ถูก ถ่ายทอดไปยัง class ลูก สรุป constructor ของ class แม่และ class ลูก เป็นส่วนที่แยกออกจากกันไม่ สามารถสืบทอดให้กันได้ แต่ class ลูก สามารถเรียกใช้ constructor ของ class แม่ได้

41 สร้าง class A, class B ดังนี้

42 ทดสอบเรียก constructor ของ class แม่ กรณี ไม่ มี parameter

43 ทดสอบเรียก constructor ของ class แม่ กรณี มี parameter

44 เมื่อ Default constructor เริ่มทำงาน นอกจาก default constructor จะทำการกำหนดค่าเริ่มต้นให้กับ attribute และ method แล้ว อีกสิ่งที่ default constructor ทำคือ  เมื่อ default constructor ของ class ลูกทำงานจะไปเรียก default constructor ของบรรพบุรุษ ให้ทำงานด้วย

45 ทดสอบเรียก constructor ของ class ลูก กรณี ไม่ มี parameter 1 2

46 ทดสอบเรียก constructor ของ class ลูก กรณี มี parameter=16 1 2

47 constructor ของ class แม่และ class ลูก เป็นส่วน ที่แยกออกจากกันไม่สามารถสืบทอดให้กันได้

48

49 เรียกใช้ constructor โดยใช้ super(),this() class ลูกสามารถเรียกใช้ constructor ของ class แม่ได้โดย super() และเรียกใช้ constructor ของ class ตัวเองโดยใช้ this() โดยมีเงื่อนไขว่า เมื่อใช้ super() และ this() 1. ต้องเรียกคำสั่งนี้ที่บรรทัดแรกภายใน constructor 2. และ parameter ที่ใช้ก็ต้องมีใน constructor ของ class นั้นๆ ด้วย เช่น super(5) class A (class แม่ ) ต้องมี A(int x){} this(5.0) class B (class ลูก ) ต้องมี B(double x){} ไม่เช่นนั้นจะคอมไพล์ไม่ผ่าน

50 class ลูกสามารถเรียกใช้ constructor ของ class แม่ได้โดย super() ให้แก้ไขเพิ่มเติม class B ดังนี้ 1 2 3

51 1 2 3

52 class ลูกสามารถเรียกใช้ constructor ของ class ลูก ( ตัวเอง ) ได้โดย this() ให้แก้ไขเพิ่มเติม class B ดังนี้

53

54 จากข้อมูล เงื่อนไขการใช้ super() และ this() 1. ต้องเรียกคำสั่ง super(),this() นี้ที่บรรทัด แรกภายใน constructor 2. และ parameter ที่ใช้ก็ต้องมีใน constructor ของ class นั้นๆ ด้วย เช่น super(5) class A (class แม่ ) ต้องมี A(int x){} this(5.0) class B (class ลูก ) ต้องมี B(double x){} ไม่เช่นนั้นจะคอมไพล์ไม่ผ่าน

55 ต้องเรียกคำสั่งนี้ที่บรรทัดแรกภายใน constructor

56

57 เรียกใช้ constructor ที่ไม่มีอยู่จริง จะเห็นว่าไม่มี B(String s){}

58 สรุป หลักการพื้นฐานของ object oriented Encapsulation และ Information Hiding การห่อหุ้ม และ การซ่อน รายละเอียด (Reusable) Inheritance การสืบทอด และ (Reusable) การนำวัตถุมาใช้ใหม่ การนำวัตถุมาใช้ใหม่ Polymorphism การพ้องรูป

59 The End.


ดาวน์โหลด ppt Object-Oriented Programming การเขียนโปรแกรมเชิงวัตถุ ผู้สอน อ. วาทินี ดวงอ่อนนาม.

งานนำเสนอที่คล้ายกัน


Ads by Google