c language - 07 object linked list

15
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

Upload: -

Post on 14-Aug-2015

18 views

Category:

Software


2 download

TRANSCRIPT

Page 1: C Language - 07 Object linked list

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

Page 2: C Language - 07 Object linked list

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

Page 3: C Language - 07 Object linked list

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

Page 4: C Language - 07 Object linked list

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

Page 5: C Language - 07 Object linked list

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

Page 6: C Language - 07 Object linked list

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

Page 7: C Language - 07 Object linked list

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 ลงไปให้ถูกต้องกับการใช้งานก็พอ

Page 8: C Language - 07 Object linked list

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

Page 9: C Language - 07 Object linked list

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

Page 10: C Language - 07 Object linked list

24/11/56

Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 10

Inheritance

อ. กิตตินนัท์ น้1อยมณี 37

สิ่งมีชีวิต

พืช สัตว์

ล้มลุกล้มลุก ยืนต้นยืนต้น คนคน

นักเรียนนักเรียน

Inheritance

อ. กิตตินนัท์ น้1อยมณี 38

Inheritance

อ. กิตตินนัท์ น้1อยมณี 39

Inheritance

อ. กิตตินนัท์ น้1อยมณี 40

Page 11: C Language - 07 Object linked list

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 แม่

Page 12: C Language - 07 Object linked list

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

Page 13: C Language - 07 Object linked list

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

Page 14: C Language - 07 Object linked list

24/11/56

Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 14

Example

อ. กิตตินนัท์ น้53อยมณี 53

Example

• ลองเอาหลักการ OOP ที่เรียนมา สร้างเป็น Linked

List กันดูบ้าง

อ. กิตตินนัท์ น้1อยมณี 54

Example

อ. กิตตินนัท์ น้1อยมณี 55

Example

อ. กิตตินนัท์ น้1อยมณี 56

หมายเหตุ: Argument ต่างๆ ลดรูปให้อยู่ใน Method ให้หมด

Page 15: C Language - 07 Object linked list

24/11/56

Advance Computer Programming: อ.กิตตนินัท์ น้อยมณี 15

Example

อ. กิตตินนัท์ น้1อยมณี 57

Argument มาอยู่ใน Method

Example

อ. กิตตินนัท์ น้1อยมณี 58

Argument มาอยู่ใน Method

Example

อ. กิตตินนัท์ น้1อยมณี 59

หมายเหตุ: การทํางานต่างๆ จะสั้นลงมาก และเข้าใจง่ายมากขึ้น