เมื่อครั้งที่ผมเพิ่งศึกษาการเขียนโปรแกรม และได้ยินคำว่า OOP ออบเจ็กโอเรียลเต็ดโปรแกรมมิ่ง การเขียนโปรแกรมเชิงวัตถุ มันเป็นอะไรที่ให้ความรู้สึกว่ามันห่างไกลตัวเราเสียเหลือเกิน ยากแก่การทำความเข้าใจ มันเป็นวัตถุที่จับต้องได้ ไม่ใช่แค่ตัวหนังสือเรียงๆกันมา
ในหนังสือหรือที่ไหนๆ มักจะเปรียบเทียบว่า มันเป็นเสมือนรถ ที่รถทุกแบบจะต้องมีคุณสมบัติวิ่งได้ มีล้อ มีสี นี่คือ properties พร้อพเพอตี้ และรถกำลังวิ่ง 120 กม. ต่อชั่วโมง นี่คือ method เมธอด และรถเราสามารถนำไปแต่งเติมได้ เช่น ติดปลายท่อสแตนเลส เปลี่ยนสปอยเลอร์ นี่คือการสืบทอดคลาส โอ้ยยยย….. OOP มันคือยักษ์ น่ากลัวและเข้าใจยากเสียเหลือเกิน
class ftp_base { var $LocalEcho; var $Verbose; var $OS_local; var $OS_remote; function SendMSG($message = "", $crlf=true) { if ($this->Verbose) { echo $message.($crlf?CRLF:""); flush(); } return TRUE; } } |
อันที่จริงแล้ว OOP มันไม่ได้เป็นอะไรเลย มันคือกลุ่มของตัวแปรและฟังก์ชั่น ตัวแปร พี่หรั่งเรียกเสียใหม่ว่า properties ฟังก์ชั่นพี่แกก็เปลี่ยนชื่อซะว่า method ก็แค่นั้นเอง จากตัวอย่างด้านบน
properties : LocalEcho,Verbose,OS_local,OS_remote
method : SendMSG
properties มันก็คือ ตัวแปร ตัวแปรธรรมดาๆนี่แหละ ตัวแปรที่เราประกาศใช้กันอยู่ทุกวันนี่แหละ เพียงแค่เพิ่มกฎเข้าไปนิดหนึ่งว่า ใช้ var เพื่อประกาศนะจ๊ะ
method มันก็คือฟังก์ชั่น ฟังก์ชั่นที่เราก็เขียนๆกันอยู่ทุกวันนี่แหละ
OOP มันคือยักหรือเปล่าล่ะ
ทีนี้เวลาจะนำโค้ด ftp_base ไปใช้งานล่ะ มันก็เหมือนเรียกใช้ฟังก์ชั่นนั่นแหละ เพียงแต่เพิ่มกฎมาิจิ๊ดดดนึงว่า เติมคำว่า new ด้วยนะ
class ftp_base { var $LocalEcho; var $Verbose; var $OS_local; var $OS_remote; function SendMSG($message = "", $crlf=true) { if ($this->Verbose) { echo $message.($crlf?CRLF:""); flush(); } return TRUE; } } // ก็แค่เนี้ย $ftp = new ftp_base(); |
และเมื่อจะเข้าถึงฟังก์ชั่นหรือตัวแปรที่สร้างไว้ข้างใน ก็ให้อ้างอิงโดยใช้เครื่องหมาย ->
$ftp = new ftp_base(); $ftp->Verbose = TRUE; $ftp->SendMSG(); |
แค่นี้เอง OOP ไม่ใช่ยักษ์ซะหน่อย
บอย says:
15/12/2552 at 15/12/2552
เข้าใจง่ายดีครับ
แต่มีอีกปัญหาหนึ่งคือจะวิเคราะห์ระบบออกมายังไงให้ใช้ประโยชน์ OOP ให้ได้เต็มที่ ซึ่งตรงนี้ผมว่ายากกว่า
7 says:
16/12/2552 at 16/12/2552
เข้าใจเลือกรูปนะครับ
OOP ไม่ใช่ยักษ์ แต่มันคือเสือใช่เปล่า อิอิ
cillout says:
16/12/2552 at 16/12/2552
อ่านแล้วเข้าใจง่ายดีครับ ส่วนผมไม่เคยเขียนซักทีครับแบบ OOP การที่จะเขียน OOP ได้ผมว่าต้องมีการวาดระบบที่จะทำออกมาก่อนใช่มั๊ยครับ เมื่อวาดระบบออกมาได้แล้วค่อยมาลงโค้ด
administrator says:
16/12/2552 at 16/12/2552
จริงๆแล้ว ทุกระบบครับ ไม่ว่าจะเขียนแนวไหน เราจะต้องเขียนภาพระบบโดยรวมออกมาก่อน เราจะได้ไม่หลงทาง เมื่อเขียนไปเรื่อยๆ
mrsitti says:
16/12/2552 at 16/12/2552
ขอบคุณครับ
Anonymous says:
20/12/2552 at 20/12/2552
ให้กำลังใจเยอะเลยครับ กำลังเรียนอยู่คับ ยากมาก ๆ
se7en says:
13/10/2553 at 13/10/2553
เจอ AOP TDD DDD พวกนี้แหละ ยักของจริง
administrator says:
13/10/2553 at 13/10/2553
โอ้ ไม่ได้เห็นคุณเซเว่นเสียนาน สหายเก่ามาเยือนรู้สึกดีใจเป็นอย่างยิ่ง
แถมพกของยากมาฝากอีกต่างหาก