52
คคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคค 1 คคคคคคค 5653309 คคคคคคคคคคคคคคคคคคค คคคคค (Object Oriented Programming)

รายวิชา 5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Embed Size (px)

DESCRIPTION

รายวิชา 5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming). ความรู้เบื้องต้นเกี่ยวกับการเขียน โปรแกรมเชิงวัตถุ. 1. ภาษาโปรแกรมเชิงวัตถุ. ในปี 1967 ภาษา Simula67 ถูกพัฒนาที่นอร์เวย์ เพื่อช่วยในการเขียนโปรแกรมสำหรับจำลอง (Simulation) - PowerPoint PPT Presentation

Citation preview

Page 1: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ความรู้��เบื้�องต้�นเกี่��ยวกี่�บื้กี่ารู้เขี�ยนโปรู้แกี่รู้มเชิ�งว�ต้ถุ�

1

รู้ายว�ชิา 5653309กี่ารู้เขี�ยนโปรู้แกี่รู้มเชิ�งว�ต้ถุ�

(Object Oriented Programming)

Page 2: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ภาษาโปรู้แกี่รู้มเชิ�งว�ต้ถุ�• ในปี� 1967 ภาษา Simula67 ถู�กพัฒนาที่ �

นอร์�เวย์� เพั��อช่�วย์ในการ์เขี ย์นโปีร์แกร์มสำ�าหร์บจำ�าลอง(Simulation)

• โดย์ที่�วไปีร์ะบบที่ �ซับซั'อนจำะปีร์ะกอบด'วย์วตถู)จำ�านวน มากที่ �ที่�างานเก �ย์วขี'องกน โดย์การ์สำร์'างโปีร์แกร์มที่ �

จำ�าลองการ์ที่�างานขีองแต�ละวตถู)ไปีที่ �ละขี*นจำนกว�าจำะได' คำ�าตอบ ซั,�งแนวคำ-ดน *เร์ ย์กว�า กี่ารู้โปรู้แกี่รู้มเชิ�งว�ต้ถุ�

• 1990s ม ภาษาเก�าถู�กเพั-�มเต-มในสำ�วนขีองการ์ โปีร์แกร์มเช่-งวตถู) แต�โดย์พั�*นฐานขีองภาษาจำ,งที่�าให'

กลไกไม�เปี1นเช่-งวตถู)อย์�างสำมบ�ร์ณ์�

Page 3: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

โปรู้แกี่รู้มเชิ�งว�ต้ถุ� (Object Oriented Programming)• การ์เขี ย์นโปีร์แกร์มคำอมพั-วเตอร์�ม 2 แบบ–การ์เขี ย์นโปีร์แกร์มแบบโคำร์งสำร์'าง–การ์เขี ย์นโปีร์แกร์มเช่-งวตถู)

Page 4: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

โปรู้แกี่รู้มเชิ�งว�ต้ถุ� (Object Oriented Programming)• กี่ารู้เขี�ยนโปรู้แกี่รู้มแบื้บื้โครู้งสรู้�าง คำ�อ การ์

เขี ย์นคำ�าสำ�งเร์ ย์งต�อกนไปีเร์��อย์ๆ ที่ ละบร์ร์ที่ด โปีร์แกร์มจำะเร์-�มที่�างานจำากคำ�าสำ�งแร์กสำ)ดเร์��อย์ไปีจำนถู,งคำ�าสำ�งที่'าย์สำ)ด เปี1นอนจำบโปีร์แกร์ม อาจำม การ์สำร์'างเปี1นโปีร์แกร์มย์�อย์ๆ ในโปีร์แกร์มใหญ่�บ'าง เพั��อลดคำ�าสำ�งที่ �ซั�*าซั'อน

• ตวอย์�างเช่�น ภาษาเบสำ-ก ภาษาโคำบอล ภาษาฟอร์�แที่ร์น ภาษาปีาสำคำาล และ ภาษาซั

Page 5: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

