ชั้นเรียนกับโครงสร้าง
แนวคิดหลักบางประการของภาษาโปรแกรมเชิงวัตถุ (OO) ได้แก่ การห่อหุ้ม การสืบทอด และความหลากหลาย คลาสและโครงสร้างเป็นสองโครงสร้าง/เครื่องมือ OO ซึ่งช่วยให้โปรแกรมเมอร์บรรลุแนวคิดเหล่านี้ภายในภาษาการเขียนโปรแกรม OO ส่วนใหญ่ที่มีอยู่ (Java ไม่มีโครงสร้าง) ชั้นเรียนเป็นตัวแทนนามธรรมของวัตถุในโลกแห่งความเป็นจริง โครงสร้างคล้ายกับคลาสที่มีการใช้งานคล้ายกันมาก แต่มีข้อจำกัดเล็กน้อยเมื่อเทียบกับคลาส ทั้งคลาสและโครงสร้างใช้เพื่อจัดกลุ่มข้อมูลประเภทเดียวกันเข้าด้วยกัน
คลาสคืออะไร
ชั้นเรียนแสดงถึงการนำเสนอนามธรรมของวัตถุในโลกแห่งความเป็นจริง ในขณะที่ความสัมพันธ์แสดงให้เห็นว่าแต่ละชั้นเรียนเชื่อมโยงกับผู้อื่นอย่างไร ทั้งคลาสและความสัมพันธ์มีคุณสมบัติที่เรียกว่าแอตทริบิวต์ เมธอดในคลาสแสดงหรือกำหนดพฤติกรรมของคลาสเหล่านี้ เมธอดและแอตทริบิวต์ของคลาสเรียกว่าสมาชิกของคลาส โดยทั่วไป การห่อหุ้มทำได้โดยทำให้แอตทริบิวต์เป็นส่วนตัว ในขณะที่สร้างวิธีการสาธารณะที่สามารถใช้เพื่อเข้าถึงแอตทริบิวต์เหล่านั้น วัตถุคือตัวอย่างของคลาส การสืบทอดอนุญาตให้ผู้ใช้ขยายคลาส (เรียกว่าคลาสย่อย) จากคลาสอื่น (เรียกว่าคลาสซุปเปอร์) Polymorphism ช่วยให้โปรแกรมเมอร์สามารถแทนที่อ็อบเจ็กต์ของคลาสแทนที่อ็อบเจ็กต์ของคลาสระดับสูง โดยทั่วไป คำนามที่พบในคำจำกัดความของปัญหาจะกลายเป็นคลาสในโปรแกรมโดยตรง และในทำนองเดียวกัน กริยาจะกลายเป็นวิธีการ สาธารณะ ส่วนตัว และการป้องกันเป็นตัวดัดแปลงการเข้าถึงทั่วไปที่ใช้สำหรับคลาส ไดอะแกรมคลาสแสดงคลาสของระบบ ความสัมพันธ์ระหว่างคลาส และแอททริบิวต์ของระบบ
โครงสร้างคืออะไร
ดังที่กล่าวไว้ข้างต้น โครงสร้างคล้ายกับคลาสที่มีการใช้งานคล้ายกันมาก แต่มีความสามารถที่จำกัดกว่าคลาสเล็กน้อย อันที่จริง คลาสถือได้ว่าเป็นส่วนขยายของโครงสร้าง ตัวอย่างเช่น โครงสร้างเหมือนกับคลาสใน C++ แต่มีสมาชิกสาธารณะตามค่าเริ่มต้น ผู้ใช้สามารถกำหนดโครงสร้างเพื่อแสดงประเภทที่ประกอบขึ้นได้ โครงสร้างคล้ายกับคลาส โครงสร้างประกอบด้วยสมาชิกที่สามารถอยู่ในหลายประเภท โครงสร้างคีย์เวิร์ดใช้เพื่อกำหนดโครงสร้างใน C และ C++ ในขณะที่โครงสร้างคีย์เวิร์ดใช้สำหรับภาษาโปรแกรม. NET
คลาสและโครงสร้างต่างกันอย่างไร
แม้ว่าทั้งคลาสและโครงสร้างจะมีโครงสร้างที่คล้ายคลึงกันที่พบในภาษาการเขียนโปรแกรม แต่ก็มีความแตกต่างเล็กน้อย โดยปกติ คลาสจะเป็นส่วนขยายของโครงสร้าง ดังนั้นโครงสร้างจึงมีข้อจำกัดที่สัมพันธ์กัน ตัวอย่างเช่น โครงสร้างสามารถพิจารณาได้เหมือนกับคลาสใน C++ แต่สมาชิกจะไม่เป็นแบบสาธารณะโดยค่าเริ่มต้นในคลาส (ต่างจากโครงสร้าง)ที่จริงแล้วหมายความว่าคุณสามารถกำหนดคลาสและโครงสร้างที่มีคุณสมบัติเหมือนกันทุกประการโดยใช้ตัวแก้ไขการเข้าถึงที่เหมาะสมใน C ++ อย่างไรก็ตาม ใน C โครงสร้างไม่สามารถมีฟังก์ชันหรือการดำเนินการที่มากเกินไป คลาสของคีย์เวิร์ดและ struct ใช้เพื่อกำหนดคลาสและโครงสร้างใน C++ ตามลำดับ เมื่อพูดถึงภาษา. NET (C, VB. NET เป็นต้น) คลาสจะเป็นประเภทอ้างอิง ในขณะที่โครงสร้างเป็นประเภทค่า และโดยปกติแล้ว โครงสร้างจะใช้สำหรับวัตถุขนาดเล็ก แต่คลาสจะใช้สำหรับวัตถุขนาดใหญ่ที่ถูกเก็บไว้ในหน่วยความจำเป็นเวลานาน