Document not found! Please try again

PHP+OOP.pdf - Google Drive

0 downloads 119 Views 143KB Size Report
Whoops! There was a problem loading more pages. Whoops! There was a problem previewing this document. Retrying... Downlo
นางสาวพจมาน ไชยประชาติ รหัสนักศึกษา 59621204031-2

การเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming) หรือ OOP นั้นเปนการเขียน โปรแกรมโดยมองทุกอยางเปนเหมือนวัตถุ (Object) ซึ่งวัตถุจะประกอบไปดวยขอมูล ในรูปแบบของคุณสมบัติ (Property) และกระบวนการทํางาน (Method) คุณสมบัติที่สําคัญของออบเจ็คคือ เมธอดของมันจะทํางาน และจัดการกับ Property ของออบเจ็คนั้น ในภาษา PHP นั้นสนับสนุนการเขียนโปรแกรมเชิงวัตถุตั้งแต PHP 5 ซึ่งเปนการเปลี่ยนแปลงที่สําคัญ ของภาษา PHP ในภาษาที่รองรับการเขียนโปรแกรมเชิงวัตถุนั้น โปรแกรมคอมพิวเตอรจะถูกออกแบบให จัดการกับออบเจ็คที่อาจจะมีปฏิสัมพันธกับออบเจ็คอื่น ในภาษา PHP นั้นออบเจ็คถูกสรางมาจากคลาส (Class bass) ซึ่งหมายความวามันเปนตัวแปรของคลาส (Class instance) หรือกลาวอีกนัยหนึ่ง คลาสเปน ประเภทขอมูลของออบเจ็ค ออบเจ็คและคลาส ภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุมักจะใชคุณสมบัติการสืบทอด (Inheritance) ซึ่งเปนการ นําโคดเดิมกลับมาใชและเพิ่มเติมการทํางานทั้งในรูปแบบของคลาสและ Prototype ตอไปนี้เปนแนวคิดในการ ทํางานของออบเจ็คและคลาสในภาษา PHP คลาส คื อ ประเภทข อมู ล ที่ นํ า ไปสรางออบเจ็ค คลาสถูก กําหนดขึ้น มาโดยมี ส มาชิกที่เ ป น ตั ว แปร ฟงกชัน คอนสตรัคเตอรและ Destructor หรือกลาวอีกนัยหนึ่งคลาสเปนเทมเพลตในการนําไปสรางออบเจ็ค โดยมีการกําหนดคาเริ่มตนและฟงกชันการทํางาน ออบเจ็ค คือตัวแปรประเภทหนึ่งที่สรางมาจากคลาสหรือ Class Instance ซึ่งออบเจ็คมีการอางถึง สมาชิกของมันที่เปนตัวแปรและเมธอด ซึ่งในภาษา PHP นั้นทุกอยางตางก็เปนออบเจ็คไมวาจะเปน ตัวแปร อาเรย หรือฟงกชัน คลาสเปนเหมือนประเภทขอมูลที่นํามาสรางออบเจ็ค ดังนั้นออบเจ็คหลายออบเจ็คอาจจะ มีการสรางมาจากคลาสเดียวกัน (Class base)

