12
บบบบบบบบบบ บบบบบบบบบบบบ บบบบบบบบบบบ บบบ

บทที่ 6 คลาสและการเขียนโปรแกรม

Embed Size (px)

Citation preview

Page 1: บทที่ 6 คลาสและการเขียนโปรแกรม

บทท�� 6คลาสและการเขี�ยนโปรแกรมวั�ตถุ�เบ��อง

ต�น

Page 2: บทที่ 6 คลาสและการเขียนโปรแกรม

• โปรแกรมภาษาเชิ"งวั�ตถุ� (Object-Oriented Programming Language : OOPL) ในการเขี�ยนโปรแกรมแบบดั้��งเดั้"มขีองเราจะเสม�อนก�บการเขี�ยนค&าส��งท��จะส��งให้�เคร��องคอมพิ"วัเตอร)ท&างานตามท��เราต�องการซึ่+�งโดั้ยร,ปแบบเห้ม�อนก�บผู้,�พิ�ฒนาโปรแกรมจะพิ,ดั้ห้ร�อออกค&าส��งในเชิ"งขีองกร"ยาห้ร�อการกระท&าให้�ก�บเคร��องคอมพิ"วัเตอร)ให้�ท&างานตามท��เราส��ง เชิ/น พิ"มพิ)ขี�อควัามบนห้น�าจอ ร�บขี�อม,ลจากค�ย)บอร)ดั้เป0นต�น ในท��น��ผู้,�เขี�ยนโปรแกรมท&าการเขี�ยนค&าส��งเพิ��อท��จะส��งให้�เคร��องท&างานพิ"มพิ)ขี�อควัามออกบนห้น�าจอห้ร�อร�บขี�อม,ลจากค�ย)บอร)ดั้ ส&าห้ร�บการเขี�ยนห้ร�อพิ�ฒนาโปรแกรมในอ�กร,ปแบบห้น+�งเป0นการมองโปรแกรมในล�กษณะขีองกล�/มก�อนขีองวั�ตถุ�ท��ประกอบดั้�วัยต�วัขี�อม,ลและค&าส��งการจ�ดั้การห้ร�อวั"ธี�การท��จะจ�ดั้การก�บขี�อม,ลเห้ล/าน��น เราเร�ยกโปรแกรมในล�กษณะน��วั/าเป0นแกรมเชิ"งวั�ตถุ�(Object Oriented Programming) ห้ร�อ OOP ซึ่+�งจะคล�ายคล+งห้ร�อเป0นการเล�ยนแบบโลกแห้/งควัามเป0นจร"งโดั้ยมองท�กๆส"�งเป0นวั�ตถุ� 

Page 3: บทที่ 6 คลาสและการเขียนโปรแกรม

• การเขี�ยน program แบบ OOP ม�ล�กษณะ 5 ประการ- ท�กส"�งท�กอย/างค�อ object

ในแง/ห้น+�งเราก6อาจต�ควัามวั/า object เป0นต�วัแปรท��ม�ควัามพิ"เศษอย,/ในต�วัเอง ค�อ นอกจากเก6บค/าต/าง ๆ ไดั้�แล�วั เราย�งสามารถุท��จะส� �ง (request) ให้� object ท&างาน (operation) ต/าง ๆ ท��เก��ยวัก�บต�วัม�นเองดั้�วัย- Program ประกอบไปดั้�วัย object ท��ต/างก6ส/งขี�อควัาม (message) บอกให้�ก�นและก�นวั/าต�องท&าอะไร การส/ง message ก6ค�อการส/ง request ห้ร�อการเร�ยกใชิ� function ขีอง object น��น ๆ- Object แต/ละต�วัม�ห้น/วัยควัามจ&าท��เต6มไปดั้�วัย object อ��น ๆเราสร�าง object จาก object ต�วัอ��นท��ม�อย,/แล�วั- Object ม� ร,ปแบบ ห้ร�อ ชิน"ดั้ ขีองต�วัเอง (type/class)

- Object ท��ต�นตอมาจาก type แบบเดั้�ยวัก�นสามารถุท��จะร�บขี�อม,ลซึ่+�งก�นและก�นไดั้�

Page 4: บทที่ 6 คลาสและการเขียนโปรแกรม

แต/ละ Object สามารถุต"ดั้ต/อส��อสารก�นไดั้�โดั้ยการส/ง Message ไปท�� Object อ��น

Object 1

data

Object 2

data

Object 3

data

Object 4

data

Page 5: บทที่ 6 คลาสและการเขียนโปรแกรม

Classห้มายถุ+งโครงสร�างขีอง object โดั้ย class เป0นต�วัก&าห้นดั้วั/า object น��นจะม� data ห้ร�อค�ณล�กษณะอะไร บ�าง และม� method อะไรบ�าง เปร�ยบเสม�อนพิ"มพิ)เขี�ยวั (template) ขีองอ9อปเจ6ค