โปรู้แกี่รู้มเชิ�งว�ต้ถุ� (Object Oriented Programming)• กี่ารู้เขี�ยนโปรู้แกี่รู้มเชิ�งว�ต้ถุ� คำ�อ การ์สำร์'างวตถู)

สำมมต-ขี,*นมาก�อน แล'วเขี ย์นคำ�าสำ�งน-ย์ามวตถู)น*นจำนสำามาร์ถูที่�าให'วตถู)น*นที่�างานตามที่ �ต'องการ์ได'

• ซัอร์�สำโคำ'ดขีองโปีร์แกร์มเช่-งวตถู)แที่นที่ �จำะเปี1นคำ�าสำ�งเขี ย์นเร์ ย์งต�อกนไปีเร์��อย์ๆ จำะเปี1นน-ย์ามขีองวตถู)เขี ย์นเร์ ย์งต�อไปีเร์��อย์ๆ แที่นและโปีร์แกร์มจำะที่�างานได'เองถู'าวตถู)น*นถู�กน-ย์ามขี,*นอย์�างเหมาะสำม

• ตวอย์�างเช่�น ภาษาจำาวา และภาษาซั พัลสำพัลสำ (ภาษาซั พัลสำพัลสำเขี ย์นได'ที่*งแบบโคำร์งสำร์'างและวตถู))

Page 6: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

โปรู้แกี่รู้มเชิ�งว�ต้ถุ� (Object Oriented Programming)• การ์เขี ย์นโปีร์แกร์มเช่-งวตถู)ต'องใช่'เวลาในการ์

ศึ,กษานานพัอสำมคำวร์ โดย์เฉพัาะอย์�างย์-�งนกเขี ย์นโปีร์แกร์มต'องม คำวามช่�านาญ่ในการ์สำร์'างวตถู)

สำมมต-ที่ �ที่�างานตามอย์�างที่ �เร์าต'องการ์ได'• โปีร์แกร์มปีร์ะย์)กต�ที่ �ใช่'งานจำร์-งในปี9จำจำ)บนล'วนแล'ว

แต�เขี ย์นด'วย์โปีร์แกร์มเช่-งวตถู)ที่*งสำ-*น• การ์ศึ,กษาการ์เขี ย์นโปีร์แกร์มเช่-งวตถู)จำ,งเปี1นสำ-�งที่ �

นกเขี ย์นโปีร์แกร์มร์) �นใหม�ที่)กคำนคำวร์จำะฝึ;กฝึนไว'

Page 7: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

โปรู้แกี่รู้มเชิ�งว�ต้ถุ� (Object Oriented Programming)• ขี�อดี� : ม คำวามกะที่ดร์ด • ขี�อเส�ย : ต'องใช่'เวลาศึ,กษานาน โดย์เฉพัาะอย์�าง

ย์-�งคำนที่ �ไม�ใช่�นกเขี ย์นโปีร์แกร์มม�ออาช่ พั เพัร์าะการ์เขี ย์นโปีร์แกร์มเช่-งวตถู) ไม�ใช่�เร์��องที่ �จำะเร์ ย์นร์� 'ได'ในเวลาอนร์วดเร์<ว

Page 8: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

เปรู้�ยบื้เที�ยบื้ขี��นต้อนกี่ารู้เขี�ยนโปรู้แกี่รู้มแบื้บื้โครู้งสรู้�างและกี่ารู้เขี�ยนโปรู้แกี่รู้มเชิ�งว�ต้ถุ�

Page 9: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

แนวความค�ดีภาษาเชิ�งว�ต้ถุ�

• การ์เน'นที่ �ปี9ญ่หาและองคำ�ปีร์ะกอบขีองปี9ญ่หาเพั��อ การ์แก'ปี9ญ่หาน*น เร์ ย์กว�า Problem space

• เหม�อนการ์จำ�าลองคำวามเปี1นจำร์-งในช่ ว-ตคำวามเปี1น อย์��ขีองมน)ษย์�ที่ �จำะปีร์ะกอบด'วย์ คำน สำตว� สำ-�งขีอง

