ความแตกต่างระหว่างมรดกและคอนเทนเนอร์

Anonim

การสืบทอดและการบรรจุหีบห่อ

การสืบทอดและคอนเทนเนอร์มีสองแนวคิดที่สำคัญที่พบใน OOP (Object Oriented Programming Example: C ++) ในแง่ง่ายๆทั้งการบรรจุและการสืบทอดจะจัดการกับการให้คุณสมบัติหรือพฤติกรรมเพิ่มเติมแก่ชั้นเรียน การสืบทอดคือความสามารถในการสืบทอดคุณสมบัติและพฤติกรรมจากชั้นผู้ปกครองโดยการขยายขอบเขต ในทางกลับกัน Containership คือความสามารถของคลาสที่มีออบเจกต์ของคลาสที่แตกต่างกันเป็นข้อมูลสมาชิก

มรดกคืออะไร?

ดังที่ได้กล่าวมาแล้ว Inheritance คือความสามารถในการสืบทอดคุณสมบัติและพฤติกรรมจากคลาสแม่โดยการขยายขอบเขต การสืบทอดเป็นหลักให้ใช้ซ้ำรหัสโดยการอนุญาตให้คุณสมบัติและลักษณะการทำงานของคลาสที่มีอยู่โดยคลาสที่กำหนดขึ้นใหม่ ถ้าคลาส A ขยาย B แล้วคลาส B จะเรียกว่า parent class (หรือ super class) และคลาส A เรียกว่า child class (หรือคลาสย่อย / sub class) ในสถานการณ์สมมติตัวอย่างเช่นคลาส A จะรับช่วงแอตทริบิวต์สาธารณะและที่ได้รับการป้องกันทั้งหมดและวิธีการของ super class (B) Subclass สามารถเลือกที่จะแทนที่ (ให้ฟังก์ชันใหม่หรือขยายไปยังเมธอด) พฤติกรรมที่รับมาจากคลาสแม่ การสืบทอดแสดงถึงความสัมพันธ์ "is-a" ใน OOP นี้เป็นหลักหมายความว่า A ยังเป็น B. ในคำอื่น ๆ B สามารถเรียนกับคำอธิบายทั่วไปของนิติบุคคลในโลกแห่งความจริงบาง แต่ A ระบุความเชี่ยวชาญบางอย่าง ในปัญหาการเขียนโปรแกรมในโลกแห่งความเป็นจริงชั้นบุคคลอาจถูกขยายเพื่อสร้างชั้นเรียนของพนักงาน นี้เรียกว่าเชี่ยวชาญ แต่ก่อนอื่นคุณสามารถสร้างชั้น Employee แล้วพูดคุยกับชั้น Person อีกด้วย (เช่น i generalisation) ในตัวอย่างนี้พนักงานจะมีคุณสมบัติและพฤติกรรมทั้งหมดของบุคคล (เช่นพนักงานเป็นบุคคล) และอาจมีฟังก์ชันเพิ่มเติม (เช่นบุคคลไม่ใช่พนักงาน) ด้วย

คอนเทนเนอร์คืออะไร?

คอนเทนเนอร์คือความสามารถของคลาสที่มีออบเจกต์ของคลาสที่แตกต่างกันเป็นข้อมูลสมาชิก ยกตัวอย่างเช่นคลาส A อาจมีวัตถุคลาส B เป็นสมาชิก (หรือฟังก์ชัน) ที่กำหนดไว้ใน B สามารถดำเนินการภายในคลาส A. Class A กลายเป็นคอนเทนเนอร์ในขณะที่คลาส B จะกลายเป็นคลาสที่มีอยู่ คอนเทนเนอร์ยังเรียกว่าองค์ประกอบ ในตัวอย่างนี้อาจกล่าวได้ว่าคลาส A ประกอบด้วยคลาส B ใน OOP Containership แสดงถึงความสัมพันธ์ "have-a" สิ่งสำคัญคือต้องทราบว่าแม้ว่าคอนเทนเนอร์จะสามารถเข้าถึงวิธีการสาธารณะทั้งหมดของคลาสที่มีอยู่ได้ แต่ก็ไม่สามารถแก้ไขหรือให้ฟังก์ชันเพิ่มเติมได้ เมื่อกล่าวถึงปัญหาการเขียนโปรแกรมของโลกที่แท้จริงวัตถุ TextBox ของชั้นเรียนอาจอยู่ในฟอร์มของชั้นเรียนและอาจกล่าวได้ว่าแบบฟอร์มประกอบด้วยกล่องข้อความ (หรืออีกอย่างหนึ่งคือแบบฟอร์มประกอบด้วยกล่องข้อความ)

ความแตกต่างระหว่างการสืบทอดและการบรรจุหีบห่อ

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