"สวัสดี Amigo! วันนี้ฉันจะเปิดโลกใหม่ที่น่าสนใจในมุมมองของคุณ ฉันกำลังพูดถึงObject-Oriented Programming (OOP)คุณได้ทำความรู้จักกับ class และ object แล้ว วันนี้คุณจะไป เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับพวกเขาอีกมากมาย"

เราจะเริ่มต้นด้วยสี่เสาหลักของ OOP พวกเขาเป็นนามธรรม, สิ่งห่อหุ้ม, มรดก, และความหลากหลาย (เคยมีสาม แต่นามธรรมเพิ่มในภายหลัง)

1) สิ่งที่เป็นนามธรรม

ตัวอย่างที่ดีของสิ่งที่เป็นนามธรรมในชีวิตจริงคือรายละเอียดงานที่บริษัท ตำแหน่งงานเป็นเรื่องหนึ่ง แต่หน้าที่เป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง

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

สมมติว่าคุณคิดชื่อตำแหน่งในบริษัทของคุณ แล้วคุณก็ "แยกแยะ" ความรับผิดชอบสำหรับตำแหน่งเหล่านี้ออก นั่นคือสิ่งที่เป็นนามธรรม - การแยกสิ่งที่มีขนาดใหญ่และเป็นเสาหินออกเป็นส่วนเล็กๆ หลายส่วน

OOP: หลักการพื้นฐาน - 1

จากมุมมองของโปรแกรมเมอร์ สิ่งที่เป็นนามธรรมคือการแบ่งโปรแกรมออกเป็นวัตถุอย่างเหมาะสม

โดยปกติโปรแกรมขนาดใหญ่สามารถแสดงเป็นวัตถุโต้ตอบได้หลายวิธี สิ่งที่เป็นนามธรรมช่วยให้คุณเลือกลักษณะสำคัญของวัตถุและละเว้นสิ่งที่สำคัญน้อยกว่า

สิ่งที่เป็นนามธรรมก็เหมือนกับกลยุทธ์ทางการทหาร หากคุณเลือกกลยุทธ์ที่ไม่ถูกต้อง ไม่มีกลยุทธ์ที่แยบยลใดที่จะช่วยชีวิตคุณได้

2) การห่อหุ้ม

Encapsulation มีวัตถุประสงค์เพื่อปรับปรุงการโต้ตอบระหว่างวัตถุโดยทำให้ง่ายขึ้น

OOP: หลักการพื้นฐาน - 2

วิธีที่ดีที่สุดในการทำให้บางสิ่งบางอย่างง่ายขึ้นคือการซ่อนสิ่งที่ซับซ้อนไม่ให้ผู้ที่ไม่จำเป็นต้องรู้เกี่ยวกับเรื่องนี้ ตัวอย่างเช่น หากคุณนั่งหลังส่วนควบคุมนักบินของเครื่องบินโบอิ้ง จะต้องใช้เวลานานในการทำความเข้าใจว่าพวกมันทำงานอย่างไร:

OOP: หลักการพื้นฐาน - 3

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

ในแง่ของการเขียนโปรแกรม การห่อหุ้มเป็นการ «ซ่อนการนำไปใช้งาน» ฉันชอบคำจำกัดความนั้น ชั้นเรียนของเราสามารถมีหลายร้อยวิธีและใช้พฤติกรรมที่ซับซ้อนสูงในสถานการณ์ต่างๆ แต่เราสามารถซ่อนวิธีการทั้งหมดจากการสอดรู้สอดเห็น (โดยทำเครื่องหมาย « ส่วนตัว ») เหลือเพียงสองหรือสามวิธีสำหรับการโต้ตอบกับคลาสอื่น (โดยทำเครื่องหมาย « สาธารณะ ») จากนั้นคลาสอื่นๆ ทั้งหมดในโปรแกรมของเราจะเห็น—และเรียก—เมธอดเหล่านี้ในคลาสนี้เท่านั้น ความซับซ้อนทั้งหมดของชั้นเรียนจะถูกซ่อนอยู่ภายใน เช่นเดียวกับที่ห้องนักบินถูกกันไม่ให้มองเห็นจากผู้โดยสารที่มีความสุข

3) มรดก

