The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by krukanok.inttc, 2022-04-10 03:15:51

บทที่ 2

บทที่ 2

Object-Oriented
หลักการและแนวคดิ เชงิ วตั ถุ

ครผู สู อน นางสาวกนกพร บญุ นุช

เนื้อหาบทเรยี น

1. แนวคิดพื้นฐานเกี่ยวกับการออกแบบและพัฒนาโปรแกรมเชิง

วัตถุ

2. โครงสรางของภาษาเชิงวัตถุ เชน คลาส ออปเจ็ค เมธอด

อินเตอรเฟส แพคแกจ การสืบทอดคลาส เอนแคปซูเลชั่น
และพอริมอรฟซ ึม

ใบงานที่ 2
ใหค วามหมายพรอมทัง้ ยกตวั อยา งของคําศพั ทตอ ไปนี้

1. Polymorphism 8. Attribute และ Method
2. Inheritance 9. Overload
3. Encapsulation 10. Super class
4. Reusable 11. Sub class
5. OOP 12. Instance
6. Object 13. Information Hiding
7. Class

แนวคดิ เกี่ยวกับการโปรแกรมเชงิ วัตถุ

(OOP Concept)

เพราะเหตุใดในปจจุบันการเขียนโปรแกรมเชิงวัตถุ จึงเขามาแทนท่ีรูปแบบ
การเขยี นโปรแกรมแบบเดมิ ๆ การเขียนโปรแกรมในรูปแบบเดิมมีจุดบกพรองอยางไร
และแบบใหมสามารถแกไ ขจดุ บกพรองเหลา น้ันไดห รอื ไม เรามาดคู วามแตกตางระหวาง
การเขยี นโปรแกรมภาษารูปแบบเดมิ กบั รปู แบบใหมก นั

Imparative OOP

การเขียนโปรแกรม OOP

แต่สาํ หรับแนวทางการเขียนโปรแกรมแบบ OOP
แลว้ Data จะถกู ประกาศใชเ้ ฉพาะภายในแต่ละ
Object เท่าน้นั (ไม่ประกาศเป็น Global)

ภาษา OOP

การเขยี นโปรแกรม OOP มีหลายภาษา เชน C++ ,C# ,Java เปน ตน

การเขียนโปรแกรมเชิงวตั ถุ คืออะไร

• โปรแกรมท่ีจะรองรบั งานของเราไดนั้นมักจะซับซอ นเกินกวา การเขียนโปรแกรมแบบ

Structure Programming จะทาํ ไดผลดีพอแนวคดิ ของการเขยี นโปรแกรมเชงิ วตั ถจุ งึ ถกู
คิดขน้ึ มารองรับงานท่ซี ับซอน

• เทียบการเขยี นโปรแกรมแบบ OOP กับรถยนต อยางแรกโปรแกรมแบบ OOP แยก

เปนชน้ิ สว นที่มมี าตรฐานเหมือนรถยนต ซ่งึ เราเรียกชนิ้ สวนนัน้ วา วัตถุ หรือ Object

• พอมองเปน Object กง็ า ย เราจะถอดเขา ถอดเปลี่ยนดว ยชิ้นสว นใดกไ็ ด ขอใหมันมี

มาตรฐานเดยี วกัน (เหมอื นท่เี รามองวา เราถอดเปลีย่ นช้ินสว นรถยนตไ ดสะดวกนน่ั เอง)
ฉะนน้ั มนั ก็งายท่เี ราจะยอมใหใครหลายๆ คนมาชว ยสรางรถยนต หรอื ปรบั แตง รถยนต

ความหมายของ Object

• ความหมายของ Object แบ่งไดเ้ ป็ น 2 ประเภทคือ ส่ิงท่ีเป็นรูปธรรมและ

นามธรรม ที่มีอยจู่ ริงบนพ้ืนโลก (real-world)

• สิ่งที่มีลกั ษณะเป็นรูปธรรม (จบั ตอ้ งได)้ เช่น จกั รยาน รถ สุนขั องคก์ ร ใบ

รายการสินคา้ เป็นตน้

• สิ่งท่ีมีลกั ษณะเป็นนามธรรม (จบั ตอ้ งไมไ่ ด)้ เช่น ความเป็นเจา้ ของ เที่ยวบิน

การวง่ิ แสง เป็นตน้

ทําความรจู ักกบั Class และ Object