วั�ตถุ� (Object) ค�อ ต�วัแทนขีองบ�คคล สถุานท�� ห้ร�อส"�งขีองท��สนใจในเห้ต�การณ)ห้น+�ง ซึ่+�งอาจจ�บต�องไดั้�ห้ร�อจ�บต�องไม/ไดั้� Object เป0นองค)ประกอบส&าค�ญขีองการเขี�ยนโปรแกรมท��สามารถุร�บค/าและแสดั้งส/งค/าไดั้� และจากน"ยาม Object ค�อต�วัแทนขีองส"�งขีองท��อย,/ในโลกขีองควัามเป0นจร"ง ซึ่+�งอาจเป0นส"�งท��จ�บต�องไดั้�ห้ร�อไม/ไดั้� จะต�องม�ค�ณล�กษณะ (Attribute) ท��บ/งบอกวั/าเป0น Object ขีองอะไร และม�พิฤต"กรรม (Behavior) ท��บ/งบอกให้�ทราบวั/า Object น��นท&าอะไร ดั้�งน��น Object จะสามารถุตอบสนองต/อส"�งท��กระท&าในการร�องขีอส"�งต/างๆ ไดั้�

Page 6: บทที่ 6 คลาสและการเขียนโปรแกรม

ล�กษณะท�� Object 1. identity ค�อ เอกล�กษณ)เฉพิาะต�วัท��ท&าให้� Object ขีองคลาสห้น+�งๆ แตกต/างจาก Object ขีองอ�กห้น+�งคลาสห้น+�ง ซึ่+�งในภาษาจาวัา identity จะห้มายถุ+ง Attribute ห้ร�อต�วัแปร (Variable)

2. State ค�อสถุานะขีอง Object ณ เวัลาห้น+�งๆ ซึ่+�งสามารถุเปล��ยนแปลงไดั้�เม��อม�การกระต��นจาก Object อ��นโดั้ยการส/ง Message ในภาษาจาวัา State จะห้มายถุ+งค/าขีอง Attribute (Value of Attribute)

3. Behavior ค�อ พิฤต"กรรมท�� Object กระท&าและตอบสนองท�กคร��ง โดั้ยการกระต��น Object อ��นโดั้ยการส/ง Message ต/อก�นในภาษาจาวัา Behavior ก6ค�อ Method

Page 7: บทที่ 6 คลาสและการเขียนโปรแกรม

การ run-time โดั้ยแต/ละ object จะม�ขี�อม,ลเฉพิาะขีองต�วัเอง ท&าให้� object แต/ละ object ขีอง class ซึ่+�งใชิ� source

code เดั้�ยวัก�นม�ค�ณล�กษณะและค�ณสมบ�ต"ท��แตกต/างก�นEncapsulation - การป=ดั้บ�งขี�อม,ล เป0นวั"ธี�การก&าห้นดั้ส"ทธี"ในการเขี�าถุ+งขี�อม,ล ห้ร�อการกระท&าก�บ อ6อบเจกต) ขีอง คลาสน��นๆ ท&าให้�แน/ใจไดั้�วั/าขี�อม,ลขีองอ6อบเจกต)น��นจะถุ,กเปล��ยนแปลงแก�ไขี

ผู้/านทาง methods ห้ร�อ properties ท��อน�ญาตเท/าน��นInheritance - การส�บทอดั้ค�ณสมบ�ต" เป0นวั"ธี�การสร�าง คลาสย/อย ท��เร�ยกวั/าซึ่�บคลาส (subclass) ซึ่+�งจะเป0นก&าห้นดั้ประเภท

ขีองวั�ตถุ�ให้�จ&าเพิาะเจาะจงขี+�น ซึ่+�ง ซึ่�บคลาส จะไดั้�ร�บถุ/ายทอดั้ค�ณสมบ�ต"ต/างๆมาจากคลาสห้ล�กดั้�วัย

Abstraction - นามธีรรม เป0นการแสดั้งถุ+งค�ณล�กษณะและพิฤต"กรรมขีอง object เท/าท��จ&าเป0นต�องร�บร, �และใชิ�งาน โดั้ยซึ่/อน

ส/วันท��เห้ล�อเอาไวั�เพิ��อไม/ให้�เก"ดั้ควัามส�บสนPolymorphism - ภาวัะท��ม�ห้ลายร,ปแบบ เป0นวั"ธี�การก&าห้นดั้ร,ปแบบการกระท&าท��เห้ม�อนก�นแต/ไดั้�ผู้ลท��แตกต/างก�น เชิ/น การเปล/งเส�ยง เป0น method ห้ล�กขีอง คลาส ส"�งม�ชิ�วั"ต ซึ่+�งม�คลาส มน�ษย) และคลาสส�น�ขี เป0น ซึ่�บคลาส แต/ผู้ลขีองการเปล/งเส�ยงขีองอ6อบเจ

