Post archive

Tag: OOP

  • PHP

    OOP ซีรี่ย์ – override properties and methods

    ในกระบวนการของ OOP นั้นมันยอมให้คลาสลูกที่สืบทอดไปจากคลาสแม่ เขียนทับฟังก์ชั่นของตัวแม่ได้ เหตุผลหนึ่งที่ยอมให้กระทำอย่างนั้นได้ เพราะว่า เผื่อเราต้องการจะเปลี่ยนแปลงการทำงานของฟังก์ชั่นบางฟังก์ชั่น สมมติ เรามีคลาสอยู่ตัวหนึ่งซึ่งเราตั้งใจให้มันเป็นคลาสหลักให้คลาสอื่นๆมา extends ออกไปแล้วเขียนฟังก์ชั่นเพิ่มให้แตกต่างกันไป ทีนี้ระบบมันก็ใช้มาๆ แล้ววันหนึ่งเราต้องการสร้างคลาสตัวหนึ่งที่จะต้อง extends มาจากคลาสหลัก แต่ อยากแก้ไขฟังก์ชั่นที่มีอยู่เดิมให้ทำงานแตกต่างออกไป แบบนี้ทำได้ ดูตัวอย่าง View the code on Gist. ถ้าเราประกาศฟังก์ชั่นด้วยคีย์เวิร์ด public มันจะอนุญาติให้เราเขียนฟังก์ชั่นทับอย่างนี้แหละ  แต่ถ้าเราไม่อยากให้มีการเขียนทับฟังก์ชั่น เราจะต้องใช้คีย์เวิร์ด final วางไว้หน้าฟังก์ชั่น แล้ว PHP มันจะไม่อนุญาติให้เขียนฟังก์ชั่นทับเอง ทีนี้บางคนอาจจะสงสัยว่า ก็เราเขียนเอง ทำไมต้องไฟน่งไฟนอล เอ้าก็ภาษามันไม่ได้ออกแบบมาเพื่อให้คนๆเดียวเขียนเท่านั้น มันอาจจะมีฝ่ายวางแผน ฝ่ายขึ้นโครงคลาส พวกสร้างคลาสให้แล้วคนอื่นเอาไปเขียนต่อ ซึ่งมันจำเป็นต้องป้องกันบางอย่างที่อาจจะก่อให้เกิดบัก ตัวอย่างข้างล่างนี่เออเร่อ เพราะตรงบรรทัดที่ 12 มีการใส่ final ไว้หน้าฟังก์ชั่น getID นั่นหมายความว่า ห้ามใคร implement ฟังก์ชั่นนี้ใหม่ในคลาสลูก View the […]

    READ MORE
  • PHP

    OOP มันไม่ใช่ยักษ์

    เมื่อครั้งที่ผมเพิ่งศึกษาการเขียนโปรแกรม และได้ยินคำว่า OOP ออบเจ็กโอเรียลเต็ดโปรแกรมมิ่ง การเขียนโปรแกรมเชิงวัตถุ มันเป็นอะไรที่ให้ความรู้สึกว่ามันห่างไกลตัวเราเสียเหลือเกิน ยากแก่การทำความเข้าใจ มันเป็นวัตถุที่จับต้องได้ ไม่ใช่แค่ตัวหนังสือเรียงๆกันมา

    READ MORE