Java คลาส (class) คืออะไร

เมื่อเริ่มต้นเรียนรู้ภาษา Java สิ่งแรกที่เราจะได้ยินอยู่เสมอก็คือ คำว่า “คลาส (class)” คลาสคืออะไรกันนะ? ลองอ่านนิยามดูค่ะ

นิยาม : คลาส คือ กลุ่มของออบเจ็กต์ที่มีคุณสมบัติและพฤติกรรมเหมือนกัน

อ่านคำนิยามแล้วรู้สึกอย่างไรบ้างคะ?  เราไม่มีวันเข้าใจความหมายของคำว่า “คลาส” จริง ๆ หรอก จนกว่าจะรู้ความหมายของคำที่ขีดเส้นใต้เหล่านี้

นิยาม : คลาส คือ กลุ่มของออบเจ็กต์ที่มีคุณสมบัติและพฤติกรรมเหมือนกัน

เรามาลองลงมือเขียนโปรแกรมแบบคราว ๆ เพื่อทำความเข้าใจกับความหมายของคำว่า “คลาส” กันดีกว่าค่ะ ยังไม่ลงรายละเอียดลึกในส่วนของโค้ดนะคะ

 

สมมติว่าในโลกของเราประกอบไปด้วยผู้คนมากมาย และวันนี้เราจะมาทำความรู้จักกับเพื่อนใหม่ นามว่า “สมชาย” ทำงานในตำแหน่ง “โปรแกรมเมอร์”

“สมชาย” ตัวจริงก็มีความสามารถเหมือนมนุษย์คนอื่นทั่ว ๆ ไป พูดได้ ยิ้มได้ เดินได้ เป็นเพื่อนที่ดีของเราได้ เป็นต้น ตอนนี้สมชายได้งานทำแล้ว โดยการเป็นพนักงาน (Employee) ในบริษัทแห่งหนึ่ง

 

บริษัทนี้สามารถสร้าง “สมชาย” ให้มีชีวิตในโปรแกรมได้ง่าย ๆ โดยการเปิดโปรแกรม NetBeans ขึ้นมา และทำตามขั้นตอน ดังนี้

 

1. สร้างโปรเจ็กต์ใหม่ชื่อว่า “JavaBasic”

2. สร้าง Package ชื่อ tv.multibooks.model

3. สร้าง Java Class… ชื่อ “Employees.java” (คลาสพนักงาน)

 

เราจะได้โครงสร้างโปรเจ็กต์ขึ้นมาดังนี้

ลองมองภาพของ “สมชาย” อีกครั้ง จะเห็นว่าตอนนี้ “สมชาย” มีคุณสมบัติ 2 อย่างคือ

  • ชื่อ (name)
  • ตำแหน่ง (position)

4. ในทางการเขียนโปรแกรม เราสามารถทำให้คลาสของเรามีคุณสมบัติของ “ชื่อ (name)” และ “ตำแหน่ง (position)”ได้ โดยการเขียนคำสั่งขึ้นมา 2 บรรทัด ดังนี้ (ยังไม่ต้องกังวลความหมายของโค้ดแต่ละตัวนะคะ แล้วเราจะเจาะลึกกันในหัวข้อต่อ ๆ ไปค่ะ)

ตอนนี้ในคลาสของเราก็มี คุณสมบัติ ที่เรียกว่า “ชื่อ (name)” และ “ตำแหน่ง (position)” เป็นที่เรียบร้อยแล้ว

 

ต่อมาเราจะทำให้คลาสมีพฤติกรรม หรือ ความสามารถในการกำหนดค่าให้กับ “ชื่อ (name)” และ “ตำแหน่ง (position)” ได้ โดยการเพิ่มโค้ดลงไปดังนี้

เมื่อสามารถกำหนดค่า “ชื่อ (name)” และ “ตำแหน่ง (position)” ได้แล้ว ต่อมาถ้าเราอยากรู้ว่ากำหนดค่าอะไรไป เราก็ต้องเขียนโค้ดเพิ่มเติมนิดหน่อย เพื่อให้คลาสมีความสามารถในการแสดงผลค่าต่าง ๆ ที่ถูกกำหนดไว้ โดยมีโค้ดดังต่อไปนี้

class-%e0%b8%84%e0%b8%b7%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3-06

เรียบร้อยแล้วค่ะ สรุปคลาส Employees.java ของเราจะมีโค้ดทั้งหมดดังนี้

 

คลาส Employees.java ที่เราออกแบบและเขียนเอาไว้ มีคุณสมบัติ 2 อย่าง คือ

1. ชื่อ (name)

2. ตำแหน่ง (position)

 

และมีความสามารถ 3 อย่าง คือ

1. สามารถกำหนดชื่อได้ setName()

2. สามารถกำหนดตำแหน่งได้ setPosition()

3. สามารถแสดงรายละเอียดของชื่อและตำแหน่งงานได้ showDetails()

 

ต่อมาเราจะทำการทดสอบว่า คลาส Employee.java มีความสามารถตามที่เราออกแบบเอาไว้หรือไม่ โดยการสร้าง Package ใหม่ขึ้นมา ตั้งชื่อว่า tv.multibooks.test

 

จากนั้นสร้าง Java Main Class… ขึ้นมา ซึ่งเป็นคลาสที่มีความสามารถในการเริ่มต้นการทำงานของโปรแกรม (Run โปรแกรม) ตั้งชื่อไฟล์ว่า “TestEmp.java” มาถึงตรงนี้ โครงสร้างของโปรเจ็กต์ จะเป็นดังนี้