และใช่'สำ-�งต�างๆ เพั��อแก'ปี9ญ่หา คำ�อ แต้%ละส��งม�หน�าที��ในกี่ารู้แกี่�ป(ญหา

Page 10: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Problem Spaceหญ�าใน

สนามรู้กี่คนต้�ดีหญ�า >> ต้�ดีหญ�า ใชิ�เครู้�องต้�ดีหญ�าเครู้�องต้�ดีหญ�า >> ต้�ดีหญ�า ที*าให�หญ�าที��ส�งถุ�กี่ต้�ดี

Page 11: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

(Problem)

Solution Space

Problem Space

Page 12: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างป(ญหากี่�บื้กี่ารู้มองป(ญหาแบื้บื้เกี่%า• ป(ญหากี่ารู้หาพื้�นที��รู้�ปส��เหล��ยมผืนผื�าใดีๆ

– สำามาร์ถูหาพั�*นที่ �สำ �เหล �ย์มผื�นผื'าโดย์ใช่'สำ�ตร์ พื้�นที��ส��เหล��ยม = กี่ว�าง x ยาว

– ดงน*น ต'องที่ร์าบ ความกี่ว�าง และ ความยาว ขีองสำ �เหล �ย์มเสำ ย์ก�อน

(

)

= x

ขี��นต้อนกี่ารู้หาพื้�นที��รู้�ปส��เหล��ยมผืนผื�า

Page 13: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างป(ญหากี่�บื้กี่ารู้มองป(ญหาแบื้บื้ใหม%1 .ในร์ะบบน *จำะต'องปีร์ะกอบด'วย์ว�ต้ถุ�ที��จำ*าเป/นใด

บ'าง - หาว�ต้ถุ�ที��เกี่��ยวขี�อง เช่�น สำ �เหล �ย์ม คำวาม

กว'าง คำวามย์าวและพั�*นที่ � - ต้�ดีว�ต้ถุ�ที��ม�ล�กี่ษณะเหมอนกี่�นออกี่ - ว�เครู้าะห1ล�กี่ษณะขีองแต้%ละว�ต้ถุ� เช่�น

สำ �เหล �ย์มคำวร์ม สำ�วนปีร์ะกอบเปี1นต�าแหน�ง คำวามกว'าง คำวามย์าว และพั�*นที่ � เปี1นต'น ดงน*นเร์าสำามาร์ถูร์วม พั�*นที่ � คำวามกว'างและคำวามย์าว เปี1นขีองสำ �เหล �ย์ม

- ว�เครู้าะห1พื้ฤต้�กี่รู้รู้มขีองแต้%ละว�ต้ถุ� ตอนน *ม วตถู)เด ย์วสำ �เหล �ย์มอาจำจำะต'อง คำ�านวณ์เสำ'นร์อบร์�ปี คำ�านวณ์พั�*นที่ � วาดตวเอง เปี1นต'น

Page 14: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างป(ญหากี่�บื้กี่ารู้มองป(ญหาแบื้บื้ใหม%• ว�ต้ถุ�ส��เหล��ยมผืนผื�า

ความกี่ว�าง

ความยาว

พื้�นที��

Page 15: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างป(ญหากี่�บื้กี่ารู้มองป(ญหาแบื้บื้ใหม%• พื้ฤต้�กี่รู้รู้ม– ค*านวณความยาวเส�นรู้อบื้รู้�ป

– ค*านวณพื้�นที��

– วาดีต้�วเอง

• ตอนน *ที่ร์าบว�าจำะม วตถู)ใดอย์��ในร์ะบบบ'าง ขี*นตอนต�อมา คำ�อ ต'องหาคำวามสำมพันธ์�ขีองแต�ละวตถู) แต�ในที่ �น *ม วตถู)เด ย์วจำ,งไม�ต'องที่�า

Page 16: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

แนวค�ดีขีองเอล�น เคย1 (Alan Kay)

• เปี1นผื�'หน,�งที่ �พัฒนาภาษา small Talk ซั,�งเปี1นต'น แบบขีองการ์เขี ย์นโปีร์แกร์มเช่-งวตถู) ได'ให'น-ย์ามขีอง

ภาษาเช่-งวตถู)ไว'ดงน *–ที่)กๆ สำ-�งเปี1นวตถู)– โปีร์แกร์ม คำ�อ กล)�มขีองวตถู)ที่ �สำ�งสำาร์บอกกนเพั��อ

ที่�างาน– วตถู)แต�ละวตถู)ม หน�วย์คำวามจำ�า– วตถู)ต'องม ช่น-ด– วตถู)ที่ �จำดอย์��ในปีร์ะเภที่เด ย์วกนย์�อมได'ร์บขี�าวสำาร์

เหม�อนกน

Page 17: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ที�กี่ๆ ส��งเป/นว�ต้ถุ�

• องคำ�ปีร์ะกอบขีองโปีร์แกร์มคำอมพั-วเตอร์�ที่)กๆสำ�วนจำะต'องเปี1นวตถู)

