รายวิชา 5653309...

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

Upload: jade-french

Post on 03-Jan-2016

66 views

Category:

Documents


3 download

DESCRIPTION

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

TRANSCRIPT

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)

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