ในการเขียนโปรแกรมเชิงวัตถุ มีคุณสมบัติที่สําคัญที่ทําใหการเขียนโปรแกรมมีประสิทธิภาพมากขึ้น มันชวยใหโคดของคุณยืดหยุน ปลอดภัย และการใชงานโคดเดิมซ้ําๆ โดยไมตองเขียนขึ้นใหม Inheritance Inheritance คือคุณสมบัติการสืบทอด โดยการที่คลาสหนึ่งจะถายทอดโครงสรางของคุณสมบัติ (Property) และกระบวนการทํางาน (Methods) ไปยังคลาสอื่น นี่เปนสิ่งที่จะชวยใหการเขียนโปรแกรมนํา โคดเดิมกลับมาใชและพัฒนาเพิ่มเติมจากคลาสเดิมได คลาสที่สืบทอดคุณสมบัติไปยังคลาสอื่นเราเรียกวาคลาส หลัก (Parent class) และคลาสที่ถูกถายทอดเรียกวาคลาสยอย (Sub class) การสืบทอดนั้นเปนแนวคิดมาจากการดําเนินชีวิตประจําวัน บริษัท A ไดทําการออกแบบรถยนตโดยมี คุณสมบัติและการทํางานที่รถยนตจะทําได สิ่งเหลานี้ถูกกําหนดเปนคลาสของรถยนต คลาสของรถยนตนี้จะ ถูกนําไปสรางหลายโมเดล และทุกโมเดลจะมีการทํางานหลักที่สืบทอดมาจากคลาสของรถยนต เชน การ สตารทเครื่ อง การดับ เครื่อง การวิ่งไปขางหนา การเบรก เปนตน และแตล ะโมเดลอาจจะมีการปรับ แตง คุณสมบัติและเพิ่มการทํางานบางอยางที่นอกเหนือจากที่กําหนดไวในคลาสของรถยนต (Parent class) ได Encapsulation Encapsulation คือคุณสมบัติในการปกปดขอมูลโดยเปนกลไกลในการเขาถึงขอมูลภายในออบเจ็ค จากภายนอก ในการเขียนโปรแกรมเชิงวัตถุในภาษา PHP โดยทั่วไปแลวขอมูลภายในคลาสจะไมถูกปกปดโดย อัตโนมัติ คุณสมบัตินี้เกี่ยวของกับตัวกําหนดการเขาถึง (Access specifier) ซึ่งเปนคําสั่งในการควบคุมการ เขาถึงขอมูลภายในออบเจ็ค เชน คําสั่ง public protected และ private Encapsulation ชวยใหขอมูลที่ไมจําเปนถูกปกปดไวแตมันยังมีอยู ยกตัวอยางเชน บนหนาปดของ รถยนตนั้นจะนําเฉพาะขอมูลที่จําเปนมาแสดง เชน จํานวนรอบ ความเร็วของการวิ่ง ปริมาณน้ํามันเชือเพลิ ่ ง หรือสัญญาณไฟตางๆ ซึ่งในความเปนจริง ในการที่จะไดขอมูลเหลานี้มานั้น อาจจะใขขอมูลหรือวิธีการทํางาน ตางๆ มากมาย ดังนั้นแนวคิดนี้จึงทําใหการเขียนโปรแกรมสามารถกําหนดการเขาถึงตามบริบทของการใชงาน ได Polymorphism Polymorphism คือคุณสมบัติของการมีไดหลายรูปแบบ (Many form) ของออบเจ็ค ในการเขียน โปรแกรมเชิงวัตุ Polymorphism คือการที่คลาสใช Interfaces หรือสืบทอดมาจากคลาส (Abstract class) เดียวกันสําหรับกําหนดการทํางานของคลาส ตัวอยางของเชน คลาสของรูปทรงในสองมิติ (Sharp) ใชในการ กําหนดคุณสมบัติและการทํางานของรูปทรง เชน การวาดรูปทรง การหาขนาด หรือการหาพื้นที่ ซึ่งสิ่งเหลานี้ เปนสิ่งที่รูปทรงทุกประเภทจะตองมี มันจึงเปน Interfaces เดียวกัน และเรานําคลาสของรูปทรงนี้ไปสราง รูปทรงตางๆ เชน ทรงกลม สามเหลี่ยม สี่เหลี่ยม เปนตน เมื่อเราเรียกใชเมธอดในการวาดรูปทรง ผลลัพธที่ได