• ซั,�งกฎขี'อน *เองที่ �ที่�าให'ล�ามแปีลภาษาสำ�วนมากร์วมที่*งภาษาจำาวา (JAVA) ด'วย์ ไม�เปี1นภาษาเช่-งวตถู)แบบบร์-สำ)ที่ธ์-@

• เพัร์าะในล�ามแปีลภาษา (JAVA) ย์งม บางสำ�วนที่ �ไม� เปี1นวตถู) เช่�น การ์ก�าหนดตวแปีร์ เปี1นต'น

Page 18: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

โปรู้แกี่รู้มคอกี่ล�%มขีองว�ต้ถุ�

• โปีร์แกร์มในคำวามหมาย์ขีองการ์เขี ย์นโปีร์แกร์มเช่-ง วตถู) คำ�อ กล)�มขีองวตถู)ที่ �สำ�งขี'อคำวาม

ขี�าวสำาร์(Message) ถู,งกนและกนเพั��อบอกให'วตถู)ที่�างาน

(Object) (Object)(Message)

Page 19: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ว�ต้ถุ�ม�หน%วยความจำ*า

• วตถู)ในคำวามหมาย์ขีองการ์เขี ย์นโปีร์แกร์มเช่-งวตถู) จำะต'องม หน�วย์คำวามจำ�าขีองตวเอง คำ�อ สำ�วนที่ �เก<บ

ขี'อม�ลสำ�วนขีองวตถู)น*นๆ เองซั,�งเร์ ย์กว�าattribute

• สำ�วนขีองขี'อม�ลน *อาจำจำะปีร์ะกอบขี,*นจำากวตถู)อ��นๆได'

• เปี1นที่ �มาขีองการ์เก-ดคำ)ณ์สำมบต-การ์ถู�าย์ที่อดและคำ)ณ์สำมบต-ขีององคำ�ปีร์ะกอบคำอมโพัสำ-ต

Page 20: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ว�ต้ถุ�ม�หน%วยความจำ*า

(Object)

Attribute

Page 21: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

หน%วยความจำ*าคอมพื้�วเต้อรู้1

CPU RAM

ROM

DISK

Page 22: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ว�ต้ถุ�จำะต้�องจำ�ดีอย�%ในกี่ล�%มหรู้อชิน�ดี

• ช่น-ดขีองวตถู) คำ�อ คลาส (Class)• ในการ์เขี ย์นโปีร์แกร์มเช่-งวตถู)จำะต'องเขี ย์นคำลาสำขี,*น

มาก�อนเสำมอ แล'วจำ,งจำะสำร์'างวตถู)จำากคำลาสำ ดงน*นวตถู)จำ,งจำะต'องอย์��ในคำลาสำใดคำลาสำหน,�ง

Object

ObjectObject

Object Object

Object

(Class)

Page 23: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ว�ต้ถุ�จำะต้�องจำ�ดีอย�%ในกี่ล�%มหรู้อชิน�ดี

