Transcript Slide 1

เมธอด (Method)


เมธอด (Method) คือ กลุมคํ
่ ก
ู กําหนดขึน
้ เพือ
่ ทํางานอยาง
่ าสั่ งทีถ
่
ใดอยางหนึ
่งให้ไดผลลั
พธตามต
องการ
โดยจะตองเป็
นสมาชิกของ
่
้
้
้
์
คลาส
เปรียบไดกั
(Function) ในโปรแกรมแบบมี
้ บโปรแกรมยอย
่
โครงสราง
มีรูปแบบการใช้งานดังนี้
้
[modifier] return_type Methodname ([parameter]) {
[method_body]
return varValue;
}
โดยที่
modifier
เป็ นคียเวิ
่ าํ หนดคุณสมบัต ิ
์ รดที
์ ก
การเขาถึ
้ งเมธอด
return_type เป็ นชนิดของข้อมูลทีเ่ มธอดจะส่งคากลั
บ
่
MethodName
เป็ นชือ
่ เมธอด
2
parameter เป็ นตัวแปรทีใ่ ช้ในการรับขอมู
้ ล




เมธอดไมมี
มี
่ การรับพารามิเตอรและไม
่ การ
์
คืนคา่
เมธอดมีการรับพารามิเตอรแต
่ มี
่ การคืนคา่
์ ไม
เมธอดไมมี
่ การรับพารามิเตอรแต
่ การคืนคา่
์ มี
เมธอดมีการรับพารามิเตอรและมี
การคืนคา่
์
3
มีรูปแบบการเรียกใช้ดังนี้
ObjectName.MethodName ();
โดยที่
ObjectName
เป็ นชือ
่ ออบเจ็กต ์
MethodName
เป็ นชือ
่ เมธอดทีต
่ องการใช
้
้งาน
4
มีรูปแบบการเรียกใช้ดังนี้
ObjectName.MethodName ([argument]);
โดยที่
ObjectName
เป็ นชือ
่ ออบเจ็กต ์
MethodName
เป็ นชือ
่ เมธอดทีต
่ องการใช
้
้งาน
argument เป็ นคาข
่ องการส
่ ้อมูลทีต
้
่ งผานไปให
่
้เมธอด
5
มีรูปแบบการเรียกใช้ดังนี้
dataType MethodValue = ObjectName.MethodName ();
โดยที่ ObjectName เป็ นชือ
่ ออบเจ็กต ์
MethodName
เป็ นชือ
่ เมธอดทีต
่ องการใช
้
้งาน
dataType
เป็ นชนิดขอมู
่ ก
ี ารคืนคา่
้ ลของเมธอดทีม
MethodValue เป็ นตัวแปรทีใ่ ช้เก็บคาที
นคาของ
่ ไ่ ดจากการคื
้
่
เมธอด
6
มีรูปแบบการเรียกใช้ดังนี้
dataType MethodValue = ObjectName.MethodName
([argument]);
โดยที่ ObjectName เป็ นชือ
่ ออบเจ็กต ์
MethodName
เป็ นชือ
่ เมธอดทีต
่ องการใช
้
้งาน
argument
เป็ นคาข
่ องการส
่ ้อมูลทีต
้
่ งผานไปให
่
้เมธอด
dataType
เป็ นชนิดขอมู
่ ก
ี ารคืนคา่
้ ลของเมธอดทีม
MethodValue เป็ นตัวแปรทีใ่ ช้เก็บคาที
นคาของ
่ ไ่ ดจากการคื
้
่
เมธอด
7



สามารถทําได้ 2 รูปแบบ คือ
ใช้งานจากคลาสทีต
่ างกั
น ต้องสรางออบเจ็
กต ์
่
้
จากคลาสทีม
่ เี มธอดทีเ่ ราตองการเรี
ยกใช้งาน
้
น
้ ซึง่
่ รางขึ
กตที
และเรียกใช้เมธอดผานออบเจ็
้
์ ส
่
เมธอดดังกลาวต
องไม
มี
่
้
่ access modifier เป็ น
แบบ private
เรียกใช้งานภายในคลาสเดียวกัน ซึง่ สามารถ
เรียกผานชื
อ
่ เมธอดไดโดยไม
ต
างออบเจ็
กต ์
่
้
่ องสร
้
้
เมือ
่ เมธอดนั้นไมเป็
่ นเมธอดแบบ static
8
9




