c language - 07 object linked list
TRANSCRIPT
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 1
อ๊อบเจกต์ลิงค์ลิสต์
Advance Computer Programming
รหัสวิชา 32090207
อ. กิตตินนัท์ น้1อยมณี 1
เนื้อหา
1. Introduction
2. Object Oriented Programming
3. Accessible
4. Syntax
5. Overloading Method
6. Constructor VS Deconstructorอ. กิตตินนัท์ น้1อยมณี 2
Encapsulation
เนื้อหา
7. Inheritance
8. Overriding Method
9. Virtual Function
10. Example
อ. กิตตินนัท์ น้1อยมณี 3
Inheritance
Virtual Function
Introduction
อ. กิตตินนัท์ น้4อยมณี 4
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 2
Introduction
• ตอนนี้จบเรื่องโครงสร้างข้อมูลพื้นฐานหมดแล้ว
–Array
–Struct
–Pointer [สําคัญที่สุด]
–Function [ทําให้งานของเราเป็นระเบียบ ความยากอยู่ที่
การส่งออกข้อมูล]
อ. กิตตินนัท์ น้1อยมณี 5
Introduction
• จากบทที่แล้ว เราโปรแกรมของเรามี Linked List
หลายๆ ชุด รับรองว่ายุ่งแน่ๆ
• ดังนั้นเราจะต้องเขียนโปรแกรมเชิงวัตถุ เพื่อการ
รวม Code เป็นก้อนๆ เพื่อทํางานอะไรบางอย่าง
มาอยู่ในโครงสร้างเดียวกัน
อ. กิตตินนัท์ น้1อยมณี 6
Introduction
• โปรแกรมที่เราเขียนๆ กันเป็นปรกติ คือการเขียน
โปรแกรมเชิงโครงสร้าง
• เหนือกว่าโปรแกรมเชิงโครงสร้างก็คือการเขียน
โปรแกรมเชิงวัตถุ
อ. กิตตินนัท์ น้1อยมณี 7
Object Oriented Programming
อ. กิตตินนัท์ น้8อยมณี 8
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 3
Object Oriented Programming
• เรียกย่อๆ ว่า OOP
• มีคุณลักษณะทั้งหมด 3 อย่าง
1. การบรรจุรวม (Encapsulation)
2. การสืบทอด (Inheritance)
3. ฟังก์ชันเสมือน (Virtual Function)
อ. กิตตินนัท์ น้1อยมณี 9
Object Oriented Programming
1. การบรรจุรวม (Encapsulation)
• คือการรวมตัวแปรและฟังก์ชันต่างๆ เข้าด้วยกัน
รวมกันเป็นกลุ่มก้อน เอาไว้ในคลาส (Class)
• ตัวแปร เรียกว่า Properties
• ฟังก์ชัน เรียกว่า Method
• คล้ายๆการสร้าง Struct (Struct มีแต่ตัวแปร แต่ Class
มีฟังก์ชันรวมอยู่ด้วย)อ. กิตตินนัท์ น้1อยมณี 10
Object Oriented Programming
2. การสืบทอด (Inheritance)
มีคลาสแม่ คลาสลูก เพิ่มเติมคุณสมบัติบางอย่าง
ต่อไปได้อีก
อ. กิตตินนัท์ น้1อยมณี 11
Object Oriented Programming
3. ฟังก์ชันเสมือน (Virtual Function)
หรือเป็นการแปลงกาย โดยวัตถุสามารถ
เปลี่ยนแปลงตัวเองได้ (Polymorphism)
อ. กิตตินนัท์ น้1อยมณี 12
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 4
Accessible
อ. กิตตินนัท์ น้13อยมณี 13
Accessible
• Public เป็นการเข้าถึงแบบสาธารณะ ทุกคน
สามารถเข้าใช้งานได้
• Private เป็นการเข้าถึงแบบส่วนตัว ใช้งานได้
เฉพาะคลาสตัวเองเท่านั้น
• Protected เป็นการเข้าถึงที่ใช้งานได้ทั้งคลาส
ตัวเอง และคลาสที่สืบทอดมันไปอีกที
อ. กิตตินนัท์ น้1อยมณี 14
Accessible
อ. กิตตินันท์ น้1อยมณี 15
คลาสแม่ คลาสลูก
Private
Protected
Public Public
ฟังก์ชันทั่วไป (เช่น main function)
Accessible
อ. กิตตินันท ์น้1อยมณี 16
คลาสแม่ คลาสลูก
ฟังก์ชันทั่วไป (เช่น main function)
Private
Protected
Public Public
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 5
Syntax
อ. กิตตินนัท์ น้17อยมณี 17
Syntax
อ. กิตตินนัท์ น้1อยมณี 18
Syntax
อ. กิตตินนัท์ น้1อยมณี 19
ประกาศตัวแปรต่างๆ ที่เกี่ยวกับ
Class
ประกาศ Function ต่างๆ เป็น Prototype
ชื่อของ ClassSyntax
อ. กิตตินนัท์ น้1อยมณี 20
• เนื่องจากเรา Prototype เอาไว้ ดังนั้นเราจึงมาเขียนรายละเอียดของ Function แยกต่างหากอีกที ซึ่งการเขียนรายละเอียดของ Function หรือ Method นี้เราจะเรียกว่าการ Implementation (การอธิบายรายละเอียดของ Method)
ชื่อของ Class
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 6
Syntax
จุดสังเกต
• this มีความหมายว่า “คลาสนี้” ซึ่งเป็นตัวแทนของ
คลาสนั้นๆ ดังนั้นเมื่อมันเป็นตวัแทนของคลาส มัน
จึงสามารถเรียกใช้ Properties และ Method ของ
คลาสได้ทั้งหมด
• เวลาอ้างอิง this เราจะใช้เครื่องหมาย “->”
อ. กิตตินนัท์ น้1อยมณี 21
Syntax
อ. กิตตินนัท์ น้1อยมณี 22
ตรงนี้คือ Properties
ตรงนี้คือ Argument ของ Method
Syntax
อ. กิตตินนัท์ น้1อยมณี 23
สร้างวัตถุจากคลาส
เรียกใช้ Method ได้เลย
หมายเหตุ: คําว่า Yuri จะแทนตัวแปรประเภท student ซึ่งตัวแทนนี้มีชื่อเรียกว่า Object แต่บางตําราก็เรียกว่า Instance ซึ่งสามารถเรียกได้ทั้ง 2 กรณี
Overloading Method
อ. กิตตินนัท์ น้24อยมณี 24
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 7
Overloading Method
• คือ Method ที่มีชื่อเหมือนกัน
• อยู่ใน Class เดียวกันเท่านั้น
• ต่างกันที่จํานวน Parameter ที่รับจากภายนอก
อ. กิตตินนัท์ น้1อยมณี 25
Overloading Method
อ. กิตตินนัท์ น้1อยมณี 26
หมายเหตุ: จาก Code ม ีPrototype อยู่ทั้งหมด 3 Method ซึ่งมีชื่อเหมือนกันหมด แต่มีจํานวน Parameter ต่างกันหมด ซึ่ง Method เหล่านี้จะถูกเรียกว่า Overloading Method
Overloading Method
อ. กิตตินนัท์ น้1อยมณี 27
หมายเหตุ: รายละเอียดของแต่ละ Method จะต่างกัน ซึ่งถือเป็นความยืดหยุ่นในการเขียนโปรแกรม ในกรณีที่ต้องการ Method ชื่อเหมือนเดิม แต่ทํางานได้หลากหลายกว่าเดิม
Overloading Method
อ. กิตตินนัท์ น้1อยมณี 28
หมายเหตุ: การเรียกใช้งาน ก็เรียกใช้ได้ตามปรกติ เพียงแค่ใส่ Parameter ลงไปให้ถูกต้องกับการใช้งานก็พอ
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 8
Overloading Method
อ. กิตตินนัท์ น้1อยมณี 29
หมายเหตุ: ผลลัพธ์ที่ได้ จะได้การทํางานที่แตกต่างกัน ทั้งๆ ที่เรียกใช้ Method ชื่อเดียวกันหมด ซึ่งถือเป็นคุณสมบัติเด่นของการเขียนโปรแกรมเชิงวัตถุ
Constructor VS Deconstructor
อ. กิตตินนัท์ น้30อยมณี 30
Constructor VS Deconstructor
Constructor
• คือ Method เริ่มต้นการทํางานของ Class ซึ่งโดยทั่วไป
จะเอาไว้ใช้ในการกําหนดค่าเริม่ต้นให้กับ Class
• ชื่อ Method จะเหมือนกับ Class เลย
• ไม่ต้องมี Return ค่าใดๆ
อ. กิตตินนัท์ น้1อยมณี 31
Constructor VS Deconstructor
Deconstructor
• คือ Method ที่จะทํางานเมื่อเกิดการทําลาย Instance
• ชื่อเหมือนกับ Class แต่จะมีเครื่องหมาย “~” นําหน้า
อ. กิตตินนัท์ น้1อยมณี 32
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 9
Constructor VS Deconstructor
อ. กิตตินนัท์ น้1อยมณี 33
ConstructorDeconstructor
หมายเหตุ: Prototype ของ Constructor และ Deconstructor
Constructor VS Deconstructor
อ. กิตตินนัท์ น้1อยมณี 34
หมายเหตุ: Implement รายละเอียดของ Constructor และ Deconstructor
Constructor VS Deconstructor
อ. กิตตินนัท์ น้1อยมณี 35
จองหน่วยความจํา
ทําลาย Instance
Inheritance
อ. กิตตินนัท์ น้36อยมณี 36
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 10
Inheritance
อ. กิตตินนัท์ น้1อยมณี 37
สิ่งมีชีวิต
พืช สัตว์
ล้มลุกล้มลุก ยืนต้นยืนต้น คนคน
นักเรียนนักเรียน
Inheritance
อ. กิตตินนัท์ น้1อยมณี 38
Inheritance
อ. กิตตินนัท์ น้1อยมณี 39
Inheritance
อ. กิตตินนัท์ น้1อยมณี 40
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 11
Overriding Method
อ. กิตตินนัท์ น้41อยมณี 41
Overriding Method
• คือ Method ที่มีชื่อเหมือนกับ Class แม่ แต่อาจมี
ลักษณะการทํางานที่แตกต่างกนัออกไป
(นํา Method ของ Class แม่ มา Implement ใหม่)
อ. กิตตินนัท์ น้1อยมณี 42
Overriding Method
อ. กิตตินนัท์ น้1อยมณี 43
หมายเหตุ: human คือคลาสแม่ ม ีMethod ชื่อว่า walk
Overriding Method
อ. กิตตินนัท์ น้1อยมณี 44
หมายเหตุ: student คือคลาสลูก โดย inherit มาจากคลาสแม่ และทําการ Overriding Method ที่ชื่อว่า walk ของคลาสแม่
Inherit มาจาก Class แม่
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 12
Overriding Method
อ. กิตตินนัท์ น้1อยมณี 45
หมายเหตุ: จะเห็นว่าคลาสแม่และคลาสลูกเรียกใช้ Method ชื่อเดียวกัน แต่ผลลัพธ์ที่ได้นั้นต่างกัน เพราะเกิดการ Overriding Method
Virtual Function
อ. กิตตินนัท์ น้46อยมณี 46
Virtual Function
• Virtual แปลว่า เสมือน
• Visual แปลว่า เกี่ยวกับภาพ การแสดงภาพ
มองเห็นได้ การมองเห็น
อ. กิตตินนัท์ น้1อยมณี 47
Virtual Function
• Virtual Function ในภาษาเชิงวัตถุจะเรียกว่า
Polymorphism
–Poly แปลว่า หลายๆ เยอะๆ
–Morphism แปลว่า รูปร่าง
• ซึ่งเป็นเรื่องของ Pointer เป็นหลัก
อ. กิตตินนัท์ น้1อยมณี 48
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 13
Virtual Function
อ. กิตตินนัท์ น้1อยมณี 49
คลาสแม่
คลาสลูก
Virtual Function
อ. กิตตินนัท์ น้1อยมณี 50
ประกาศคลาสแม่เป็น Pointer
เปลี่ยนตําแหน่งการชี้
Virtual Function
อ. กิตตินนัท์ น้1อยมณี 51
Virtual Function
• การทํางานของการแปลงกายคือการเปลี่ยน
ตําแหน่งการชี้ของ Pointer
• Pointer ต้องเป็น Class แม่เท่านั้น ถึงจะชี้เลือกได้
ว่าอยาก Overriding Method อันไหน (ชี้ได้ว่าจะ
เอา walk อันไหน)
อ. กิตตินนัท์ น้1อยมณี 52
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 14
Example
อ. กิตตินนัท์ น้53อยมณี 53
Example
• ลองเอาหลักการ OOP ที่เรียนมา สร้างเป็น Linked
List กันดูบ้าง
อ. กิตตินนัท์ น้1อยมณี 54
Example
อ. กิตตินนัท์ น้1อยมณี 55
Example
อ. กิตตินนัท์ น้1อยมณี 56
หมายเหตุ: Argument ต่างๆ ลดรูปให้อยู่ใน Method ให้หมด
24/11/56
Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 15
Example
อ. กิตตินนัท์ น้1อยมณี 57
Argument มาอยู่ใน Method
Example
อ. กิตตินนัท์ น้1อยมณี 58
Argument มาอยู่ใน Method
Example
อ. กิตตินนัท์ น้1อยมณี 59
หมายเหตุ: การทํางานต่างๆ จะสั้นลงมาก และเข้าใจง่ายมากขึ้น