• ดงน*น คำลาสำ เปีร์ ย์บเหม�อน แม�พั-มพั�• สำ�วนวตถู) คำ�อ สำ-�งที่ �เก-ดจำากแม�พั-มพั� วตถู)ที่ �เก-ดจำาก

คำลาสำเด ย์วกนจำ,งม คำ)ณ์สำมบต-พั�*นฐานเหม�อนกน

เขี�ยน เขี�ยน

เขี�ยน

Page 24: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างชิน�ดีขีองว�ต้ถุ�และว�ต้ถุ�

MobilePhoneString

bandnameButton buttonScreen screenAntenna antennaSimm simNet

call()receive()hangup()sendSMS()

Siemens

Ericsson

Nokia

Page 25: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ว�ต้ถุ�ชิน�ดีเดี�ยวกี่�นย%อมไดี�ขี%าวสารู้เหมอนกี่�น• วตถู)ที่ �อย์��ในปีร์ะเภที่เด ย์วกนย์�อมได'ขี�าวสำาร์เหม�อนกน

คำ)ณ์สำมบต-ขี'อน *ที่�าให'การ์เขี ย์นโปีร์แกร์มเช่-งวตถู)ม ปีร์ะสำ-ที่ธ์-ภาพัเพั-�มขี,*นเพัร์าะช่น-ดขีองวตถู)ม-ได'ก�าหนดหร์�ออย์��

อย์�างโดดๆ แต�สำามาร์ถูจำ�ดีเป/นกี่ล�%ม • ผื�'เขี ย์นคำ�าสำ�งสำามาร์ถูก�าหนดช่น-ดย์�อย์ ๆ ขีองวตถู)ได'อ ก เช่�น– คำลาสำ คำ�อ shape สำามาร์ถูแตกออกเปี1นช่น-ดที่ �จำ�าเพัาะลง

ไปีเปี1น Circle, Triangle, Rectangle เปี1นต'น– ดงน*น เม��อวตถู)ในคำลาสำ Circle สำามาร์ถูได'ร์บขี�าวสำาร์

เหม�อนกบ Triangle และ Rectangle

Page 26: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ว�ต้ถุ�ชิน�ดีเดี�ยวกี่�นย%อมไดี�ขี%าวสารู้เหมอนกี่�น

text

Rectangle Class

Message1

Circle Class

Message1

Triangle Class

Message1

Shape Class

Page 27: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ค�ณสมบื้�ต้�ขีองภาษากี่ารู้โปรู้แกี่รู้มเชิ�งว�ต้ถุ�• คำ)ณ์สำมบต-ขีองภาษาที่ �เปี1นการ์โปีร์แกร์มเช่-งวตถู)

คำวร์ม คำ)ณ์สำมบต-พั�*นฐานดงต�อไปีน *– Encapsulation (การ์ห�อห)'มวตถู))– Data Hiding (การ์ซั�อนร์าย์ละเอ ย์ด)– Inheritance (การ์สำ�บที่อด)– Polymorphism (การ์พั'องร์�ปี)

Page 28: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Encapsulation (กี่ารู้ห%อห��มว�ต้ถุ�)

• คำ�อ การ์ร์วมคำ)ณ์ลกษณ์ะขีองวตถู)และพัฤต-กร์ร์ม ขีองวตถู)เขี'าไว'ด'วย์กน โดย์ก�าหนดให'เปี1นลกษณ์ะ

ช่น-ดขีองวตถู)น*นๆ

DataData

DataData

FunctionFunction

Data

Function

Data

Encapsulation

Data Data

Data Data

Function

Function

Page 29: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Data Hiding (กี่ารู้ซ่%อนรู้ายละเอ�ยดี)• คำ�อ การ์ก�าหนดร์ะดบในการ์เขี'าถู,งขี'อม�ล• เพั��อปีBองกนการ์เขี'ามาใช่'ขี'อม�ลขีองวตถู)โดย์สำ-�งอ��น