อารกิ
่ ่ งไปให้เมธอด
์ วเมนต ์ (Argument) คือ ตัวแปรทีส
พร้อมกับการเรียกใช้เมธอด ในกรณีมจ
ี าํ นวนมากกวา่
หนึ่งคาให
่ ดวยเครื
อ
่ งหมาย “,”
่
้คัน
้
พารามิเตอร ์ (Parameter) คือ ตัวแปรทีท
่ าํ หน้าทีร่ บ
ั
คาอาร
กิ
่ ่ งมาใช้งานในเมธอด ในกรณีมจ
ี าํ นวน
่
์ วเมนตที
์ ส
มากกวาหนึ
่งคาให
่ ดวยเครื
อ
่ งหมาย “,”
่
่
้คัน
้
ตัวแปรทีเ่ ป็ นอารกิ
จาํ นวนเทากั
้
่ บตัวแปรทีเ่ ป็ น
์ วเมนตต
์ องมี
พารามิเตอร ์
ชนิดข้อมูลของอารกิ
่
์ วเมนต ์ กับพารามิเตอร ์ ในแตละ
ตําแหน่งจะตองสอดคล
องกั
น
้
้
แตไม
่ ะต้องเป็ นขอมู
อ
่ จํ
่ าเป็ นทีจ
้ ลชนิดเดียวกัน กลาวคื
่
อนุ ญาตให้เป็ นชนิดขอมู
่ ามารถแปลงขอมู
้ ลทีส
้ ลโดย 10
11


การส่งชนิดขอมู
้ ฐานจะเป็ นการส่งคาข
้ ลพืน
่ อมู
้ ล (pass
by value) ไปให้กับเมธอดทีเ่ รียกใช้ หากมีการ
เปลีย
่ นแปลงคาของพารามิ
เตอรภายในเมธอดที
เ่ รา
่
์
เรียกใช้
จะไมทํ
กิ
่ นตาม
่ าให้คาของอาร
่
์ วเมนตเปลี
์ ย
การส่งชนิดขอมู
งซึ่งใช้กับขอมู
้ ลแบบอางอิ
้
้ ลประเภท
ออบเจ็กต ์ จะเป็ นการส่งคาตํ
ง (pass by
่ าแหน่งอางอิ
้
reference) ไปให้กับเมธอดทีเ่ รียกใช้ ดังนั้น การ
เปลีย
่ นแปลงคาพารามิ
เตอรภายในเมธอดที
เ่ รียกใช้ จะมี
่
์
ผลทําให้คาของอาร
กิ
่ ่ งไปเปลีย
่ นตาม
่
์ วเมนตที
์ ส
คุณลักษณะเช่นนี้สามารถนําไปประยุกตใช
ี่ องการ
้
์ ้กับกรณีทต
เปลีย
่ นแปลงคาของอาร
กิ
่ ่ งไปภายใตการทํ
างานของเมธ12
่
้
์ วเมนตที
์ ส
13

ในภาษา Java มีรูปแบบการสรางเมธอดหลากหลายประเภท
ซึง่
้
แตละประเภทมี
หน้าทีท
่ แ
ี่ ตกตางกั
น ในหัวข้อนี้เราจะมาศึ กษา
่
่
ประเภทตางๆ
ของเมธอดในภาษา Java
่
Instance Method

เป็ นเมธอดทีเ่ รียกผานออบเจ็
กตที
่ รางจากคลาสด
วยตั
วดําเนินการ
่
้
้
์ ส
new ซึง่ เมธอดทีส
่ รางเพื
อ
่
้
การใช้งานในตัวอยางที
ผ
่ านๆ
มา จัดเป็ นเมธอดประเภท
่
่
instance method
14
Static Method

เป็ นเมธอดทีเ่ รียกใช้ไดโดยไม
ต
างออบเจ็
กต ์ สามารถเรียกใช้
้
่ องสร
้
้
เมธอดประเภทนี้ผานชื
อ
่ คลาสไดเลย
แตจะต
่
้
่
้องเรียกใช้จากเมธอด
ประเภท static method เหมือนกันเ
15

โปรแกรมคํานวณเงินภาษีดวย
static method
้
16
Constructor method
 เป็ นเมธอดทีม
่ ก
ี ารกําหนดชือ
่ เมธอดเป็ นชือ
่ เดียวกันกับชือ
่ คลาส
เพือ
่ กําหนดให้เมธอดดังกลาว
่
ทํางานเป็ นเมธอดแรกเมือ
่ เรียกใช้งานคลาส ซึง่ การทํางานของ
Constructor method จะ
เหมาะสํ าหรับการกําหนดคาเริ
่ ตนให
่ ม
้
้กับออบเจ็กต ์
17
Overloading Method
 เป็ นเมธอดทีม
