Chapter 2 · รู้จักกับเมธอด (Method)•เมธอด (Method)คือ...

Post on 05-Jul-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

Chapter 2

เมธอด (Method)

MFS1102 Object Oriented Programming

รู้จักกับเมธอด (Method)• เมธอด (Method) คือ กลุ่มคําสั่งที่ถูกกําหนดขึ้นเพื่อทํางาน

อย่างใดอย่างหนึ่งให้ได้ผลลัพธ์ตามต้องการ โดยจะต้องเป็นสมาชิกของคลาส

• เปรียบได้กับโปรแกรมย่อย (Function) ในโปรแกรมแบบมีโครงสร้าง มีรูปแบบการใช้งานดังนี้

2MFS1102 Object Oriented Programming

[modifier] return_type Methodname ([parameter]) {

[method_body]

return varValue;

}

โดยที่ modifier เป็นคีย์เวิร์ดที่กาํหนดคุณสมบัติการเข้าถึงเมธอด

return_type เป็นชนิดของข้อมูลที่เมธอดจะส่งค่ากลับ

MethodName เป็นชื่อเมธอด

parameter เป็นตัวแปรที่ใช้ในการรับข้อมูล

method_body เป็นชุดคําสั่งการทํางานของเมธอด

varValue เป็นค่าที่ต้องการส่งค่ากลับ

3MFS1102 Object Oriented Programming

รูปแบบการเรียกใช้งานเมธอด

เมธอดไม่มีการรับพารามิเตอร์และไม่มีการคืนค่า

เมธอดมีการรับพารามิเตอร์แต่ไม่มีการคืนค่า

เมธอดไม่มีการรับพารามิเตอร์แต่มีการคืนค่า

เมธอดมีการรับพารามิเตอร์และมีการคืนค่า

4

เมธอดไม่มีการรับพารามิเตอร์และไม่มีการคืนค่า

มีรูปแบบการเรียกใช้ดังนี้

ObjectName.MethodName ();

โดยที่

ObjectName เป็นชื่อออบเจ็กต์

MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน

5

เมธอดไม่มีการรับพารามิเตอร์และไม่มีการคืนค่า

6

เมธอดมีการรับพารามิเตอร์แต่ไม่มีการคืนค่า

มีรูปแบบการเรียกใช้ดังนี้

ObjectName.MethodName ([argument]);

โดยที่

ObjectName เป็นชื่อออบเจ็กต์

MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน

argument เป็นค่าข้อมูลที่ต้องการส่งผ่านไปให้เมธอด

7

เมธอดมีการรับพารามิเตอร์แต่ไม่มีการคืนค่า

8

เมธอดไม่มีการรับพารามิเตอร์แต่มีการคืนค่า

มีรูปแบบการเรียกใช้ดังนี้

dataType MethodValue = ObjectName.MethodName ();

โดยที่ ObjectName เป็นชื่อออบเจ็กต์

MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน

dataType เป็นชนิดข้อมูลของเมธอดที่มีการคืนค่า

MethodValue เป็นตัวแปรที่ใช้เก็บค่าที่ได้จากการคืนค่า

ของเมธอด

9

เมธอดไม่มีการรับพารามิเตอร์แต่มีการคืนค่า

10

เมธอดมีการรับพารามิเตอร์และมีการคืนค่ามีรูปแบบการเรียกใช้ดังนี้

dataType MethodValue = ObjectName.MethodName([argument]);

โดยที่ ObjectName เป็นชื่อออบเจ็กต์

MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน

argument เป็นค่าข้อมูลที่ต้องการส่งผ่านไปให้เมธอด

dataType เป็นชนิดข้อมูลของเมธอดที่มีการคืนค่า

MethodValue เป็นตัวแปรที่ใช้เก็บค่าที่ได้จากการคืนค่า

ของเมธอด11

เมธอดมีการรับพารามิเตอร์และมีการคืนค่า

12

การเรียกใช้งานเมธอดที่ก าหนดขึ้นในคลาส

สามารถท าได้ 2 รูปแบบ คือ

• ใช้งานจากคลาสที่ต่างกัน ต้องสร้างออบเจ็กต์จากคลาสที่มีเมธอดที่เราต้องการเรียกใช้งาน และเรียกใช้เมธอดผ่านออบเจ็กต์ที่สร้างขึ้นซึ่งเมธอดดังกล่าวต้องไม่มี access modifier เป็นแบบ private