ที่ �ไม�เก �ย์วขี'องแล'วที่�าให'เก-ดการ์ผื-ดเพั *ย์นขีองการ์ ที่�างานที่*งร์ะบบ

• ดงน*นขี'อม�ลบางอย์�างไม�ย์-นย์อมให'วตถู)อ��นใดมาใช่' งานได' จำ�าเปี1นต'องซั�อนร์าย์ละเอ ย์ดตร์งจำ)ดน *เอาไว'

เพั��อให'เก-ดคำวามปีลอดภย์ขีองวตถู)และร์ะบบโดย์ ร์วมให'มากที่ �สำ)ด

Page 30: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Data Hiding (กี่ารู้ซ่%อนรู้ายละเอ�ยดี)• ตวอย์�างเช่�น

จำะเห<นว�า หมาย์เลขี เคำร์��อง และปี)Cมกดไม�

คำวร์เปีล �ย์นแปีลง ดงน*นขี'อม�ลน *จำ,งคำวร์

ซั�อนไว' แต�หน'ากาก อาจำเปีล �ย์นได' เปี1นต'น

()()

Page 31: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Inheritance (กี่ารู้สบื้ทีอดี)

• เปี1นการ์ขีย์าย์ลกษณ์ะพั-เศึษหร์�อคำวามสำามาร์ถูขีองช่น-ดวตถู)ใหม�จำากช่น-ดวตถู)พั�*นฐานให'ม ลกษณ์ะขีองเด-มและเพั-�มเต-ม

สำ-�งใหม�ๆ เขี'าไปีด'วย์

()()()

() ()()

Page 32: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Composition

• คำ)ณ์สำมบต-ขีอง Inheritance ที่�าให'การ์โปีร์แกร์มเช่-งวตถู)ม ขี'อด คำ�อ สำามาร์ถูสำร์'างงานต�างๆ ได'เร์<วเพัร์าะสำามาร์ถูน�าขีองเก�ามาใช่'งานใหม�ได' เร์ ย์กว�า “Reused”

• แต�ก<ย์งม ลกษณ์ะอ กอย์�างที่ �ช่�วย์ให'เก-ด “Reused” ได'เช่�นกน คำ�อ Composition คำ�อ การ์สำร์'างวตถู)ใดๆ ด'วย์การ์ปีร์ะกอบจำากวตถู)อ��น

Page 33: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Composition

• ตวอย์�างเช่�น นาฬิ-กา ปีร์ะกอบด'วย์ แกนนบ เฟEอง เขี<มสำ*น เขี<มย์าว หน'าปี9ด เปี1นต'น

Page 34: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

Polymorphism (กี่ารู้พื้�องรู้�ป)

• เปี1นคำ)ณ์สำมบต-ที่ �ช่น-ดขีองวตถู)ที่ �เก-ดจำากช่น-ดขีองวตถู)แม�เด ย์วกนสำามาร์ถูม คำวามสำามาร์ถูเหม�อนแม�

แต�ผืลลพัธ์�การ์ด�าเน-นงานไม�เหม�อน คำ�อ ม ลกษณ์ะ เฉพัาะตว ตวอย์�างเช่�น

() () ()

()

Page 35: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

มารู้��จำ�กี่คลาสและว�ต้ถุ�กี่�น

• คำลาสำเปี1นเหม�อนสำ�วนขีองแม�พั-มพั� เพั��อบอกลกษณ์ะว�าว�ต้ถุ�ในคลาสน *ม ล�กี่ษณะและพื้ฤต้�กี่รู้รู้มเปี1นอย์�างไร์

• วตถู)เปี1นสำ-�งที่ �ถู�กสำร์'างขี,*นมาจำากคำลาสำเพั��อใช่'งาน ก�าหนดคำ�าต�างๆ สำ�งขี'อคำวามสำ�งให'วตถู)ที่�างาน

Page 36: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

มารู้��จำ�กี่คลาสและว�ต้ถุ�กี่�น

