1. แนะนำหลักการของ OOP

วันนี้คุณจะได้ค้นพบโลกใหม่และน่าสนใจ โลกของการเขียนโปรแกรมเชิงวัตถุ ( OOP ) ก่อนหน้านี้คุณได้เรียนรู้เกี่ยวกับคลาสและวัตถุ วันนี้คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับพวกเขามากขึ้น

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

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

มีความพยายามหลายวิธี และจากแนวทางปฏิบัติที่ดีที่สุดที่ค้นพบ หลักการ 4 ประการของOOPเกิดขึ้น พวกเขาเป็นนามธรรม, สิ่งห่อหุ้ม, มรดกและความหลากหลาย ก่อนหน้านี้มีเพียงสามคน แต่ผู้เชี่ยวชาญตัดสินใจเพิ่มสิ่งที่เป็นนามธรรมในภายหลัง


2. สิ่งที่เป็นนามธรรม

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

แต่จิตใจที่ดีที่สุดดูเหมือนจะเห็นด้วยว่า:

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

ใน Java การทำสิ่งที่เป็นนามธรรมสามารถทำได้ผ่านคลาสนามธรรมและส่วนต่อประสาน

สิ่งที่เป็นนามธรรมในชีวิตจริง

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

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

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

แนะนำหลักการของ OOP  สิ่งที่เป็นนามธรรม

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


3. การห่อหุ้ม

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

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

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

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


4. มรดก

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

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

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

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

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

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


5. ความหลากหลาย

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

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

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

OOPหมายถึงหลักการ กฎหมายภายใน. แต่ละคนจำกัดเราไม่ทางใดก็ทางหนึ่ง แต่ให้ผลตอบแทนที่ดีเมื่อโปรแกรมมีขนาดใหญ่ขึ้น หลักการทั้งสี่ของOOPเปรียบเสมือนโต๊ะสี่ขา นำออกไปแล้วระบบทั้งหมดจะไม่เสถียร