ก่อนอื่นต้องมาทำความเข้าใจคำว่า OOP กันก่อนนะ
OOP ย่อมาจาก Object Oriented Programming แปลเป็นไทยว่า "การเขียนโปรแกรมแบบวัตถุ" ! ห๊ะ...แปลออกมายิ่งงงเข้าไปใหญ่งั้นขอย้อนกลับไปหน่อย ปกติแล้วทุกคนมักจะเรียนเขียนโปรแกรมครั้งแรกอาจจะเป็นภาษา C, Java (หรือภาษาอะไรก็ตามเถอะ) ตอนนั้นเรายังไม่สนใจว่าภาษาโปรแกรมที่เราเรียนกันอยู่นั่นน่ะเป็นภาษาแบบไหนเพราะแค่ทำความเข้าใจ if-else loop function อะไรพวกนั้นก็เต็มหัวไปหมดแล้ว
ขอยกตัวอย่างภาษา C ละกัน สำหรับคนที่เคยเขียนมาแล้วน่าจะคุ้นกับเจ้านี่
void main()จริงมั้ยล่ะ ตอนเรียน C ไม่ว่าจะเขียนโปรแกรมเล็กแบบ Hello World หรือโปรแกรมใหญ่ๆ ระดับ Final Project ตอนท้ายเทอมเป็นพันบรรทัดเราก็ยัดมันลงไปใน void main นี่แหละ (ถ้าใครเก่งหน่อยก็อาจจะมีการแยกโค้ดออกมาเป็น function บ้าง แต่คิดว่ารุ่นนึงน่าจะมีไม่เยอะที่ทำ) แต่โดยรวมก็คือเขียนคำสั่งต่อเนื่องไปเรื่อยๆ อาจจะมีบางส่วนที่ชวนปวดหัวบ้าง แต่ก็ยังไปถึงปลายทางได้แหละน่า
{
//เราจะซัดโค้ดทั้งโปรแกรมลงในนี้แหละ
}
อ่านมาถึงตรงนี้อาจจะมีคำถามเกิดขึ้นว่า แล้วมันไม่ดียังไงเหรอ? เขียนออกมาแล้วโค้ดก็ทำงานได้นะ
โอเค โค้ดทำงานได้แต่ต้องมีอะไรที่มันไม่ดีแน่ๆเขาถึงคิดวิธีการเขียนโปรแกรมแบบอื่นขึ้นมาใช้แทน
Structure VS Object
รู้ไหมว่าการเขียนโปรแกรมโดยซัดโค้ดทุกอย่างลงไปกระจุกอยู่ใน void main ตัวเดียวเนี่ยเขาเรียกว่าการเขียนโปรแกรมแบบ "Structure Programming"อธิบายง่ายๆ คือเขียนโค้ดทีละบรรทัดเพื่อบอกให้คอมพิวเตอร์ทำอะไรไปเรื่อยๆ วิธีนี้เป็นวิธีที่เคยฮิตสมัยเพิ่งมีภาษา C แน่นอนว่าสำหรับยุคนี้มันเก่าไปแล้ว
เหตุผลล่ะ?
ทำงานเป็นทีมได้ยาก
เรื่องแรกที่เป็นจุดอ่อนของ Structure Programming คือมันทำงานเป็นทีมได้ยาก เคยทำงานเป็นคู่หรือเป็นกลุ่มไหม ตอนที่ต้องเขียนโปรแกรมมากกว่า 1 คนคุณทำยังไงล่ะอืม... ทางเลือกมันก็มีไม่เยอะนักหรอกนะ คือไม่นั่งสุมหัวช่วยกันเขียนบทคอมเครื่องเดียว คุณก็แยกงานกันทำแล้วพอเอามาโค้ดมารวมกันก็ระเบิดจ้า!
อ่านไม่รู้เรื่อง / เอาโค้ดมาใช้ใหม่ไม่ได้
ตอนเขียนโปรแกรมแบบ Structure เราอยากทำอะไรก็ทำใช่ไหม อยากประกาศตัวแปรเพิ่มก็ประกาศ ตรงนี้เกิดปัญหา งั้นวาง if ดักไว้ละกัน โค้ดตรงนี้เป็นส่วนแสดงผลนะ และอื่นๆ อีกมากมายคือมันให้เราทำอะไรก็ได้ ดังนั้นมันจึง "อ่านยาก"
ตอนเขียนโค้ดยังไม่เท่าไหร่นะ แต่ลองเก็บโปรเจคนี้ไปสักเดือนหนึ่งแล้วเปิดกลับขึ้นมาดูใหม่สิ คิดว่าคุณจำสิ่งที่คุณเขียนไปแล้วได้แค่ไหน ส่วนใหญ่ที่เจอมาจะลืมนะ แต่ก็จะนึกย้อนว่าตัวเองในอดีตว่าแกเขียนอะไรมาเนี่ยน แก้ไม่ถูกเลย
อีกเรื่องหนึ่งคือเอาโค้ดที่เคยเขียนมาแล้วมาใช้ใหม่ไม่ได้ อยากเราเคยเขียนโปรแกรมหาค่าเฉลี่ยคะแนนนักเรียนไปเมื่อสองวันก่อน วันนี้ต้องมาเขียนโปรแกรมหาค่าเฉลี่ยเงินเดือนพนักงาน เอ๊ะ! มันคล้ายๆ กันนะ ใช้โค้ดเก่าเลยได้มั้ย ... จากนั้นก็เปิดงานเก่า copy+paste ซะแล้วก็ปรับๆ อีกนิดหน่อย ถ้าปรับได้ก็ดีไป ถ้าไม่ได้ยิ่งปรับยิ่งเละกว่าเดิมจนถึงระดับที่คิดได้ว่าเขียนใหม่มันดีกว่า
....