่ ค
ี ุณลักษณะทีม
่ ไี ดหลายรู
ปแบบ (Polymorphism)
้
โดยใช้ชือ
่ เมธอดเดียวกัน
มากกวา่ 1 เมธอด เพือ
่ ทํางานในแบบเดียวกัน
 สิ่ งทีต
่ างกั
นคือชนิดขอมู
่
้ ลของผลลัพธ ์ หรือมีจาํ นวนและชนิดขอมู
้ ล
ของอารกิ
์ วเมนตที
์ ใ่ ช้
กรณีเลือกประเภทพนั
กงานเป็
ในการรั
บขอมู
างกั
้ ลแตกต
่ นน 1 และ
ระดับพนักงานเป็ น 9
 โปรแกรมตรวจสอบเงิ
นเดือน โดยการทํา overload เมธอด
setsalary()
กรณีเลือกประเภทพนักงานเป็ น 2 และ
เกรดพนักงานเป็ น A
18
Overriding Method
 เป็ นเมธอดทีม
่ ค
ี ุณลักษณะของ Polymorphism อีกรูปแบบหนึ่ง ที่
คลาสลูกสามารถ
เขียนทับเมธอดของคลาสแมได
่ าํ นวนอารกิ
่ ้ โดยทีจ
์ วเมนต,์ ชนิด
ข้อมูลของอารกิ
์ วเมนต ์
และชนิดของขอมู
่ น
ื คาจะต
องเหมื
อนในคลาสแมเสมอ
้ ลทีค
่
้
่
19


เมธอด pow() เป็ นเมธอดหาคายกกํ
าลังของขอมู
่
้ ล ซึ่ง
มีรูปแบบการใช้งานดังนี้
Math.pow(x, y);
โดยที่
x
เป็ นคาตั
่ องการยกกํ
าลัง
่ วเลขทีต
้
y
เป็ นคาตั
่ วเลขยกกําลัง
ผลทีไ่ ด้ คือ คาตั
y
่ วเลขของ x ยกกําลังดวย
้
(xy)
เมธอด sqrt() เป็ นเมธอดหาคารากที
ส
่ องของขอมู
่
้ ล ซึ่ง
มีรูปแบบการใช้งานดังนี้
Math.sqrt(x);
โดยที่
x
เป็ นคาตั
่ องการถอดรากที
่
่ วเลขทีต
้
20
สอง


เมธอด abs() เป็ นเมธอดหาคาสั
อมู
่ มบูรณของข
้ ล มี
์
รูปแบบ ดังนี้
Math.abs(x);
โดยที่
x
เป็ นคาตั
่ องการหาค
า่
่ วเลขทีต
้
สั มบูรณ ์
ผลทีไ่ ด้ คือ คาสั
x
่ มบูรณของ
์
เมธอด round() เป็ นเมธอดปัดเศษทศนิยมเป็ นจํานวนเต็ม
มีรูปแบบ ดังนี้
Math.round(x);
โดยที่
x
เป็ นคาตั
่ องการปั
ดเศษ
่ วเลขทีต
้
ทศนิยม
21
ผลทีไ่ ด้ คือ คาตั
่ วเลขใน 2 รูปแบบ คือ


เมธอด ceil() เป็ นเมธอดปัดเศษทศนิยมขึน
้ เป็ นจํานวน
เต็ม มีรูปแบบ ดังนี้
Math.ceil(x);
โดยที่
x
เป็ นคาตั
่ องการปั
ดเศษทศนิยม
่ วเลขทีต
้
ขึน
้
ผลทีไ่ ด้ คือ คาตั
่ ด
ั คาหลั
งจุดทศนิยมขึน
้ เป็ น
่ วเลขทีป
่
จํานวนเต็ม
เมธอด floor() เป็ นเมธอดปัดเศษทศนิยมลงเป็ นจํานวน
เต็ม มีรูปแบบ ดังนี้
Math.floor(x);
โดยที่
x
เป็ นคาตั
่ องการปั
ดเศษทศนิยมทิง้
่ วเลขทีต
้
ไป
ผลทีไ่ ด้ คือ คาตั
่ ด
ั คาตั
่ วเลขทีป
่ วเลขหลังจุดทศนิย22ม


เมธอด min() เป็ นเมธอดหาคาตํ
่ า่ สุดจากขอมู
้ ล 2 ตัว
มีรูปแบบ ดังนี้
Math.min(x, y);
โดยที่
x
เป็ นคาตั
่ ้องการหาคา่
่ วเลขตัวที่ 1 ทีต
ตํา่ สุด
y
เป็ นคาตั
่ ้องการหาคา่
่ วเลขตัวที่ 2 ทีต
ตํา่ สุด
ผลทีไ่ ด้ คือ คาข
่ า่ํ ทีส
่ ุดระหวางค
า่ x กับคา่
่ ้อมูลทีต
่
y
เมธอด PI() เป็ นเมธอดแสดงคา่ Pi =
3.141592653589793
23
Math.PI();