กต)จากคลาสท��งสองจะออกมาไม/เห้ม�อนก�น

Page 8: บทที่ 6 คลาสและการเขียนโปรแกรม

ค�ณล�กษณะขีองการเขี�ยนโปรแกรมเชิ"งวั�ตถุ� 1) การห้/อห้��ม (Encapsulation)

ห้มายถุ+งการจะเร�ยกใชิ�ค�ณล�กษณะขีองอ9อปเจ6ค จะท&าไดั้�โดั้ยการเร�ยกผู้/านเมธีอดั้เท/าน��น

ห้ล�กการขีองการห้/อห้��ม ค�อการก&าห้นดั้ให้�ค�ณล�กษณะขีองอ9อปเจ6คม�ค�ณสมบ�ต"เป0น private และก&าห้นดั้ให้�เมธีอดั้ม�ค�ณสมบ�ต"เป0น public โดั้ยม�เมธีอดั้ get/set ไวั�เพิ��อเขี�าถุ+ง data น��นๆ จะเร�ยกวั/า class น��นๆ เป0น Full Encapsulation class

Page 9: บทที่ 6 คลาสและการเขียนโปรแกรม

2) การส�บทอดั้ (Inheritance)ห้มายถุ+งการน"ยามคลาสให้ม/จากคลาสท��ม�อย,/

แล�วัโดั้ยคลาสให้ม/สามารถุท��จะน&าค�ณล�กษณะและเมธีอดั้ขีองคลาสเดั้"มมาใชิ�ไดั้�

ค�อ Class ห้น+�งๆสามารถุส�บทอดั้ค�ณสมบ�ต"บางประการจาก Class อ��น แล�วัเพิ"�มค�ณสมบ�ต"เฉพิาะขีอง Class น��นเขี�าไป- Class ท��ไดั้�ร�บการส�บทอดั้ค�ณสมบ�ต"เร�ยกวั/า Subclasses- Class ท��เป0นต�นแบบเร�ยกวั/า Superclassเป0นการชิ/วัยให้�ไม/ต�องพิ�ฒนา ส/วันท��ซึ่&�าห้ลายๆรอบ (Reusable)Class ห้น+�งๆจะม� Superclass ไดั้�เพิ�ยง Class เดั้�ยวัเท/าน��น (Single Inheritance)ในภาษาจาวัา จะใชิ�ค�ย)เวั"ร)ดั้ extends เพิ��อระบ�การส�บทอดั้

Page 10: บทที่ 6 คลาสและการเขียนโปรแกรม

3) การม�ไดั้�ห้ลายร,ปแบบ (Polymorphism)

ห้มายถุ+ง การท��สามารถุตอบสนองต/อขี/าวัสาร (เมธีอดั้ ) เดั้�ยวัก�นดั้�วัยวั"ธี�การท��ต/างก�น และสามารถุก&าห้นดั้ออปเจ6คไดั้�ห้ลายร,ปแบบ- Overridden method

- Dynamic Binding

ต�วัอย/างท��เน�นโปรแกรมแบบ OOP

1) Object แรกขีอง class ม�กชิ��อ main โปรแกรมน��ส� �น และง/ายท��ส�ดั้ >> สร�างกล/อง 1 กล/องในกล/องม� object ท&างาน พิ"มพิ) x เพิ�ยงอ�กษรเดั้�ยวั >> มองวั/า class ก6ค�อกล/อง แต/ละกล/องค�อท��เก6บ object

class x {

public static void main(String args[]) {

System.out.println("x");

}

}

Page 11: บทที่ 6 คลาสและการเขียนโปรแกรม

2) เร�ยก object ใน class เดั้�ยวัก�น โดั้ยมองวั/า class เสม�อนกล/องเก6บ object มากมาย >> สร�างกล/อง 1 กล/องในกล/องม� 2 object และ object 1 เร�ยก object 2 มาท&างาน

class x { public static void main(String args[]) { int i = 1; System.out.println(i); ok(); } static void ok() { System.out.println("xx"); }

}// Result of this program// 1// xx

Page 12: บทที่ 6 คลาสและการเขียนโปรแกรม

ผู้,�จ�ดั้ท&านาย นราธิ�ป โรจนสุ�วรพงค์� เลขที่�� 1

นาย อนพ�ช บ่�อพลอย เลขที่�� 2นาย ว�ฒิ�ภั�ที่ร เถื่ �อนค์!า เลขที่�� 3นาย สุ�ที่ธิ�เดช ผิ�วอ�อนด� เลขที่�� 8

นาย ป$ญญา จ�นที่ยา เลขที่�� 11นาย ว�ชา มโนม�ยเพ��มพ'น เลขที่�� 13

นายศิ�ร�ว�ฒิน� พ�ที่ธิอ�นที่ร�ศิร เลขที่�� 14ม�ธิยมศิ)กษาป,ที่�� 62/