Composition ใน Java คืออะไร? ด้วยตัวอย่าง
เผยแพร่แล้ว: 2023-01-27สารบัญ
พื้นฐานของการเชื่อมโยงใน Java:
การเชื่อมโยงสามารถกำหนดใน Java เป็นการเชื่อมต่อระหว่างสองคลาสแต่ละคลาสโดยใช้อ็อบเจ็กต์ที่แตกต่างกัน ประเภทของความสัมพันธ์ที่จัดการโดยการเชื่อมโยง Java คือ:
- หนึ่งต่อหนึ่ง: มีคลาสที่ได้รับมาเพียงคลาสเดียวสำหรับแต่ละคลาสพาเรนต์
- หนึ่งต่อกลุ่ม: คลาสหลักเดียวอาจมีคลาสย่อยมากกว่าหนึ่งคลาส
- กลุ่มต่อหนึ่ง: คลาสลูกเดียวอาจเชื่อมโยงกับซูเปอร์คลาสมากกว่าหนึ่งคลาส
- กลุ่มต่อกลุ่ม: คลาสพาเรนต์จำนวนหนึ่งอาจเชื่อมโยงกับคลาสย่อยหนึ่งคลาส และคลาสย่อยจำนวนมากอาจเชื่อมโยงกับคลาสพาเรนต์เดียว
เมื่อสร้างความสัมพันธ์แล้ว คลาสที่ได้รับจะสื่อสารกับคลาสพื้นฐานที่เกี่ยวข้องเพื่อนำคุณลักษณะและคุณสมบัติกลับมาใช้ใหม่ มีการเชื่อมโยงสองประเภทใน Java พวกเขาคือการรวมและองค์ประกอบ
การรวมใน Java เป็นกระบวนการทั่วไปมากกว่าเมื่อเปรียบเทียบกับองค์ประกอบ แบบฟอร์มเหล่านี้ขึ้นอยู่กับชนิดของความสัมพันธ์ที่ได้รับการสนับสนุนระหว่างชั้นเรียน
รู้เบื้องต้นเกี่ยวกับองค์ประกอบใน Java:
เทคนิคการออกแบบใน Java ที่ใช้ความสัมพันธ์แบบ Has-A เรียกว่าองค์ประกอบ กระบวนการสืบทอดจะใช้รหัสซ้ำ การจัดองค์ประกอบใน Java สามารถทำได้โดยใช้ตัวแปรอินสแตนซ์ที่อ้างถึงวัตถุอื่นๆ ถ้าวัตถุประกอบด้วยวัตถุอื่นในลักษณะที่วัตถุที่เป็นส่วนประกอบไม่สามารถดำรงอยู่ได้หากปราศจากการอยู่รอดของวัตถุหลัก ประเภทของความสัมพันธ์จะเรียกว่าองค์ประกอบ เพื่อให้เฉพาะเจาะจงมากขึ้น องค์ประกอบคือลักษณะที่อธิบายการอ้างอิงระหว่างสองคลาสขึ้นไปด้วยความช่วยเหลือของตัวแปรอินสแตนซ์ ที่นี่ควรสร้างอินสแตนซ์ก่อนใช้ตัวแปรทันที ให้เรายกตัวอย่าง Library เพื่อความเข้าใจที่ชัดเจนเกี่ยวกับแนวคิด 'องค์ประกอบ'
มีหนังสือมากมายในห้องสมุด หนังสือแต่ละเล่มมีผู้แต่งและชื่อเรื่องแยกกัน ห้องสมุดควรมีรายการอ้างอิงของหนังสืออยู่ด้วย ห้องสมุดยังมีหนังสือหลายเล่มที่เกี่ยวข้องกับเรื่องเดียวกันหรือหลากหลายเรื่อง ที่นี่ ห้องสมุดสอดคล้องกับชั้นเรียนหลัก และหนังสือสามารถเกี่ยวข้องกับชั้นเรียนที่ได้รับมา ความเชื่อมโยงหรือความสัมพันธ์ระหว่างหนังสือกับห้องสมุดถือได้ว่าเป็นองค์ประกอบ นี่เป็นเพราะชั้นเรียน "หนังสือ" ขึ้นอยู่กับห้องสมุดของชั้นเรียนอย่างสมบูรณ์ ตัวอย่างเช่น ถ้าห้องสมุดถูกทำลาย หนังสือทั้งหมดในนั้นก็จะถูกทำลายไปด้วย
ตรวจสอบหลักสูตรเทคโนโลยีฟรีของเราเพื่อรับความได้เปรียบเหนือการแข่งขัน
สำรวจหลักสูตรวิศวกรรมซอฟต์แวร์ยอดนิยมของเรา
วิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์จาก LJMU & IIITB | โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ของ Caltech CTME |
Bootcamp การพัฒนาสแต็คเต็มรูปแบบ | โปรแกรม PG ใน Blockchain |
โปรแกรม Executive PG ในการพัฒนา Full Stack | |
ดูหลักสูตรทั้งหมดของเราด้านล่าง | |
หลักสูตรวิศวกรรมซอฟต์แวร์ |
คำอธิบายโดยละเอียดของ Composition ใน Java:
องค์ประกอบเป็นรูปแบบหนึ่งของการเชื่อมโยง Java คลาสที่สื่อสารสองคลาสนั้นเชื่อมโยงกันอย่างมาก โดยที่คลาสที่ได้รับนั้นขึ้นอยู่กับคลาสพาเรนต์ทั้งหมด การมีอยู่อย่างเป็นอิสระของคลาสที่ได้รับมานั้นเป็นไปไม่ได้ในกรณีนี้ ตัวอย่างเช่น เครื่องยนต์ที่ไม่มีรถยนต์ไม่สามารถอยู่ได้โดยอิสระ ประเภทการเชื่อมโยงนี้ถูกจำกัดอย่างมากเมื่อเปรียบเทียบกับการรวม องค์ประกอบเป็นเทคนิคการออกแบบและไม่ควรสับสนกับคุณลักษณะ Java
องค์ประกอบสามารถใช้เพื่อสร้างแบบจำลองวัตถุที่มีวัตถุอื่นเป็นสมาชิกองค์ประกอบ มีความสัมพันธ์แบบ has-a ระหว่างวัตถุเหล่านี้ ในประเภทความสัมพันธ์นี้ วัตถุหนึ่งประกอบด้วยวัตถุอื่น ดังนั้นวัตถุที่เป็นส่วนประกอบจึงขึ้นอยู่กับวัตถุหลักเพื่อความอยู่รอดของมัน ดังนั้น หากวัตถุที่มีอยู่ถูกทำลาย วัตถุส่วนประกอบก็จะได้รับผลกระทบไปด้วย ดังนั้น ความสัมพันธ์ขององค์ประกอบจึงถูกมองว่าเป็นส่วนหนึ่งของความสัมพันธ์ทั้งหมด ซึ่งการดำรงอยู่ของส่วนโดยไม่มีทั้งหมดเป็นไปไม่ได้ กล่าวอีกนัยหนึ่ง ส่วนนั้นจะถูกลบโดยอัตโนมัติเมื่อลบทั้งหมด นี่หมายความว่าทั้งหมดมีความสัมพันธ์ที่แน่นแฟ้นกับส่วนหนึ่ง
เรียนรู้หลักสูตรการพัฒนาซอฟต์แวร์ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโทเพื่อติดตามความก้าวหน้าในอาชีพของคุณอย่างรวดเร็ว
ทักษะการพัฒนาซอฟต์แวร์ตามความต้องการ
หลักสูตร JavaScript | หลักสูตร Core Java | หลักสูตรโครงสร้างข้อมูล |
หลักสูตร Node.js | หลักสูตร SQL | หลักสูตรการพัฒนาสแต็คเต็มรูปแบบ |
หลักสูตร NFT | หลักสูตร DevOps | หลักสูตรข้อมูลขนาดใหญ่ |
หลักสูตร React.js | หลักสูตรความปลอดภัยทางไซเบอร์ | หลักสูตรคลาวด์คอมพิวติ้ง |
หลักสูตรการออกแบบฐานข้อมูล | หลักสูตรหลาม | หลักสูตร Cryptocurrency |
การสืบทอดแตกต่างจากองค์ประกอบใน Java อย่างไร
สิ่งสำคัญคือต้องสังเกตว่าฟังก์ชันการสืบทอดสามารถทำได้โดยใช้องค์ประกอบใน Java เช่นกัน แม้ว่าทั้งการสืบทอดและองค์ประกอบจะถูกนำมาใช้เพื่อให้โค้ดสามารถนำกลับมาใช้ใหม่ได้โดยคลาสที่เกี่ยวข้อง แต่ก็มีความแตกต่างเล็กน้อยระหว่างสองสิ่งนี้ ข้อแตกต่างหลักระหว่างสองกระบวนการคือองค์ประกอบเป็นเทคนิคการออกแบบ ซึ่งแตกต่างจากการสืบทอดซึ่งเป็นคุณสมบัติของ Java ความแตกต่างที่สำคัญอื่น ๆ ระหว่างทั้งสองแสดงอยู่ในตารางด้านล่าง
พารามิเตอร์ | องค์ประกอบ | มรดก |
ขั้นพื้นฐาน | มันรวมความสัมพันธ์ HAS-A | มันรวมเอาความสัมพันธ์แบบ IS-A |
การใช้รหัสซ้ำ | รหัสสามารถใช้ซ้ำได้ในหลายคลาส | การใช้รหัสซ้ำเป็นไปได้เฉพาะในคลาสเดียวเท่านั้น เนื่องจากคลาสสามารถขยายอินเทอร์เฟซได้เพียงอินเทอร์เฟซเดียว |
ขอบเขต | สามารถทำได้ง่ายในขณะรันไทม์ | คุณสมบัตินี้ทำได้ดียิ่งขึ้นในเวลารวบรวม |
สุดท้าย | ช่วยให้สามารถนำรหัสกลับมาใช้ใหม่ได้แม้จากชั้นเรียนสุดท้าย | รหัสจากคลาสสุดท้ายไม่สามารถนำมาใช้ซ้ำได้ในกรณีของการสืบทอด |
วิธีการ | วิธีการจะไม่ถูกเปิดเผย อินเทอร์เฟซสาธารณะใช้สำหรับการโต้ตอบ | การสืบทอดเปิดเผยทั้งวิธีการป้องกันและสาธารณะของคลาสพื้นฐาน |
ความแตกต่างระหว่างการรวมและองค์ประกอบ:
การรวมตัว | องค์ประกอบ |
เป็นประเภทของการเชื่อมโยง Java ที่อ่อนแอ | เป็นประเภทการเชื่อมโยงที่แข็งแกร่งกว่าเมื่อเปรียบเทียบกับการรวม |
คลาสที่ได้รับนั้นไม่ขึ้นอยู่กับคลาสพื้นฐาน ดังนั้นคลาสที่ได้รับสามารถดำรงอยู่ต่อไปได้แม้ว่าคลาสพื้นฐานจะถูกทำลาย | คลาสที่ได้รับนั้นขึ้นอยู่กับคลาสพื้นฐานอย่างสมบูรณ์ ดังนั้นคลาสย่อยจึงไม่สามารถมีอยู่ได้หากซูเปอร์คลาสถูกทำลาย |
คลาสลูกมีอายุของมันเอง | อายุการใช้งานของคลาสลูกขึ้นอยู่กับคลาสพาเรนต์ |
คลาสพาเรนต์ใช้คลาสย่อยในการเชื่อมโยงประเภทนี้ ดังนั้นคลาสที่ได้รับจึงไม่ได้เป็นเจ้าของโดยคลาสพื้นฐาน | ในประเภทการเชื่อมโยงนี้ คลาสพาเรนต์จะเป็นเจ้าของคลาสย่อย ดังนั้นคลาสหลักจึงเป็นเจ้าของคลาสย่อย |
ถือเป็นความสัมพันธ์แบบ HAS-A คลาสที่ได้รับมีคลาสพื้นฐาน | ถือเป็นส่วนหนึ่งของความสัมพันธ์ คลาสที่ได้รับเป็นส่วนหนึ่งของคลาสพื้นฐาน |
คำหลักสุดท้ายไม่ได้ใช้เพื่อแสดงการรวม | คำหลักสุดท้ายอาจใช้เพื่อแสดงถึงองค์ประกอบ |
ตัวอย่าง : รถมีคนขับ | ตัวอย่าง เครื่องยนต์เป็นส่วนหนึ่งของรถยนต์ |
อ่านบทความยอดนิยมของเราเกี่ยวกับการพัฒนาซอฟต์แวร์
วิธีการใช้ Data Abstraction ใน Java? | Inner Class ใน Java คืออะไร | ตัวระบุ Java: คำจำกัดความ ไวยากรณ์ และตัวอย่าง |
ทำความเข้าใจเกี่ยวกับ Encapsulation ใน OOPS พร้อมตัวอย่าง | อาร์กิวเมนต์บรรทัดคำสั่งใน C อธิบาย | คุณลักษณะและคุณลักษณะ 10 อันดับแรกของ Cloud Computing ในปี 2022 |
ความหลากหลายใน Java: แนวคิด ประเภท ลักษณะ และตัวอย่าง | แพ็คเกจใน Java & วิธีใช้งาน? | บทช่วยสอน Git สำหรับผู้เริ่มต้น: เรียนรู้ Git ตั้งแต่เริ่มต้น |
ข้อดีของการใช้ Composition ใน Java:
- องค์ประกอบอำนวยความสะดวกในการนำโค้ด Java กลับมาใช้ใหม่
- แม้ว่า Java จะไม่รองรับการสืบทอดหลายรายการ แต่เทคนิคการออกแบบนี้สามารถเติมเต็มช่องว่างได้
- ด้วยการใช้องค์ประกอบ ชั้นเรียนสามารถทดสอบความสามารถในลักษณะที่ดีขึ้นได้
- รหัสมีความยืดหยุ่นมากขึ้นด้วยการใช้องค์ประกอบ การใช้งานคลาสที่ประกอบด้วยสามารถถูกแทนที่ด้วยเวอร์ชันที่ปรับปรุงแล้ว
- สมาชิกของวัตถุสามารถเปลี่ยนแปลงได้ในขณะรันไทม์สำหรับการเปลี่ยนแปลงแบบไดนามิกของพฤติกรรมของโปรแกรมโดยใช้ความสัมพันธ์ขององค์ประกอบ
ข้อ จำกัด ขององค์ประกอบใน Java:
การใช้องค์ประกอบใน Java มีข้อเสียอยู่เล็กน้อย ข้อเสียเปรียบหลักขององค์ประกอบวัตถุคือยากสำหรับผู้ใช้ที่จะเข้าใจลักษณะการทำงานของระบบที่ถูกนำไปใช้โดยการไตร่ตรองถึงซอร์สโค้ด ระบบที่ใช้องค์ประกอบของวัตถุนั้นมีไดนามิกสูงโดยธรรมชาติ ดังนั้น การทำความเข้าใจการทำงานของระบบที่ใช้องค์ประกอบของอ็อบเจกต์จำเป็นต้องมีการวิเคราะห์ซอร์สโค้ดอย่างลึกซึ้งยิ่งขึ้นและการรันโค้ดเพื่อดูการทำงานและความร่วมมือระหว่างออบเจกต์แต่ละรายการในซอร์สโค้ด
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java, การพัฒนาซอฟต์แวร์แบบ full-stack โปรดดูโปรแกรม Executive PG Program ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญในการพัฒนาแบบ Full Stack ซึ่งออกแบบมาสำหรับมืออาชีพในการทำงานและให้การฝึกอบรมอย่างเข้มงวดมากกว่า 500 ชั่วโมง , 9+ โครงการและการมอบหมายงาน, สถานะศิษย์เก่า IIIT-B, โครงการที่ลงมือปฏิบัติจริงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