เมธอด log() เป็ นเมธอดหาคา่ log ของข้อมูล มี
รูปแบบ ดังนี้
Math.log(x);
โดยที่
x
เป็ นคาตั
่ องการหาค
า่ log
่ วเลขทีต
้
ผลทีไ่ ด้ คือ ผลลัพธของการหาค
า่ log ของ x
์
(log x)
เมธอด exp() เป็ นเมธอดหาคา่ e ยกกําลังของขอมู
้ ล มี
รูปแบบ ดังนี้
Math.exp(x);
โดยที่
x
เป็ นคาตั
่ องการหาค
า่ e ยก
่ วเลขทีต
้
กําลัง
x)
ผลทีไ่ ด้ คือ ผลลัพธค
า
exponential
ของ
x
(e
์ ่
เมธอด sin() เป็ นเมธอดหาคา่ sine ของมุมทีก
่ าํ หนด 24


เมธอด cos() เป็ นเมธอดหาคา่ cosine ของมุมทีก
่ าํ หนด
มีรูปแบบ ดังนี้
Math.cos(A);
โดยที่
x
เป็ นขนาดของมุมทีต
่ องการหาค
า่ cosine
้
ผลทีไ่ ด้ คือ ผลลัพธค
์ า่ cosine ของ x (cos(x))
เมธอด tan() เป็ นเมธอดหาคา่ tangent ของมุมที่
กําหนด มีรูปแบบ ดังนี้
Math.tan(x);
โดยที่
x
เป็ นขนาดของมุมทีต
่ องการหาค
า่
้
tangent
ผลทีไ่ ด้ คือ ผลลัพธค
์ า่ tangent ของ x (tan(x))
25
26


เป็ นเมธอดทีท
่ าํ งานกับขอมู
นทีแ
่ ละเวลา อยูใน
้ ลดานวั
้
่
แพ็คเกจ java.util.Calendar
ในการใช้งานผู้อานจะต
กตของคลาส
่
้องสรางออบเจ็
้
์
Calendar กอน
จากนั้นเรียกใช้เมธอดทีต
่ องการ
่
้
โดยที่
calenName เป็ นชือ
่ ออบเจ็กต ์
getInstance เป็ นเมธอดสํ าหรับการสรางออบเจ็
กตปฏิ
ิ
้
์ ทน
getTime
เป็ นเมธอดทีใ่ ห้คาวั
่ ละเวลาปัจจุบน
ั
่ นทีแ
27


ใช้แสดงผลวันทีแ
่ ละเวลาในรูปแบบทีแ
่ ตกตางกั
น
่
อยูในแพคเกจ
java.text.SimpleDateFormat มีรูปแบบ
่
ดังนี้
28
รหัสแสดงผ
ล
yyyy
MM
ww
WW
dd
F
EEE
a
HH
hh
kk
KK
mm
ss
คําอธิบาย
แสดงปี ศักราช
แสดงเดือนเป็ นตัวเลข 2 หลัก
แสดงสั ปดาหของปี
์
แสดงสั ปดาหของเดื
อน
์
แสดงวันที่
แสดงวันของสั ปดาหเป็
์ นตัวเลข
แสดงวันของสั ปดาหเป็
์ นตัวอักษรยอ
่
ภาษาอังกฤษ
แสดง AM,PM
แสดงชัว
่ โมงแบบ 0-23
แสดงชัว
่ โมงแบบ 1-12
แสดงชัว
่ โมงแบบ 1-24
แสดงชัว
่ โมงแบบ 0-11
แสดงนาที
แสดงวินาที
29


เป็ นเมธอดทีจ
่ ด
ั การข้อมูลทีเ่ กีย
่ วกับ Date ทีส
่ ามารถให้
คาวั
่ ละเวลาไดเช
่ นทีแ
้ ่ นเดียวกับเมธอดในคลาส
Calendar
อยูในแพ็
คเกจ java.util.Date มีรูปแบบ ดังนี้
่
โดยที่
DateName เป็ นชือ
่ ออบเจ็กต ์
new Date() เป็ นการสรางออบเจ็
กต ์ Date
้
getTime()
เป็ นเมธอดทีใ่ ห้คาวั
่ ละเวลาปัจจุบน
ั
่ นทีแ
30