กอนท่ีจะสรางออบเจ็กตขึ้นมาไดเราตองสรางคลาสข้ึนมากอน คลาสก็
เปรียบเสมือนแมแ บบ หรอื พมิ พเขียว ในการสรางออบเจ็กตตา งๆ ขึ้นมา
Object คอื สง่ิ ทป่ี ระกอบดว ยคณุ สมบตั ิ 2 ประการคอื

คุณลกั ษณะ (Attribute หรอื Data) คอื สวนที่บง บอกลกั ษณะทว่ั ไปของ

วัตถุ

พฤตกิ รรม (Behavior หรอื Method) คอื ส่ิงทว่ี ัตถุสามารถกระทาํ

ออกมาได

ทาํ ความรจู กั กับ Class และ Object

คณุ ลกั ษณะ (Attribute หรือ Data) คอื สวนท่ีบงบอกลักษณะทั่วไปของวตั ถุ
พฤตกิ รรม (Behavior หรอื Method) คือสิ่งที่วตั ถุสามารถกระทําออกมาได

ตัวอยาง Class พนกั งานบรษิ ทั

Attribute รหัสพนกั งาน,เงนิ เดือน,เวลาเขา-ออกงาน
Method รดู บัตรพนักงาน ,รบั เงินเดอื น

ตวั อยาง class รถยนต

Attribute Class รถยนต
Method ยห่ี อ, รนุ , สี ,ความเร็ว
สตาร ,ดับเครือ่ ง ,เปลย่ี นเกยี ร ,เบรค

จาก Class นําไปสรางเปน  Object

หากเขียนโปรแกรมประมวล
เก่ยี วกบั รถ จะตองสราง Object ของ

รถข้ึนมาโดยรถ 1 คนั หมายถงึ
Object 1 Object

. Class : คลาส “รถ”

Class รถยนต

Object รถ Civic รถ Toyota รถตู

Object ช่อื mycar, BillsCar

ตวั อยา ง Object Car

ตัวอยา ง 2 : Class “นกั เรยี น”

Attribute Class Student
Method
ช่ือ รหสั อายุ
ลงทะเบยี นเรยี น

สราง Object นกั เรยี น จาก Class Student

Class Student

Object Stu1 Stu2 Stu3





สรา ง Object คน จาก Class person

Class Student
ID
Name
Age

Object Student Student

Student ID 1235 ID 1236
ID Name Name
Name 1234
Age สมหญงิ Age สมหมาย Age สมชาย

15 16 9
Stu1 Stu2 Stu3

Note :

• กอนท่ีจะสรางออบเจ็กตข้ึนมาไดเราตองสรางคลาสขึ้นมากอน คลาสก็

เปรียบเสมอื นแมแบบ หรอื พมิ พเ ขยี ว ในการสรา งออบเจก็ ตตางๆ ขึ้นมาก

• ออบเจ็กตท่ีสรางมาจากคลาสเดียวกันอาจมีรายการของคุณสมบัติที่

เหมือนกัน, มีความสามารถท่ีเหมือนกัน แตจะแตกตางกันดวย คาของ
คุณสมบัติตางๆ

• ออบเจ็กตท่ถี กู สรางจากคลาสจะเรยี กวา “อินสแตนซ” instance

Class “รถยนต”

Attribute Method
ยหี่ อ สตารเครอ่ื ง()
สี เบรก()
รนุ เปลย่ี นเกียร()
จํานวนลอ ดับเคร่ือง()
ฯลฯ ฯลฯ

Class “people”

Attribute Method

หมายเลขบตั ร บอกเลขท่บี ตั รประชาชน()
ประชาชน บอกชือ่ ()
ชื่อ-สกุล บอกวนั เกิด()
วนั เกิด บอกท่อี ยู()
เพศ กิน()
ทีอ่ ยู นอน()
ฯลฯ วิ่ง()
ฯลฯ

การเขยี น Class diagram

Name
Attribute
Method

ตวั อยาง Class diagram ของ class “Student”

Student
- id
- Name

+ getName()
+ printGrade()

แสดงขอ มูล 2 instance จาก Class “Student”

หลกั การพนื้ ฐานของ Object oriented

• Encapsulation และ Information Hiding การหอ หุม และ

การซอ นรายละเอยี ด

• Inheritance การสบื ทอด และ (Reusable) การนาํ วตั ถมุ าใช

ใหม

• Polymorphism การพอ งรปู

การซอ นรายละเอยี ด (Information Hiding)

