Skip to main content

อาร์เรย์คลาสคืออะไร?

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

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

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