6. บทที่ 4 แอทริบิวตและเมธอด หนาที่ 107
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
Class
AAttttrriibbuuttee
((DDaattaa mmeemmbbeerr))
Instance
Encapsulation
MMeetthhoodd
((ffuunnccttiioonn mmeemmbbeerr))
MMeessssaaggee
MMeessssaaggee
องคประกอบคลาส(Class)
รูปแสดง แบบจําลองความสัมพันธระหวางแอทริบิวท เมธอด คลาส อินสแตนท และเมจเสจ
•Class กอนที่จะมีการสรางวัตถุนั้นจําเปนตองทําความเขาใจกับการสรางตนแบบของวัตถุ
หรือที่เรียกวาคลาสกันกอน
รูปแบบในการประกาศ class
[Modifier] class Class_name{
[Data member;]
[Method member;]
}
Modifier ของคลาสแบงเปน 2 กลุมคือ
- Class Access Modifier
o Default Access หากไมกําหนด modifier หนาคียเวิรด class แสดงวาคลาสนี้มี
modifier เปน default นั่นหมายความวาคลาสใดก็ตามที่อยูใน package เดียวกันเทานั้นที่
สามารถเรียกใชงานคลาสนี้ได
o Public Access หากกําหนดคียเวิรด public ไวหนาคียเวิรด class แสดงวาคลาส
นี้สามารถนําไปสรางอินสแตนท ณ แพ็คเก็ตใดก็ไดเขาถึงไดทุกแพ็คเกจและไฟล
นามสกุล .java ตองมีชื่อเดียวกันกับชื่อคลาส
o Private Access , protected access จะใชไดกับ inner class และ nested class
- Class Non Access Modifier
o Final Class กําหนดใหคลาสนั้นไมสามารถสืบทอดได เชน String class
o Abstract class หมายถึง คลาสที่ไมสามารถถูกสรางเปนออบเจ็คได
o Strictfp class คือ คลาสที่มีใชงาน floating point แบบ IEEE754
7. บทที่ 4 แอทริบิวตและเมธอด หนาที่ 108
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
Class_name ชื่อของคลาสเปนไปตามกฎการตั้งชื่อ identifier ในภาษาจาวา แตนิยมขึ้นตนดวย
ตัวอักษรตัวใหญ และหากชื่อคลาสประกอบดวยคํามากกวาหนึ่งคํา โดยทั่วไปนิยมกําหนดให
ตัวอักษรตัวแรกของแตละคําเปนตัวอักษรตัวใหญ และควรใชคํานาม
ในหนึ่งไฟลอาจมีการกําหนดคลาสไดมากกวาหนึ่งคลาส เมื่อถูกคอมไพลแลวจะได
ไฟล .class สําหรับแตละคลาส โดยมีชื่อไฟลเหมือนกับคลาสนั้น แตในที่นี้แนะนําใหสราง 1
class ตอ 1 ไฟล
ถาไฟลนั้นมีหลายคลาสเปน default ทั้งหมด จะตั้งชื่อไฟลเปนอะไรก็ได
ถาไฟลนั้นมีหลายคลาสแตมีอยูคลาสหนึ่งเปน public จะตั้งชื่อไฟลใหเหมือนกับคลาสที่
เปน public นั้น
ถาหากจําเปนตองสรางไฟลของโปรแกรมที่มีหลายคลาส แลวมีคลาสหนึ่งที่มีเมธอด
main() ใหตั้งชื่อไฟลนั้นเหมือนกับชื่อคลาสที่มีเมธอด main() อยู
ถาไฟลนั้นมีเพียงคลาสเดียวควรตั้งชื่อไฟลใหเหมือนกับชื่อคลาสเพื่อใหสามารถ ดูชื่อ
ไฟลแลวทราบวาเปนไฟลของคลาสไหน
ตัวอยาง สรางคลาสขึ้นมา 3 คลาสในไฟลที่ชื่อวา Hello.java ดังนี้
//Hello.java
class AA{ }
class BB{ }
class CC{ }
จากตัวอยางนี้แสดงใหเห็นอีกอยางหนึ่งวาในหนึ่งคลาสอาจจะถูกกําหนดใหวางเปลาคือไมมี
สมาชิกเลยก็ได หากทําการคอมไพลแลวจะได ไฟล AA.class, BB.class และ CC.class
ตัวอยาง ทําการบันทึกคลาสเหลานี้ในไฟลชื่อ Hello1.java
public class Hello1 { }
public class Hello2{ }
ผลลัพธที่ไดจากการคอมไพล เกิด error เนื่องจาก ในไฟลนี้มี public เกินกวา 1 class
ตัวอยาง ทําการบันทึกคลาสเหลานี้ในไฟลชื่อ Hello3.java
public class Test1{ }
ผลลัพธที่ไดจากการคอมไพล เกิด error เนื่องจาก ชื่อไฟลไมตรงกับชื่อ class ที่มี modifier
เปน public
8. บทที่ 4 แอทริบิวตและเมธอด หนาที่ 109
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
• Data member ไดแก คุณสมบัติ(attribute)ของ class หรือ object นั้นๆ การประกาศ data
member สามารถประกาศไดทั้งใน class และใน method เปนไดทั้ง primitive data type หรือ
เปน instance ของ object หรือเรียกไดวาเปนตัวแปรคลาส มี 2 ประเภท คือ
a. instance variable หมายถึง เปนตัวแปรที่ประกาศไวเปน attribute ของ classes และ
อยูนอก methods และ constructors
b. local variable หมายถึง ตัวแปรที่ประกาศไวเปน method หรือ constructors
รูปแบบในการประกาศ data member
[Modifier] data_type attribute_identifier ;
Modifier : กําหนดถึงระดับในการซอนขอมูลประกอบดวย keywords ดังตอไปนี้
o private จะทําใหแอทริบิวตนั้นไมสามารถถูกอางถึงไดจากนอกคลาส
o protected จะทําใหแอทริบิวตนั้นสามารถถูกอางถึงไดจากคลาสที่อยูในแพ็คเก็จเดียวกัน
หรือคลาสที่ขยายออกมาจากคลาสนั้นที่อยูในแพ็คเก็จอื่น ซึ่งจะกลาวถึงในบทที่ 8 การ
สืบทอดคลาส
o public จะทําใหแอทริบิวตนั้นสามารถถูกอางอิงไดจากนอกคลาส
o หากไมระบุ modifier ไวจะถือวาเปน default ซึ่งจะถูกอางถึงไดจากคลาสที่อยูในแพ็ค
เก็จเดียวกัน
หมายเหตุ : สําหรับ local variable (ตัวแปรที่อยูภายใน method) ใชไดเฉพาะ default เทานั้น
ตัวอยาง
class Student{
int id , age;
String name;
Address add;
public static void main(String args[]){
boolean chkStatus;
………..
}
}
Data members
(Instance variable)
Data members
(local variable)
Primitive data type
Instance of object
14. บทที่ 4 แอทริบิวตและเมธอด หนาที่ 115
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
การเรียกใชงาน method
รูปแบบ : method_name(argument_list) ;
ตัวอยาง : print(‘#’);
printSet(‘$’ , 6);
ตัวอยาง การเขียนโปรแกรม :
class getData{
static void print(char mychr){
System.out.println(mychr);
}
static void printSet(char mychr , int num){
for (int i = 0 ; i < num ; i++)
System.out.print(mychr);
System.out.println();
}
public static void main(String args[]){
char ch = '@';
print(ch);
printSet(ch,15);
}
}
แบบฝกหัด
สราง method nameที่สอง ชื่อ showRect ทําหนาที่แสดงขอมูลรูปภาพของสี่เหลี่ยม โดยทําการ
รับคา ตัวอักษรที่จะนํามาวาด พรอม ทั้งขนาดของสี่เหลี่ยมผืนผา
กําหนดให prototype ของ method คือ void showRect(char c , int w , int h )
ผลลัพธที่ไดจากการเรียกใช คือ
showRect( ‘X’ , 4 , 10);
X X X X X X X X X X
X X
X X
X X X X X X X X X X
showRect(‘#’, 3,7);
# # # # # # #
# #
# # # # # # #
ตัวอยางการเรียกใชงาน
ตัวอยางการสราง method
ตัวอยางการสราง method
16. บทที่ 4 แอทริบิวตและเมธอด หนาที่ 117
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
public static void main(String args[]){
int myInt ;
myInt = setData() + 20;
System.out.println(myInt);
System.out.println(setName());
}
}
•รูปแบบที่ 4 ที่รับพารามิเตอร และทําการคืนคากลับ
การสราง method
รูปแบบ : Return_datatype method_name(parameter_list){
Method_body;
}
ตัวอยาง : int sum(int a , int b){
int ans;
ans = a + b;
return ans;
}
การเรียกใชงาน method
รูปแบบ : identifier = method_name(argument_list);
ตัวอยาง :
int ans ;
ans = sum(int a, int b);
ตัวอยางการเขียนโปรแกรม :
class test{
static int sum(int a , int b){
int ans;
ans = a + b;