• เรียกใช้งานภายในคลาสเดียวกัน ซึ่งสามารถเรียกผ่านชื่อเมธอดได้โดยไม่ต้องสร้างออบเจ็กต์ เมื่อเมธอดนั้นไม่เป็นเมธอดแบบ static

13

โปรแกรมค านวณค่าแรงเรียกใช้เมธอดจากคลาส

14

อาร์กิวเมนต์ (Argument)

และพารามิเตอร์ (Parameter)

อาร์กิวเมนต์ (Argument) คือ ตัวแปรที่ส่งไปให้เมธอดพร้อมกับการเรียกใช้เมธอด ในกรณีมีจํานวนมากกว่าหนึ่งค่าให้คั่นด้วยเครื่องหมาย “,”

พารามิเตอร์ (Parameter) คือ ตัวแปรที่ทําหน้าที่รับค่าอาร์กิวเมนต์ที่ส่งมาใช้งานในเมธอด ในกรณีมีจํานวนมากกว่าหนึ่งค่าให้คั่นด้วยเครื่องหมาย “,”

ตวัแปรท่ีเป็นอาร์กิวเมนต์ต้องมีจ านวนเท่ากบัตวัแปรท่ีเป็นพารามิเตอร์

15

อาร์กิวเมนต์ (Argument)

และพารามิเตอร์ (Parameter)

ชนิดข้อมูลของอาร์กิวเมนต์ กับพารามิเตอร์ ในแต่ละตําแหน่งจะต้องสอดคล้องกัน

**แตไ่ม่จําเป็นที่จะต้องเป็นข้อมูลชนิดเดียวกัน กล่าวคือ อนุญาตให้เป็นชนิดข้อมูลที่สามารถแปลงข้อมูลโดยอัตโนมัติได้ (Implicit Type Conversion)

- ส่งอาร์กิวเมนต์ที่มีชนิด float ให้กับเมธอดที่มีพารามิเตอร์ชนิดข้อมูลเป็น double ได้

- ส่งอาร์กิวเมนต์ท่ีมีชนิด int ให้กับเมธอดที่มีพารามิเตอร์ชนิดข้อมูลเป็น double ได้

16

โปรแกรมค านวณค่าแรง พารามิเตอร์และอาร์กิวเมนต์ชนิดข้อมูลสอดคล้องกัน

17

การส่งค่าข้อมูล

การส่งชนิดข้อมูลพื้นฐานจะเป็นการส่งค่าข้อมูล (pass by value) ไปให้กับเมธอดที่เรียกใช้ หากมีการเปลี่ยนแปลงค่าของพารามิเตอร์ภายในเมธอดที่เราเรียกใช้ จะไม่ทําให้ค่าของอาร์กิวเมนต์เปลี่ยนตาม

การส่งชนิดข้อมูลแบบอ้างอิงซึ่งใช้กับข้อมูลประเภทออบเจ็กต์ จะเป็นการส่งค่าตําแหน่งอ้างอิง (pass by reference) ไปให้กับเมธอดที่เรียกใช้ ดังนั้น การเปลี่ยนแปลงค่าพารามิเตอร์ภายในเมธอดที่เรียกใช้ จะมีผลทําให้ค่าของอาร์กิวเมนตท์ี่ส่งไปเปลี่ยนตาม

18

การส่งค่าข้อมูล

คุณลักษณะเช่นนี้สามารถนําไปประยุกต์ใช้กับกรณีที่ต้องการเปลี่ยนแปลงค่าของอาร์กิวเมนต์ที่ส่งไปภายใต้การทํางานของเมธอด 1 เมธอด เช่น

- การคํานวณการแลกเหรียญที่ต้องการผลเป็นจํานวนเหรียญ10 บาท, เหรียญ 5 บาท, เหรียญ 2 บาท และเหรียญ 1 บาท ซึ่งผลลัพธ์ที่ต้องการมีทั้งหมด 4 ค่า หรือ

- การคํานวณหาคะแนนสูงสุด, คะแนนต่ําสุด และคะแนนเฉลี่ย เป็นต้น

19

โปรแกรมค านวณแลกเหรียญ ใช้การส่งค่าแบบต าแหน่งอ้างอิง

20

ประเภทของเมธอด (1)