การสืบทอดเป็นแนวคิดในการเขียนโปรแกรมและชีวิตจริง ในการเขียนโปรแกรม การสืบทอดเป็นความสัมพันธ์พิเศษระหว่างสองคลาส แต่มรดกในชีวิตจริงนั้นน่าสนใจกว่ามาก

หากเราต้องการสร้างบางสิ่งในชีวิตจริง เรามีสองทางเลือก:

1)ทำสิ่งที่เราต้องการตั้งแต่เริ่มต้น และใช้เวลาและความพยายามอย่างมากในการทำสิ่งนั้น

2)สร้างสิ่งที่เราต้องการโดยใช้สิ่งที่มีอยู่แล้ว

กลยุทธ์ที่ดีที่สุดคือ: เราใช้โซลูชันที่ดีที่มีอยู่ ปรับปรุงและปรับแต่งเพื่อให้ตรงกับความต้องการของเรา จากนั้นจึงนำไปใช้

ลองพิจารณาวิวัฒนาการของมนุษย์ หากเราสืบย้อนไปถึงจุดเริ่มต้นของสิ่งมีชีวิตบนโลกใบนี้ เราจะเห็นว่าเวลาผ่านไปหลายพันล้านปี แต่ถ้าเราคิดว่ามนุษย์มีจุดเริ่มต้นมาจากลิง เวลาผ่านไปเพียงไม่กี่ล้านปี การสร้างบางสิ่งตั้งแต่เริ่มต้นใช้เวลานานขึ้น นาน.

ในทำนองเดียวกัน ในการเขียนโปรแกรม เราสามารถสร้างคลาสหนึ่งจากคลาสอื่นได้ คลาสใหม่จะกลายเป็นผู้สืบทอด (ทายาท) ของคลาสที่มีอยู่ สิ่งนี้มีประโยชน์มากเมื่อคุณมีคลาสที่มีข้อมูลและเมธอดที่จำเป็น 80-90% อยู่แล้ว เราเพียงแค่ประกาศคลาสที่เหมาะสมเป็นพาเรนต์ของคลาสใหม่ของเรา ข้อมูลและเมธอดของคลาสพาเรนต์ทั้งหมดจะกลายเป็นส่วนหนึ่งของคลาสใหม่โดยอัตโนมัติ สะดวกใช่ไหม?

4) ความหลากหลาย

ความแตกต่างหลากหลายเป็นแนวคิดการเขียนโปรแกรมที่อธิบายถึงสถานการณ์ที่การใช้งานที่แตกต่างกันถูกซ่อนอยู่หลังส่วนต่อประสานเดียวกัน หากต้องการค้นหาแอนะล็อกในชีวิตจริง เราสามารถดูที่กระบวนการขับรถได้

ถ้าคนสามารถขับรถบรรทุกได้ เขาหรือเธอก็อาจจะอยู่หลังพวงมาลัยของรถพยาบาลหรือรถสปอร์ต คนเราสามารถขับรถได้โดยไม่คำนึงว่าเป็นรถประเภทใด เพราะรถทุกคันมีส่วนต่อประสานการควบคุมเดียวกัน: พวงมาลัย แป้นเหยียบ และคันเกียร์ รถถูกจัดระเบียบแตกต่างกันภายใน แต่ทั้งหมดใช้ส่วนต่อประสานการควบคุมเดียวกัน

กลับไปที่การเขียนโปรแกรม ความหลากหลายทำให้เราโต้ตอบกับออบเจกต์ของคลาสต่างๆ (โดยปกติจะมีบรรพบุรุษร่วมกัน) ในลักษณะเดียวกัน ความสำคัญของสิ่งนี้ไม่สามารถเน้นย้ำมากเกินไป มันมีความสำคัญมากขึ้นเมื่อโปรแกรมมีขนาดใหญ่ขึ้น

OOPเป็นหลักการ กฎหมายการเขียนโปรแกรม แต่ละโปรแกรมจำกัดเราไม่ทางใดก็ทางหนึ่ง แต่ในทางกลับกันก็ให้ประโยชน์อย่างมากเมื่อโปรแกรมมีขนาดใหญ่ขึ้น หลักการ 4 ประการของ OOP เปรียบเสมือนเก้าอี้สี่ขา หากคุณถอดแม้แต่ชิ้นเดียว ระบบทั้งหมดจะไม่เสถียร