คลาสส��เหล��ยมผืนผื�าคำ)ณ์สำมบต-:กว'าง, ย์าวเมธ์ที่อด:คำ�านวณ์พั�*นที่ �

,

()

= 2 cm, =3 cm

()

ว�ต้ถุ�A:ส��เหล��ยมผืนผื�ากว'าง 2 ย์าว 3เมธ์ที่อด:คำ�านวณ์พั�*นที่ �

Page 37: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้สรู้�างคลาส

• คลาสเปรู้�ยบื้เสมอนแม%พื้�มพื้1 วตถู)เปี1นผืล-ตผืลที่ �เก-ดจำากแม�พั-มพั�

• ดงน*นการ์ที่ �จำะสรู้�างว�ต้ถุ�ได'จำ,งจำ�าเปี1นต้�องอาศั�ยแม%พื้�มพื้1หรู้อคลาสน *

• โดย์คำลาสำจำะบ�งบอกถู,งขี'อม�ลที่ �วตถู)ที่ �อย์��ในคำลาสำน *คำวร์จำะม และพัฤต-กร์ร์มที่ �วตถู)ในคำลาสำน *สำามาร์ถูที่�าได'

Page 38: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้สรู้�างคลาส• ว�ต้ถุ� (Object) แบ�งได'เปี1น 2 ปีร์ะเภที่ คำ�อ– ส��งที��เป/นรู้�ปธรู้รู้ม (Tangible) คำ�อ สำ-�งที่ �เปี1นวตถู)

และจำบต'องได' เช่�น นกศึ,กษา ใบลงที่ะเบ ย์น ปีากกา และร์ถู เปี1นต'น

– ส��งที��เป/นนามธรู้รู้ม (Intangible) คำ�อสำ-�งที่ �ไม� สำามาร์ถูจำบต'องได' เช่�น คำะแนนร์าย์ช่��อ ว-ช่า บญ่ช่ เง-น

ฝึาก และตาร์างเที่ �ย์วบ-น เปี1นต'น• ว�ต้ถุ�ปรู้ะกี่อบื้ไปดี�วย– คำ)ณ์ลกษณ์ะ (Attribute) หร์�อขี'อม�ล (Data)– เมธ์อด (Method) หร์�อพัฤต-กร์ร์ม (Behavior)

Page 39: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างว�ต้ถุ�• น�กี่ศั7กี่ษา• คำ)ณ์ลกษณ์ะ เช่�น ร์หสำ

ช่��อ และเกร์ดเฉล �ย์• เมธ์อด เช่�น ลง

ที่ะเบ ย์น สำอบ และเด-น, ,

()()()

Page 40: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างว�ต้ถุ�• รู้ถุยนต้1• คำ)ณ์ลกษณ์ะ เช่�น ย์ �ห'อ

ร์) �น และสำ • เมธ์อด เช่�น เคำล��อนที่ �

หย์)ดและเล *ย์ว, ,

()()()

Page 41: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างว�ต้ถุ�• ส�น�ขี• คำ)ณ์ลกษณ์ะ เช่�น ช่��อ

พันธ์)� และสำ • เมธ์อด เช่�น เห�า คำลาน

และกร์ะด-กหาง, ,

()()

()

Page 42: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

เปรู้�ยบื้เที�ยบื้คลาสกี่�บื้ว�ต้ถุ�

Class Object

Page 43: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

เปรู้�ยบื้เที�ยบื้คลาสกี่�บื้ว�ต้ถุ�

Page 44: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

เปรู้�ยบื้เที�ยบื้คลาสกี่�บื้ว�ต้ถุ�

Page 45: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

แนวค�ดีอ�ต้ปรู้ะโยชิน1จำากี่กี่ารู้โปรู้แกี่รู้มเชิ�งว�ต้ถุ�• การ์ซั�อนร์าย์ละเอ ย์ด• การ์เช่��อมต�อ• การ์น�าวตถู)มาใช่'ใหม�• การ์พั'องร์�ปี: หน,�งร์�ปีหลาย์พัฤต-กร์ร์ม