ในภาษา Java มีรูปแบบการสร้างเมธอดหลากหลายประเภท ซึ่งแต่ละประเภทมีหน้าที่ที่แตกต่างกัน ในหัวข้อนี้เราจะมาศึกษาประเภทต่างๆ ของเมธอดในภาษา Java

Instance Method

เป็นเมธอดที่เรียกผ่านออบเจ็กต์ที่สร้างจากคลาสด้วยตัวดําเนินการ new ซึ่งเมธอดที่สร้างเพื่อการใช้งานในตัวอย่างที่ผ่านๆ มา จัดเป็นเมธอดประเภท instance method

21

ประเภทของเมธอด (1)

22

ประเภทของเมธอด (2)

Static Method

• เป็นเมธอดที่เรียกใช้ได้โดยไม่ต้องสร้างออบเจ็กต์ สามารถเรียกใช้เมธอดประเภทนี้ผ่านชื่อคลาสได้เลย แต่จะต้องเรียกใช้จากเมธอดประเภท static method เหมือนกัน

23

ประเภทของเมธอด (2)

24

ประเภทของเมธอด (3) โปรแกรมคํานวณเงินภาษีด้วย static method

25

ประเภทของเมธอด (4)

Constructor method

เป็นเมธอดที่มีการกําหนดชื่อเมธอดเป็นชื่อเดียวกันกับชื่อคลาส เพื่อกําหนดให้เมธอดดังกล่าว ทํางานเป็นเมธอดแรกเมื่อเรียกใช้งานคลาส ซึ่งการทํางานของ Constructor methodจะเหมาะสําหรับการกําหนดค่าเริ่มต้นให้กับออบเจ็กต์

26

ประเภทของเมธอด (4)

27

ประเภทของเมธอด (5)Overloading Method

เป็นเมธอดที่มีคุณลักษณะที่มีได้หลายรูปแบบ (Polymorphism) โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทํางานในแบบเดียวกัน

สิ่งที่ต่างกันคือชนิดข้อมูลของผลลัพธ์ หรือมีจํานวนและชนิดข้อมูลของอาร์กิวเมนต์ที่ใช้ในการรับข้อมูลแตกต่างกัน

โปรแกรมตรวจสอบเงินเดือน โดยการทํา overload เมธอด setsalary()

28

ประเภทของเมธอด (5)

29

กรณีเลือกประเภทพนักงานเป็น 1 และระดับพนักงานเป็น 9

กรณีเลือกประเภทพนักงานเป็น 2 และเกรดพนักงานเป็น A

ประเภทของเมธอด (5)

Overriding Method

เป็นเมธอดที่มีคุณลักษณะของ Polymorphism อีกรูปแบบหนึ่ง ที่คลาสลูกสามารถ เขียนทับเมธอดของคลาสแม่ได้ โดยที่จํานวนอาร์กิวเมนต์, ชนิดข้อมูลของอาร์กิวเมนต์ และชนิดของข้อมูลที่คืนค่าจะต้องเหมือนในคลาสแม่เสมอ

30

ประเภทของเมธอด (5)

31

เมธอดในคลาส Math (1)

เมธอด pow() เป็นเมธอดหาค่ายกกําลังของข้อมูล ซึ่งมีรูปแบบการใช้งานดังนี้

Math.pow(x, y);

โดยที่ x เป็นค่าตัวเลขที่ต้องการยกกําลัง

y เป็นค่าตัวเลขยกกําลัง

ผลที่ได้ คือ ค่าตัวเลขของ x ยกกําลังด้วย y (xy)

32

เมธอดในคลาส Math (1)

เมธอด sqrt() เป็นเมธอดหาค่ารากที่สองของข้อมูล ซึ่งมีรูปแบบการใช้งานดังนี้

Math.sqrt(x);

โดยที่ x เป็นค่าตัวเลขที่ต้องการถอดรากที่สอง

ผลที่ได้ คือ ค่ารากที่สองของ x ()

33

เมธอดในคลาส Math (2)

• เมธอด abs() เป็นเมธอดหาค่าสัมบูรณ์ของข้อมูล มีรูปแบบ ดังนี้

Math.abs(x);

โดยที่ x เป็นค่าตัวเลขที่ต้องการหาค่าสัมบูรณ์

ผลที่ได้ คือ ค่าสัมบูรณ์ของ x

34

เมธอดในคลาส Math (2)

เมธอด round() เป็นเมธอดปัดเศษทศนิยมเป็นจํานวนเต็ม มีรูปแบบ ดังนี้

