Object: ตัวอย่างของ Class
แนะนำใหม่| English | ความหมาย |
|---|---|
| class/klæs/ | คลาส |
| object/ˈɒbdʒekt/ | ออบเจ็กต์ |
| blueprint/ˈbluːprɪnt/ | แบบร่าง |
| instance/ˈɪnstəns/ | ออบเจกต์ |
คลาสและออบเจ็กต์
- คลาส คือ แบบร่าง (blueprint) — อธิบายว่าสิ่งประเภทหนึ่งมีอะไรและทำอะไรได้บ้าง
- ออบเจ็กต์ คือ อินสแตนซ์ (instance) ที่จับต้องได้จริง ซึ่งสร้างขึ้นจากร่างแบบร่างนั้น
- มีคลาสนี้เดียว
Stringแต่มี String object หลายตัว ("cat","dog","Ada") - คลาสกำหนดรูปแบบ; แต่ละออบเจ็กต์คือสำเนาที่ถูกเติมข้อมูลแล้วหนึ่งชิ้น
แบบร่าง vs อินสแตนซ์
- เปรียบเสมือน แม่พิมพ์คุกกี้ (class) กับ คุกกี้ (objects)
- แม่พิมพ์ช่วยขึ้นรูป; คุกกี้แต่ละชิ้นเป็นสิ่งที่แยกต่างหากและมีอยู่จริง
- ทุกออบเจ็กต์มี ข้อมูลของตัวเอง แม้ว่าจะใช้การออกแบบเดียวกันจากคลาสก็ตาม
- การเปลี่ยนแปลงออบเจ็กต์หนึ่ง ไม่ทำให้其他的เปลี่ยนตาม
สถานะและพฤติกรรม
- ออบเจ็กต์รวม สถานะ (state) (ข้อมูลของมัน — ตัวแปรอินสแตนซ์) และ พฤติกรรม (behavior) (เมทโธด) เข้าด้วยกัน
- สถานะของออบเจ็กต์
Stringคือตัวอักษร; พฤติกรรมรวมถึงlength(),substring() - การสื่อสารกับออบเจ็กต์ทำได้โดยการเรียกใช้เมทโธดของมัน
- การรวมข้อมูล + เมทโธดเข้าด้วยกันนี้คือหัวใจของการเขียนโปรแกรมเชิงวัตถุ
Class หรือ object?
Class คือแบบจำลอง; object คือตัวอย่างเฉพาะเจาะจง เรียงแต่ละข้อ
ออบเจ็กต์มีชนิดข้อมูลแบบอ้างอิง
- ออบเจ็กต์ถูกจัดเก็บผ่าน reference — ตัวแปรจะเก็บ ที่อยู่ ไม่ใช่ตัวออบเจ็กต์เอง
String s = "hi";—sชี้ไปยัง String object ที่อยู่ในหน่วยความจำ某处- Reference สองตัวสามารถชี้ไปยัง ออบเจ็กต์เดียวกัน ได้
- ชนิดข้อมูลแบบอ้างอิง behaves ต่างจาก primitive — ซึ่งเป็นหัวข้อในบทเรียนถัดไป
คลาสเป็นชนิดข้อมูล/แบบร่าง; ออบเจ็กต์คืออินสแตนซ์หนึ่งๆ ของมัน — อย่าสับสนกัน String คือคลาส; "cat" คือออบเจ็กต์. แต่ละออบเจ็กต์มี สถานะของตัวเอง ดังนั้น String objects สองตัวจึงเป็นอิสระต่อกัน. และตัวแปรออบเจ็กต์จะเก็บ reference (ที่อยู่) ไม่ใช่ bytes ของออบเจ็กต์โดยตรง — สิ่งนี้สำคัญเมื่อคุณ copy หรือเปรียบเทียบ它们在ทีหลัง
ความสัมพันธ์ระหว่างคลาส/ออบเจ็กต์:
- Class:
String(แบบร่าง — String ทุกตัวสามารถทำlength(),substring(), …) - Objects:
"cat","dog"—是两个 separate instances, แต่ละมีตัวอักษรของตัวเอง "cat".length()เป็น3;"dog".length()เป็น3— มีพฤติกรรมเหมือนกัน แต่สถานะเป็นอิสระ
คลาส คือ แบบร่าง ที่อธิบายสถานะ (ตัวแปรอินสแตนซ์) และพฤติกรรม (เมทโธด); ออบเจ็กต์ คือ อินสแตนซ์ ที่จับต้องได้จริงของคลาส. ออบเจ็กต์จำนวนมากสามารถแบ่งปันการออกแบบของคลาสเดียว ในขณะที่แต่ละตัวมี สถานะของตัวเอง. ออบเจ็กต์เป็น ชนิดข้อมูลแบบอ้างอิง — ตัวแปรจะเก็บที่อยู่ของออบเจ็กต์ ไม่ใช่ตัวออบเจ็กต์เอง
ความสัมพันธ์ระหว่าง Class กับ Object เหมือนกับ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Class คือแบบจำลอง; object คือตัวอย่างที่สร้างมาจากมัน
Object เฉพาะเจาะจงที่สร้างจาก Class เรียกได้ว่า ___ ของ Class นั้น (หนึ่งคำ)
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Object เป็นตัวอย่างของ Class
Object สองชิ้นจาก Class เดียวกันจะมีสถานะที่เป็นอิสระต่อกัน
Difficulty 1/5 · 100 coins + a small bonus on first completion today
พวกมันแบ่งปันการออกแบบแต่เก็บข้อมูลแยกต่างหาก
ตัวแปร Object จริงๆ แล้วเก็บ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Object เป็น reference type — ตัวแปรจะเก็บที่อยู่
ใน 'String s = "cat";', String คือ ___ และ "cat" คือ ___
Difficulty 1/5 · 100 coins + a small bonus on first completion today
String คือ class (แบบจำลอง); "cat" คือ object (ตัวอย่าง)