จะเป น รู ป ทรงต า งๆ โดยการเรีย กใช เ มธอดเดีย วกันแตการทํางานตางกัน เพราะวารูป ทรงแตล ะแบบถูก กําหนดการทํางานของมันเอง และมันยังสามารถเรียกใชงานการทํางานใน Parent class ได รูปแบบของโคด OOP ในภาษา PHP ในการเขียนโปรแกรมเชิงวัตถุ เรามองทุกอยางเปนเหมือนออบเจ็คในโลกจริง ในภาษา PHP ทุกอยาง นั้นเปนออบเจ็ค เชน ตัวแปรประเภทตาง ฟงกชัน และโครงสรางทางภาษา เราจะยกตัวอยางแนวคิดและการ มองในรูปแบบของการเขียนโปรแกรม เพราะเรามองทุกอยางเปนออบเจ็ค เราใหรถยนตเปนออบเจ็ค ซึ่งจะประกอบไปดวยคุณสมบัติคือ สี ชื่อ โมเดล ความจุของเชื้อเพลง จํานวนลอ หมายเลขตัววัดระยะทาง และการทํางานคือ สตารทเครื่อง หยุด เครื่อง วิ่ง การเลี้ยวซาย การเลี้ยวขวา การเบรก เปนตน ซึ่งเมื่อเรานําขอกําหนดเหลานี้มาสรางในรูปแบบการ ทํางานของคลาสในภาษา PHP จะไดดังนี้ class Car { // Properties public $name; public $model; public $color; public $NumberOfDoor; public $fuelCapacity; public $gaugeNumber; // Methods public function startEngine() { // Code to start engine } public function stopEngine() { // Code to stop engine } public function run() { // Code to run a car } public function turnLeft() { // Code to turn left } public function turnRight() { // Code to turn left }

public function brake() { // Code to brake a car } }

ในตัวอยาง เปนการสรางคลาส Car ซึ่งเปนคลาสสําหรับรถยนตที่ประกอบไปดวยคุณสมบัติและการ ทํางาน โดยทั่วไปแลวในการเขียนโปรแกรมเชิงวัตถุ คลาสมักจะนําไปแสดงผลเปน UML diagram ซึ่งเปนการ กําหนดคุณสมบัติและการทํางานของภาพดวยรูปภาพ รูปขางลางนี้เปน UML diagram สําหรับคลาสรถยนต จากโคดตัวอยางขางบน

ในรูปภาพเปน UML diagram จากคลาส Car ซึ่ง UML diagram ก็คือแผนภาพที่งายตอการเขาใจ และใชสําหรับการออกแบบคลาสเพื่อนําไปพัฒนาและสรางความสัมพันธระหวางคลาสกับคลาสอื่น เชน การ สืบทอด การใช Interfaces แผนภาพนี้แสดงรายละเอียดที่กําหนดภายในคลาสอยางคราวๆ เชน คุณสมบัติ และการกําหนดชื่อและประเภทของเมธอด เปนตน ในบทนี้ คุณไดเรียนรูเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุในภาษา PHP เราไดพูดเกี่ยวกับแนวคิดของ คลาสและออบเจ็ค รวมถึงคุณสมบัติที่สําคัญตางๆ ในการเขียนโปรแกรมเชิงวัตถุ เชน Inheritance Encapsulation และ Polymorphism ในบทตอไป จะเปนการเริ่มตนของการเขียนโปรแกรมเชิงวัตถุในภาษา PHP

คลาส ในภาษา PHP คลาสคืออะไร คลาส (Class) คือประเภทขอมูลที่นําไปสรางออบเจ็ค (Object) คลาสถูกกําหนดขึ้นมาโดยมีสมาชิกที่ เปนตัวแปร ฟงกชัน และคอนสตรัคเตอร (Constructor) และ Destructor หรือกลาวอีกนัยหนึ่งคลาสเปนเทม เพลตในการนําไปสรางออบเจ็คโดยมีการกําหนดคาเริ่มตนและฟงกชันการทํางาน ในการเขียนโปรแกรมเชิงวัตถุ เรามองทุกอยางเปนเหมือนออบเจ็คที่มีคุณสมบัติ (Property) และการ ทํางาน (Method) ยกตัวอยางเชน รถยนตเปนออบเจ็ค สี กําลังเครื่องยนต ความจุของถังนํามัน ชื่อรุนของ รถยนต ปที่ผลิต เหลานี้เราเรียกวาคุณสมบัติ การสตารทเครื่อง การดับเครื่อง จะเปนฟงกชันการทํางาน นี่เปนรูปแบบของการประกาศคลาสในภาษา PHP class ClassName { // members and specifications ... }

โดยที่ ClassName เปนชื่อของคลาสที่มีหลักการตั้งชื่อเหมือนตัวแปร แตสําหรับคลาส โดยทั่วไปแลวเรา จะนิยมใชชื่อโดยขึ้นตนดวยตัวพิมพใหญและในระหวางคํา ภายในคลาสจะเปนกําหนดสมาชิกของคลาสโดยมี การกําหนดการเขาถึง (Visibility) นี่เปนประเภทสมาชิกของคลาสที่สามารถมีไดในภาษา PHP •





Properties- คือสมาชิกที่เปนคุณสมบัติของคลาสที่เปนขอมูลประเภทตัวแปร ซึงอาจจะเปนตัวแปร พื้นฐาน คาคงที่ หรือออบเจ็ค Method- คือการกําหนดการทํางานของคลาส เมธอดคือคําที่ใชเรียกฟงกชันเมื่อมันถูกประกาศอยูใน คลาส หรือในบริบทของการเขียนโปรแกรมเชิงวัตถุ Constructor และ Destructor- คอนสตรัคเตอรคือเมธอดชนิดหนึ่งที่จะถูกเรียกใชในตอนที่ออบ เจ็คถูกสราง มันมักจะใชสําหรับกําหนดคาเริ่มตนใหกับออบเจ็ค สวน Destructor คือเมธอดที่จะถูก เรียกใชเมื่อออบเจ็คถูกทําลาย ทั้งสองเมธอดนี้มีชื่อของมันโดยเฉพาะ

โดยปกติแลว ในการสรางคลาส เราตองทําการกําหนดระดับการถึงใหกับตัวแปรเสมอ ยกเวนเมธอดที่ มีคาพื้นฐานเปน public ถาหากไมมีการกําหนดระดับการเขาถึง (Access specifier) มาดูตัวอยางการ สรางคลาสในภาษา PHP