Math.round(x);โดยที่ x เป็นค่าตัวเลขที่ต้องการปัดเศษทศนิยม

ผลที่ได้ คือ ค่าตัวเลขใน 2 รูปแบบ คือ- ถ้าตัวเลขหลังจุดทศนิยมมีค่ามากกว่าหรือเท่ากับ 5 จะปัดค่า

ตัวเลขหลังจุดทศนิยมขึ้น- ถ้าตัวเลขหลังจุดทศนิยมมีค่าน้อยกว่า 5 จะตัดค่าตัวเลขหลัง

จุดทศนิยมทิ้ง

35

เมธอดในคลาส Math (3)

เมธอด ceil() เป็นเมธอดปัดเศษทศนิยมขึ้นเป็นจํานวนเต็ม มีรูปแบบ ดังนี้

Math.ceil(x);โดยที่ x เป็นค่าตัวเลขที่ต้องการปัดเศษทศนิยมขึ้น

ผลที่ได้ คือ ค่าตัวเลขที่ปัดค่าหลังจุดทศนิยมขึ้นเป็นจํานวนเต็ม

36

เมธอดในคลาส Math (3)

เมธอด floor() เป็นเมธอดปัดเศษทศนิยมลงเป็นจํานวนเต็ม มีรูปแบบ ดังนี้

Math.floor(x);โดยที่ x เป็นค่าตัวเลขที่ต้องการปัดเศษทศนิยมทิ้งไป

ผลที่ได้ คือ ค่าตัวเลขที่ปัดค่าตัวเลขหลังจุดทศนิยมลงเป็นจํานวนเต็ม

37

เมธอดในคลาส Math (3)

เมธอด max() เป็นเมธอดหาค่าสูงสุดจากข้อมูล 2 ตัว มีรูปแบบ ดังนี้

Math.max(x, y);โดยที่ x เป็นค่าตัวเลขตัวที่ 1 ที่ต้องการหาค่าสูงสุด

y เป็นค่าตัวเลขตัวที่ 2 ที่ต้องการหาค่าสูงสุดผลที่ได้ คือ ค่าข้อมูลที่สูงที่สุดระหว่างค่า x กับค่า y

38

เมธอดในคลาส Math (4)

เมธอด min() เป็นเมธอดหาค่าต่ําสุดจากข้อมูล 2 ตัว มีรูปแบบ ดังนี้

Math.min(x, y);

โดยที่ x เป็นค่าตัวเลขตัวที่ 1 ที่ต้องการหาค่าตํ่าสุด

y เป็นค่าตัวเลขตัวที่ 2 ที่ต้องการหาค่าตํ่าสุด

ผลที่ได้ คือ ค่าข้อมูลที่ต่ําที่สุดระหว่างค่า x กับค่า y

39

เมธอดในคลาส Math (4)

เมธอด PI() เป็นเมธอดแสดงค่า Pi = 3.141592653589793

Math.PI();

ผลที่ได้ คือ ค่าตัวเลข PI ซึ่งเท่ากับ 3.141592653589793

เมธอด random() เป็นเมธอดสุ่มตัวเลขเป็นจํานวนทศนิยมมีค่า 0-1 มีรูปแบบ ดังนี้

Math.random();

ผลที่ได้ คือ ค่าตัวเลขที่ได้จากการสุ่มเป็นจํานวนทศนิยมที่มีค่าระหว่าง 0-1

40

เมธอดในคลาส Math (5)

เมธอด log() เป็นเมธอดหาค่า log ของข้อมูล มีรูปแบบ ดังนี้Math.log(x);โดยที่ x เป็นค่าตัวเลขที่ต้องการหาค่า log

ผลที่ได้ คือ ผลลัพธ์ของการหาค่า log ของ x (log x)

เมธอด exp() เป็นเมธอดหาค่า e ยกกําลังของข้อมูล มีรูปแบบ ดังนี้Math.exp(x);โดยที่ x เป็นค่าตัวเลขที่ต้องการหาค่า e ยกกําลัง

ผลที่ได้ คือ ผลลัพธ์ค่า exponential ของ x (ex)41

เมธอดในคลาส Math (5)

เมธอด sin() เป็นเมธอดหาค่า sine ของมุมที่กําหนด มีรูปแบบ ดังนี้Math.sin(x);โดยที่ x เป็นขนาดของมุมที่ต้องการหาค่า sin

