ภาษาโปรแกรมเชิงวัตถุมีสองแนวคิดที่สำคัญที่แตกต่างกัน ได้แก่ วัตถุและคลาส วัตถุคือการสร้างอินสแตนซ์ของคลาส ความแตกต่างนั้นเป็นแนวความคิด แม้ว่าบางคนจะใช้แทนกันได้
วัตถุเทียบกับคลาส
ความแตกต่างระหว่างอ็อบเจกต์และคลาสคืออ็อบเจกต์เป็นตัวอย่างของคลาส ในขณะที่คลาสทำหน้าที่เป็นพิมพ์เขียวที่สามารถใช้สร้างอินสแตนซ์เช่นอ็อบเจกต์ คลาสทำงานเป็นเทมเพลตประเภทหนึ่งสำหรับออบเจ็กต์ และยังสามารถอธิบายพฤติกรรมของออบเจ็กต์ได้อีกด้วย
ออบเจ็กต์สามารถกำหนดเป็นเอนทิตีทางกายภาพที่ใช้ในการใช้คำสั่งของภาษาการเขียนโปรแกรม เป็นตัวอย่างของคลาสและสามารถเป็นตัวแปร โครงสร้างข้อมูล ฟังก์ชัน หรือค่าได้ ส่วนใหญ่ประกอบด้วยสองสิ่งคือข้อมูล (หรือที่เรียกว่าสถานะ) และรหัส (หรือที่เรียกว่าพฤติกรรม) แต่ละอ็อบเจ็กต์มีหน้าที่รับผิดชอบในการดำเนินงานของตนเองในการเขียนโปรแกรม
ในทางกลับกัน ชั้นเรียนทำหน้าที่เป็นพิมพ์เขียวของวัตถุ เป็นแนวคิดรูปแบบหนึ่งที่สามารถนำไปใช้ในภาษาโปรแกรมเชิงวัตถุได้ มันแสดงถึงทุกข้อมูลและวิธีการทั้งหมดที่วัตถุควรมี นอกจากนี้ยังช่วยในการให้ค่าตัวแปรสมาชิก (สถานะ) และการนำพฤติกรรมไปใช้ในโปรแกรมต่างๆ
ตารางเปรียบเทียบระหว่างออบเจ็กต์และคลาส
พารามิเตอร์ของการเปรียบเทียบ | วัตถุ | ชั้นเรียน |
แนวคิด | เป็นหนึ่งในตัวอย่างของชั้นเรียน | เป็นพิมพ์เขียวที่สามารถใช้สร้างอินสแตนซ์ต่างๆ ได้ |
ตัวแปร | ตัวแปร | พิมพ์ |
หน่วยความจำ | หน่วยความจำที่จัดสรร | ไม่มีการจัดสรรหน่วยความจำ |
การดำรงอยู่ | การดำรงอยู่ทางกายภาพ | การดำรงอยู่ของตรรกะ |
ประกาศ | ประกาศได้หลายครั้ง | ประกาศได้ครั้งเดียวเท่านั้น |
ถูกจัดการ | สามารถจัดการได้ | ไม่สามารถจัดการได้ |
คีย์เวิร์ด | พัฒนาใน C++ ด้วยชื่อคลาสและคีย์เวิร์ดใหม่ใน Java | ประกาศด้วยคีย์เวิร์ดของคลาส |
มูลค่าที่เกี่ยวข้อง | มีค่าที่เกี่ยวข้อง | ไม่มีค่าที่สามารถเชื่อมโยงได้ |
วัตถุคืออะไร?
วัตถุคือเอนทิตีทางกายภาพที่มีวิธีการและคุณสมบัติที่อนุญาตให้ใช้ข้อมูลได้ ช่วยคุณในการพิจารณาความประพฤติของชั้นเรียน ออบเจ็กต์อาจเป็นตัวแปร โครงสร้างข้อมูล หรือฟังก์ชันที่มีตำแหน่งหน่วยความจำที่จัดสรรไว้ โครงการจัดเป็นหมวดหมู่ตามลำดับชั้น
ออบเจ็กต์คือชุดของคุณลักษณะและวิธีการที่ใช้สำหรับสร้างค่าข้อมูลเฉพาะประเภท นอกจากความหลากหลายและการสืบทอดแล้ว วัตถุยังเป็นส่วนขยายของประเภทข้อมูลที่เป็นนามธรรมอีกด้วย กุญแจสำคัญในการเขียนโปรแกรมคือแต่ละอ็อบเจ็กต์มีหน้าที่รับผิดชอบในการทำงานด้วยตัวเอง
คุณสมบัติของวัตถุคือสิ่งที่มันรู้ และวิธีการคือสิ่งที่มันสามารถทำได้ เมธอดนี้ให้ฟังก์ชันการทำงานของแอปพลิเคชันและช่วยให้มั่นใจว่าข้อมูลของออบเจ็กต์ถูกใช้อย่างถูกต้อง เมธอดยังเปิดใช้งานการปกปิดและการกำหนดมาตรฐานของการดำเนินการงานสำหรับการดำเนินการเฉพาะบนออบเจกต์ประเภทต่างๆ เมธอดที่ใช้ในการเข้าถึงอ็อบเจกต์ของคลาส
อ็อบเจ็กต์สามารถประกาศได้หลายครั้งและด้วยความช่วยเหลือของชื่อคลาสที่พัฒนาใน C++ และคีย์เวิร์ดใหม่ที่มีใน Java มันจัดสรรหน่วยความจำหลังจากการสร้างซึ่งหมายความว่าไม่สามารถจัดการได้
คลาสคืออะไร?
คลาสเป็นเอนทิตีเชิงตรรกะที่กำหนดพฤติกรรมของออบเจกต์และสิ่งที่จะมีอยู่ ดังนั้นจึงทำหน้าที่เป็นพิมพ์เขียว มันให้ค่าเริ่มต้นทั้งหมดสำหรับฟังก์ชันสมาชิกหรือเมธอดและตัวแปรสมาชิก เป็นรูทีนย่อยที่สร้างวัตถุ เป็นแนวทางที่ขยายได้สำหรับการสร้างวัตถุ มันสรุปข้อมูลและวิธีการทั้งหมดที่วัตถุควรมี สามารถสร้างอ็อบเจ็กต์ได้หลายรายการโดยใช้คลาสเดียว เป็นการประกาศ TYPE ที่ขยายเวลาออกไป
ชนิดข้อมูลถูกกำหนดโดยผู้ใช้เป็นหลัก และมาพร้อมกับชุดข้อมูลสมาชิกและฟังก์ชันสมาชิก สามารถเข้าถึงและใช้งานได้โดยการสร้างอินสแตนซ์ของคลาส
ชั้นเรียนเป็นส่วนสำคัญของ OOP ด้วยการใช้คลาส ตัวแปรและเมธอดสามารถแยกได้ในอ็อบเจกต์เฉพาะ แทนที่จะใช้ได้กับทุกอิลิเมนต์ของโปรแกรม ด้วยการห่อหุ้มข้อมูลนี้ แต่ละคลาสสามารถป้องกันจากการแก้ไขในส่วนอื่นของโปรแกรมได้ นักพัฒนาสามารถออกแบบแอปพลิเคชันที่จัดระเบียบโดยใช้ซอร์สโค้ดที่สามารถแก้ไขได้ง่ายโดยใช้คลาส
สามารถประกาศชั้นเรียนได้เพียงครั้งเดียวและใช้คำหลักของชั้นเรียน เช่น นักเรียนในชั้นเรียน {} นอกจากนี้ยังไม่จัดสรรหน่วยความจำใด ๆ หลังจากสร้าง เนื่องจากไม่อยู่ในความทรงจำ หมายความว่าไม่สามารถจัดการได้
ความแตกต่างหลักระหว่างวัตถุและคลาส
บทสรุป
ออบเจ็กต์และคลาสเป็นส่วนสำคัญของภาษาการเขียนโปรแกรมเชิงวัตถุ พวกเขาต่างกันทางความคิด ความแตกต่างหลักคือ คลาสสามารถคิดได้ว่าเป็นโครงสร้างที่ห่อหุ้มตัวแปรและเมธอดจำนวนมาก และอ็อบเจ็กต์ทำหน้าที่เป็นสมาชิกหรืออินสแตนซ์ของคลาส ซึ่งเป็นส่วนสำคัญของการเขียนโปรแกรมเชิงวัตถุ วัตถุเป็นเอนทิตีทางกายภาพ ในขณะที่คลาสเป็นเอนทิตีเชิงตรรกะ คีย์เวิร์ดที่จำเป็นในการสร้างทั้งสองภาษาก็ต่างกันในภาษาโปรแกรมต่างๆ วัตถุมีค่าที่เกี่ยวข้องซึ่งไม่มีอยู่ในคลาส
อ้างอิง
- https://dl.acm.org/doi/abs/10.1145/1932682.1869489
- https://link.springer.com/chapter/10.1007/BFb0053572