มีผูสังเกตเห็นวา ในชวี ติ ประจาํ วันของเรานัน้ ไมจาํ เปน ตอ งทราบหรือรทู กุ เรอื่ ง
ก็สามารถใชงานสงิ่ ของนั้นๆ ได เชน

โทรทัศนท ีม่ ีอยตู ามบา น เรา
ไมตอ งทราบการทํางานของ
อปุ กรณภายในของมัน แต
เราก็สามารถเปด เคร่อื งและ
ดูรายการโปรดของเราได
เพยี งรูวธิ ีการกดปุม ตางๆ

Encapsulation

• Encapsulation คือรากฐานอยางหน่ึงของแนวความคิดในเชิง Object-Oriented ซ่ึงขอดี

ของ Encapsulation คอื การปองกัน attribute (data) ของ object จากความเสียหาย เพราะถา
สวนของโปรแกรมทั้งหมด อนุญาตใหมีการเขาถึง Attribute ไดตามที่ตองการแลวน้ัน จะ
สงผลให attribute นั้นงายตอการถูกใชอยางผิดๆ ทําใหคา attribute เปลี่ยนแปลงไป ซึ่ง
กอ ใหเกดิ ความเสยี หายตามมา

• Encapsulation คือการหอ หุม attributes และ methods เขาไวด วยกัน
• Encapsulation จะทําหนาท่ีปองกันมิให Object อื่นท่ีอยูภายนอก เขาถึง Object หน่ึงๆ

ไดอยางอิสระจะมีเฉพาะ methods ที่อยูใน Object เทานั้นจะสามารถติดตอกับ attribute ท่ี
อยูใน Object เดยี วกันได เรยี กไดวาการ Encapsulation มคี ุณสมบัติของ Information hiding

Encapsulation การหอ หมุ

Method Method

object1 object2

Method Attribute Method Attribute

การเขาถึง Attribute จะตอ งผาน Method

Encapsulation & Information Hiding

+getId Student
- id
Student - Name
+getId()
+getName -id +getName()
-name +setName()

+setName

Information Hiding

• Information Hiding คอื การจํากดั การมองเหน็ ขอมูลภายใน Object

เชนการกําหนดคุณลักษณะเปน “public” + เพอื่ ใหสามารถเช่อื มตอ
กับ Object ภายนอกได และ

กาํ หนดเปน “private” - เพอ่ื จาํ กัด attribute ใหอยูภายใน object
เทานัน้

Inheritance (การสืบทอดคณุ สมบตั ิ)

• Inheritance คือ คณุ สมบตั ทิ ่ี Class ๆ หนง่ึ สามารถสบื ลักษณะของ

attribute และ method ของ อีก Class หนงึ่ ไดการทําเชนนท้ี าํ ใหคุณ
สามารถ Create Class ใหมข นึ้ โดยนําสาระสําคญั ทเี่ หมือนกันของ
attribute และ behavior(method) จาก class อื่นมาใชไ ด

Inheritance (การสบื ทอดคณุ สมบตั )ิ

Emp_ID
position

Emp_ID Emp_ID
Position Position
Position_Car Hout_per_mounth

Inheritance (การสบื ทอดคณุ สมบตั )ิ

คลาสแม (Super Class) Emp_ID
position

คลาสลกู (SubClass) คลาสลกู (SubClass)

Emp_ID Emp_ID
Position Position
Position_Car Hout_per_mounth

Inheritance (การสบื ทอดคุณสมบตั )ิ

Polymorphism การพองรปู

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

Polymorphism การพองรูป

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

การพองรปู (Polymorphism)

ค•ลารสาแกฐมาคนขอื องSกาhรaพpอ้ งeรูปคือคุณสมบตั ิการถ่ายทอด
ค•ลาคสุณลสูกมคบตัอื ิกาCรถiา่rยcทleอด, ยTนื rยiนaั ไnดgว้ ่าleคล, าRสeลูกcทtเ่ีaกิดnจgากleคลมาสีคแณุม่เดสียวมกบนั ยตั อ่ เิ มหมมีคือุณสนมบตั ิ
คลาเสหแมือมนท กุกนั ประการ

• เปน ทม่ี าของหนึง่ รูปหลายพฤตกิ รรม

การถายทอดใหเกิดลักษณะของพอ งรปู

Shape

+draw()
+erase()

Circle Line Rectangle

+draw() +draw() +draw()
+erase() +erase() +erase()


Click to View FlipBook Version