Page 46: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้ซ่%อนรู้ายละเอ�ยดี (Information Hiding)• ม ผื�'สำงเกตเห<นว�าในช่ ว-ตปีร์ะจำ�าวนน*น ไม�จำ�าเปี1นต'อง

ที่ร์าบหร์�อร์� 'ที่)กเร์��องก<สำามาร์ถูใช่'งานสำ-�งขีองน*นๆ ได' เช่�น

โทีรู้ที�ศัน1ที��ม�อย�%ต้ามบื้�านไม%ต้�องทีรู้าบื้กี่ารู้ที*างานขีอง

อ�ปกี่รู้ณ1ภายใน แต้%กี่8สามารู้ถุเป9ดีเครู้�องและดี�รู้ายกี่ารู้โปรู้ดีไดี�เพื้�ยงรู้��ว�ธ�กี่ารู้กี่ดีป�:มต้%างๆ

Page 47: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้เชิ�อมต้%อ (Interface)

• โดย์ปีกต-การ์ เช่��อมต�อร์ะหว�างผื�'ใช่'กบคำอมพั-วเตอร์� เร์ ย์กว�าUser interface

แต้%ค*าว%าอ�นเต้อรู้1เฟส ส*าหรู้�บื้ว�ต้ถุ�คอ ส%วนที��บื้อกี่

ว%าว�ต้ถุ�น��นให�บื้รู้�กี่ารู้หรู้อสามารู้ถุที*าอะไรู้ไดี�บื้�าง

Page 48: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้น*าว�ต้ถุ�มาใชิ�ใหม% (Reusable)

• จำ)ดปีร์ะสำงคำ�ใหญ่�ขีองการ์เขี ย์นโปีร์แกร์มเช่-งวตถู) คำ�อ การ์น�าสำ�วนต�างๆ ขีองวตถู)ที่ �สำร์'างขี,*นกลบมา

“ใช่'ใหม�หร์�อที่ �เร์ ย์กในภาษาองกฤษว�า Reuse”• เม��อม วตถู)ถู�กสำร์'างขี,*นมาก<สำามาร์ถูน�าวตถู)ต�างๆ

มาปีร์ะกอบกนเปี1นวตถู)อ กช่น-ดหน,�งได' เพั��อให'วตถู) ใหม�ม คำวามสำามาร์ถูมากกว�าเด-ม

• ตวอย์�าง เช่�น กร์ณ์ ขีองร์ถูย์นต�สำามาร์ถูปีร์ะกอบ ขี,*นจำาก เคำร์��องย์นต� ตวถูง ปีร์ะต� และล'อ เปี1นต'น

Page 49: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

ต้�วอย%างว�ต้ถุ�ที��เกี่�ดีจำากี่ว�ธ�คอมโพื้ส�ต้

Page 50: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้พื้�องรู้�ป (Polymorphism)

• การ์พั'องร์�ปี คำ�อ คำ)ณ์สำมบต-การ์ถู�าย์ที่อด• คำ)ณ์สำมบต-การ์ถู�าย์ที่อดย์�นย์นได'ว�าคำลาสำล�กที่ �เก-ดจำาก

คำลาสำแม�เด ย์วกนย์�อมม คำ)ณ์สำมบต-เหม�อนกน

• เปี1นที่ �มาขีองหน,�งร์�ปีหลาย์พัฤต-กร์ร์ม

text

Rectangle Class

Message1

Circle Class

Message1

Triangle Class

Message1

Shape Class

Page 51: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้ถุ%ายทีอดีให�เกี่�ดีล�กี่ษณะขีองพื้�องรู้�ป

Rectangle Class

draw()erase()

Circle Class

draw()erase()

Triangle Class

draw()erase()

Shape Class

draw()erase()

Page 52: รายวิชา  5653309 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

กี่ารู้ถุ%ายทีอดีให�เกี่�ดีล�กี่ษณะขีองพื้�องรู้�ป