โปรแกรม NetBeans จะสร้างโค้ดในคลาส “TestEmp.java” ให้เราอัตโนมัติดังภาพ

เราจะสร้าง “สมชาย” ขึ้นมา พร้อมกับทำการกำหนดชื่อและตำแหน่งให้ด้วยคำสั่งดังนี้

จากนั้นเราจะสั่งให้โปรแกรม NetBeans แสดงค่าของสมชายออกมาให้ดูทางส่วนของ output ของโปรแกรม โดยการเขียนโค้ดดังต่อไปนี้

เมื่อ Run ดูผลลัพธ์เราจะได้ผลลัพธ์ดังนี้

ตอนนี้ในโปรแกรมของเราก็มีชื่อ “สมชาย” และตำแหน่ง “โปรแกรมเมอร์” แล้ว หมายความว่าตอนนี้สมชายถูกสร้างขึ้นมาให้มีชีวิตอยู่ในโปรแกรมเรียบร้อยแล้วนั่นเอง

 

พอสมชายทำงานไปซักพักทางบริษัทก็รับน้องใหม่เข้ามาทำงานอีก 2 คน ในตำแหน่งต่าง ๆ ดังนี้

ในคลาส TestEmp.java เราสามารถสร้าง สมคิด, สมปอง ขึ้นมาและสั่งให้แสดงผลลัพธ์ที่ output ได้ดังนี้

เมื่อ Run ดูเราจะได้ผลลัพธ์ดังนี้

 

ในเวลาต่อมาทางบริษัทก็รับพนักงานเข้ามาอีก 2 คน ชื่อสมเกียรติ และ สมศักดิ์ ทั้ง 2 คนทำหน้าที่ในตำแหน่งทดสอบระบบ เหมือนกัน

ในคลาส TestEmp.java เราสามารถสร้าง สมเกียรติ และ สมศักดิ์ ขึ้นมาและสั่งให้แสดงผลลัพธ์ที่ output ได้ง่าย ๆ เหมือนกับที่เราสร้าง สมชาย, สมคิด, และสมปอง โดยเพิ่มโค้ดเหล่านี้ลงไป

class-%e0%b8%84%e0%b8%b7%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3-16

โค้ดในไฟล์ TestEmp.java มีทั้งหมดดังนี้

 

เริ่มสังเกตุเห็นอะไรบางอย่างมั้ยคะ ? เราสร้างคลาส Employees.java แค่ครั้งเดียว แต่สามารถสร้าง สมชาย, สมคิด, สมปอง, สมเกียรติ และ สมศักดิ์ ขึ้นมาได้ตั้งหลายคน หรือถ้ามีพนักงานเพิ่มเข้ามาอีก เราก็สามารถสร้างใครก็ได้ขึ้นมาในระบบ โดยพนักงานทุก ๆ คน เกิดขึ้นมาจากคลาส  Employees.java เพียงคลาสเดียว

 

ทุก ๆ คนที่ถูกสร้างขึ้นมาจากคลาส Employees.java นั้นจะมีส่วนประกอบ 2 ส่วนเหมือนกันคือ

1. คุณสมบัติ ชื่อ และตำแหน่ง (name, position)

2. พฤติกรรมหรือความสามารถ คือ

– สามารถกำหนดชื่อได้

– สามารถกำหนดตำแหน่งได้

– สามารถแสดงผลลัพธ์ข้อมูลของตัวเองออกมาทางหน้าจอ (output) ของโปรแกรม NetBeans ได้

 

แต่สิ่งที่แตกต่างกันก็คือ “ค่า” (value) ที่อยู่ภายใน ซึ่งก็คือชื่อและตำแหน่งของแต่ละคนนั้นแตกต่างกัน

ลองอ่านนิยามอีกครั้ง

นิยาม : คลาส คือ กลุ่มของออบเจ็กต์ที่มีคุณสมบัติและพฤติกรรมเหมือนกัน

ตอนนี้เราได้คำตอบแล้วนะคะว่า “คุณสมบัติ” และ “พฤติกรรม” หรือ “ความสามารถ” คืออะไร เหลืออีก 1 คำ คือว่าว่า “ออบเจ็กต์” เราไปหาคำตอบของคำนี้ในบทความต่อไปค่ะ (ออบเจ็กต์ (object) ตืออะไร)

 

สรุป

คลาส (class) ประกอบไปด้วย 2 ส่วนเบื้องต้นคือ คุณสมบัติ ใช้สำหรับเก็บค่าข้อมูลต่าง ๆ และพฤติกรรมหรือความสามารถ ใช้ในการจัดการข้อมูลถูกเก็บเอาไว้ เช่น ความสามารถในการนำข้อมูลไปกำหนดให้กับคุณสมบัติ (name, position) และการแสดงผลข้อมูลที่ถูกเก็บเอาไว้ เป็นต้น

 


 

ธมนวรรณ มณีจันทร์

ธมนวรรณ มณีจันทร์

|:- เราเชื่อมั่นว่าการเสียสละและการแบ่งปันจะทำให้โลกใบนี้สวยงามมากขึ้น ทุกๆ จุดเริ่มต้นของการเรียนรู้ นำไปสู่การเรียนรู้ถัดไป เว็บไซต์แห่งนี้ขอเป็นส่วนหนึ่งของการแบ่งปันความรู้ที่ไม่มีที่สิ้นสุด มาร่วมกันผลักดันโลกของเราให้หมุนไปพร้อมกับพลังแห่งความรักด้วยกันนะคะ :) >>> |:- About Me! -:|