ผลที่ได้ คือ ผลลัพธ์ค่า sine ของ x (sin(x))

42

เมธอดในคลาส Math (6)

เมธอด cos() เป็นเมธอดหาค่า cosine ของมุมที่กําหนด มีรูปแบบ ดังนี้

Math.cos(A);

โดยที่ x เป็นขนาดของมุมที่ต้องการหาค่า cosine

ผลที่ได้ คือ ผลลัพธ์ค่า cosine ของ x (cos(x))

43

เมธอดในคลาส Math (6)

เมธอด tan() เป็นเมธอดหาค่า tangent ของมุมที่กําหนด มีรูปแบบ ดังนี้

Math.tan(x);

โดยที่ x เป็นขนาดของมุมที่ต้องการหาค่า tangent

ผลที่ได้ คือ ผลลัพธ์ค่า tangent ของ x (tan(x))

44

โปรแกรมแสดงการใช้เมธอดในคลาส Math

45

โปรแกรมแสดงการใช้เมธอดในคลาส Math

46

เมธอดในคลาส Calendar

เป็นเมธอดที่ทํางานกับข้อมูลด้านวันที่และเวลา อยู่ในแพ็คเกจ java.util.Calendar

ในการใช้งานผู้อ่านจะต้องสร้างออบเจ็กต์ของคลาส Calendar ก่อน จากนั้นเรียกใช้เมธอดที่ต้องการ

47

เมธอดในคลาส Calendar

โดยที่

calenName เป็นชื่อออบเจ็กต์

getInstance เป็นเมธอดสําหรับการสร้างออบเจ็กต์ปฏิทิน

getTime เป็นเมธอดที่ให้ค่าวันที่และเวลาปัจจุบัน

48

เมธอด format ของคลาส SimpleDateFormat

ใช้แสดงผลวันที่และเวลาในรูปแบบที่แตกต่างกัน

อยู่ในแพคเกจ java.text.SimpleDateFormat มีรูปแบบ ดังนี้

49

รหัสแสดงผลวันเดือนปี และเวลา

50

รหัสแสดงผล ค าอธิบายyyyy แสดงปีศักราชMM แสดงเดือนเป็นตัวเลข 2 หลักww แสดงสปัดาหข์องปีWW แสดงสปัดาหข์องเดือนdd แสดงวันที่F แสดงวันของสัปดาห์เป็นตัวเลขEEE แสดงวันของสัปดาหเ์ป็นตัวอักษรย่อภาษาอังกฤษa แสดง AM,PMHH แสดงชั่วโมงแบบ 0-23 hh แสดงชั่วโมงแบบ 1-12kk แสดงชั่วโมงแบบ 1-24KK แสดงชั่วโมงแบบ 0-11mm แสดงนาทีss แสดงวินาที

เมธอดในคลาส Date

เป็นเมธอดที่จัดการข้อมูลที่เกี่ยวกับ Date ที่สามารถให้ค่าวันที่และเวลาได้เช่นเดียวกับเมธอดในคลาส Calendar

อยู่ในแพ็คเกจ java.util.Date มีรูปแบบ ดังนี้

51

เมธอดในคลาส Date

โดยที่

DateName เป็นชื่อออบเจ็กต์

new Date() เป็นการสร้างออบเจ็กต์ Date

getTime() เป็นเมธอดที่ให้ค่าวันที่และเวลาปัจจุบัน

52

รหัสแสดงผลวันเดือนปี และเวลา

53

รหัสแสดงผล ค าอธิบายyyyy แสดงปีศักราชMM แสดงเดือนเป็นตัวเลข 2 หลักww แสดงสัปดาห์ของปีWW แสดงสัปดาห์ของเดือนdd แสดงวันที่F แสดงวันของสัปดาห์เป็นตัวเลขEEE แสดงวันของสัปดาห์เป็นตัวอักษรย่อภาษาอังกฤษa แสดง AM,PMHH แสดงชั่วโมงแบบ 0-23 hh แสดงชั่วโมงแบบ 1-12kk แสดงชั่วโมงแบบ 1-24KK แสดงชั่วโมงแบบ 0-11mm แสดงนาทีss แสดงวินาที

Reference

• ผศ.สุดา เธียรมนตรี, คู่มือเรียนเขียนโปรแกรมภาษา Java.บริษัท ไอดีซี พรีเมียร์ จํากัด .กรุงเทพฯ: 2555.

54

top related