Method

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Method as PDF for free.

More details

  • Words: 1,011
  • Pages: 46
Method

Vuttichai Vicheanchai http://www.it.msu.ac.th/onizuka email : [email protected] 1

คลาส(class)

• การสร้างคลาส (class) • รูปแบบ [modifier] class <ชื่อคลาส> { ; Method() { <Statements>; } } 2

คลาส(class)

public class Pen { Color color; float price; Attributes float thickness; void drawLine() { …………. Statement ………. } Color getColor() { ……….. Statement …………. }

Method

} 3

เมธอด (method)

• คือชุดคำาสั่งทีท่ ำางานอย่างใดอย่างหนึง่ อาจมีการคืนค่ากลับออกมาหรือไม่ก็ได้ • เมธอดช่วยลดขั้นตอนการเขียนโปรแกรมที่มีการทำางานซำ้าซ้อน ให้ไม่ต้องเขียนซำ้าๆ • เมธอดต้องอยู่ภายใต้ { } ของคลาสเท่านัน้ • เมธอดอยู่ภายใต้ { } ของเมธอดอื่นไม่ได้

4

เมธอด (method)

• ตัวอย่าง • จงเขียนโปรแกรมคำานวนหาค่าของ 4 ยกกำาลัง 7 โดยไม่ใช้ Math.pow(); int result = 1; for(int i = 1;i<=7;i++) result *= 4; System.out.println(result); 5

เมธอด (method)

• จงเขียนโปรแกรมคำานวนหาค่าของ 4 ยกกำาลัง 7 for(int i = 1;i<=7;i++) result *= 4; System.out.println(result); 2 ยกกำาลัง 5 for(int i = 1;i<=5;i++) result *= 2; 45 ยกกำาลัง 6 System.out.println(result); 7 power 9 for(int i = 1;i<=6;i++) result *= 45; 10 power 8 System.out.println(result); โดยไม่ใช้ Math.pow(); 6

เมธอด (method)

• เมธอดมีขึ้นเพื่อลดขั้นตอนของการทำางาน for(int i = 1;i<=เลขยกกำาลัง;i++) result *= เลขฐาน; System.out.println(result);

7

การประกาศเมธอด

• รูปแบบ [modifier] <ชื่อเมธอด>(พารามีเตอร์) { <statements>; } • return type คือชนิดข้อมูลของผลลัพธ์ที่คืนกลับมาจากเมธอดหลังจากทำางา นเสร็จสิ้นแล้ว • พารามีเตอร์ คือ ค่าของข้อมูลที่ส่งเข้าไปในเมธอด เพื่อนำาไปใช้ในการทำางานต่อไป 8

การประกาศเมธอด • ตัวอย่าง

1. return type คือคำาว่าอะไร 2. พารามีเตอร์มีกี่ตัว อะไรบ้าง มีชนิดข้อมูลคืออะไร 9

return type • • • • • • • •

คือ ชนิดของข้อมูลที่มีการคืนค่าออกมาจากเมธอด void = เมธอดนั้นไม่มีการคืนค่าใดๆเลย int = ผลลัพธ์ของเมธอดคืนค่าออกมาเป็น int float = ผลลัพธ์ของเมธอดคืนค่าออกมาเป็น float String = ผลลัพธ์ของเมธอดคืนค่าออกมาเป็น String char = ผลลัพธ์ของเมธอดคืนค่าออกมาเป็น char ชนิดข้อมูลอืน่ ๆ เมธอดที่มี return type ทีไ่ ม่ใช่ void ต้องมีคำาสั่ง return ด้วยเสมอ

10

ตัวอย่าง return type

• คำาถาม • return type มีชนิดข้อมูลคือ ? • ถ้ามี return type ที่ไม่ใช่ void ต้องมีคำาสั่งอะไรเสมอ 11

ชื่อเมธอด

• หลักการตัง้ ชื่อ • ตั้งให้สื่อความหมาย • ถ้าเมธอดทำาหน้าที่ในการกำาหนดค่าให้โปรแกรมควรขึ้นต้นด้วย คำาว่า set (เรียกว่า setter method) • ถ้าเมธอดทำาหน้าที่ในการดึงค่าจากโปรแกรมควรขึ้นต้นด้วยคำาว่ า get (เรียกว่า getter method)

12

ชื่อเมธอด

• ตัวอักษรตัวแรกของคำาแรกจะเป็นตัวเล็ก (lower case) • ตัวอักษรตัวแรกของคำาต่อไปจะเป็นตัวใหญ่ (upper case) OK compareTo()

max() setDefaultColor()

NO K compareto() CompareTo() compare_to() MAX() setdefaultcolor() set_default_color() SetDefaultColor()

13

ชื่อเมธอด • Setter Method OK

NO K

setColor()

changeColor()

setLocation()

makeLocationTo()

setFont()

goToFont()

14

ชื่อเมธอด • Getter Method OK

NO K

getColor()

checkColorForMe()

getName()

whatIsName()

getWidth()

widthOfSquare()

15

ชื่อเมธอด • ถ้าเมธอดทำาหน้าที่ในการตรวจสอบสิ่งใดๆ ควรขึ้นต้นว่า is OK

NO K

isLetter()

checkTheLetter()

isLoweCase()

lowerCharacter()

isTitleCase()

titleLetterOrNot()

16

พารามิเตอร์ของเมธอด

• พารามีเตอร์คือ ค่าของข้อมูลที่จะถูกส่งเข้าไปใน เมธอด เพื่อนำาไปใช้ในการทำางานภายในเมธอดต่อไป • รูปแบบ <ชื่อเมธอด>(พารามีเตอร์ตัวที่ 1, พารามีเตอร์ตัวที่ 2,……) • พารามีเตอร์ ทุกตัวต้องมีการกำาหนดชนิดข้อมูล power(int base, int exp) • พารามีเตอร์แต่ละตัวมีชนิดข้อมูลที่ต่างกันได้ copyString(String str, int index)

17

การใช้งานพารามิเตอร์

void methodA(){ char c = 'E'; int i = 30; output(c, i); }

ตัวนี้คอื การส่งค่าเข้าไปให้เมธอด ตัวนี้คอื การรับค่าเข้าไปในเมธอด

void output(char ch, int size ){ for(int i = 0;i<size; i++) System.out.println(ch); } 18

การใช้งานเมธอด

class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } • คำาถาม • โปรแกรมนี้มีเมธอดหรือไม่ • เมธอดชื่ออะไร, return type, พารามีเตอร์คืออะไร

19

การเรียกใช้เมธอด

• ขั้นตอนการเรียกใช้เมธอด 2. สร้าง Object ของคลาสทีเ่ มธอดนั้นเป็นสมาชิกอยู่โดยคำาสั่ง รูปแบบ <ชื่อคลาส> <ชื่อObject> = new <ชื่อคลาส>( ); Hello myObj = new Hello(); 2. เมื่อสร้าง Object แล้วจึงจะเรียกใช้งานเมธอดได้ โดยการใช้ . (จุด) ต่อท้าย Object แล้วตามด้วยชื่อเมธอด myObj.printLine();

20

การใช้งานเมธอด

class HelloWorld { public static void main(String[] args) { HelloWorld h = new HelloWorld(); h.print(); } void print() { System.out.println("Hello World!"); } } 21

การใช้งานเมธอด

22

ขอบเขตของตัวแปร(ทบทวนของเดิม)

• ขอบเขตของตัวแปรเป็นสิ่งที่ต้องคำานึงถึงในการเขียนโปรแกร มที่เมธอด • ตัวแปรใดประกาศในเมธอดไหน จะใช้งานได้เฉพาะในเมธอดนั้นเท่านั้น • ขอบเขตของตัวแปร ดูจาก { } ว่าตัวแปรอยู่ภายใต้ { } ใด

23

ขอบเขตของตัวแปร

ผิดตรงไหน

24

ขอบเขตของตัวแปร

num2 อยู่ใน{ } นี้เท่านั้น i อยู่ในลูป for เท่านั้น 25

Static method

• คือเมธอดที่ถูกสร้างทันทีที่มีการรันโปรแกรม แล้วเก็บเมธอดไว้ในหน่วยความจำาเพื่อสามารถเรียกใช้งานได้ทั นที • การสร้าง static method • ต้องมีคำาว่า static ขึ้นต้นเมธอดเสมอ

• ตัวอย่าง static void printStar(int number) static double calTax(double salary) 26

การใช้งาน Static method

• การใช้งาน static method สามารถเรียกใช้งานได้ทันที ไม่ต้องมีการสร้าง Object ของคลาสก่อน

non Static method

Static method

27

Static method

• การเลือกใช้ Static method กับ non Static method • ในเมื่อ Static method สร้างแล้วเรียกใช้งานได้เลย โดยไม่ต้องสร้าง Object ของคลาสก่อน สะดวกกว่า • ทำาไมไม่เขียนเป็น Static ทั้งหมดเลย • ตัวอย่าง ถ้า static method 1 method จองพื้นที่หน่วยความจำา 100 kB 100 method เท่ากับ 100 * 100 = 10000 kB เพียง 3 method เท่านัน้ method ที่จองไว้ไม่ได้ใช้ 9700 kB 28

Static method

• การขียนโปรแกรมที่ถกู ต้องหากไม่จำาเป็นไม่ควรสร้างเมธอดเป็ น Static method • เนื่องจาก ทำาให้จองหน่วยความจำาโดยไม่ใช้ประโยชน์เท่าที่ควร • ในการเรียนวิชานี้ ยังไม่ต้องเขียนแบบ Static ให้เขียนเป็น non Static ก่อน

29

Setter method

• เมธอดที่ทำาหน้าที่ในการกำาหนดค่าให้คำาสิ่งต่างๆในโปรแกรม • setter method มักขึ้นต้อนด้วยคำาว่า set • Setter method มักใช้ในการกำาหนดค่าให้กบั Attribute ของโปรแกรม • Attribute คือตัวแปรที่ประกาศภายในคลาส แต่ไม่ได้อยู่ภายใต้ method ใดๆ

30

Setter method Attribute

สั่งให้ไปกำาหนดค่า firstName ให้เป็น “Peter” Setter Method

31

Getter method

• เมธอดที่ทำาหน้าที่ในการนำาค่าในโปรแกรมมาใช้งาน • getter method มักขึ้นต้อนด้วยคำาว่า get • Getter method มักใช้ในการนำาค่าของ Attribute มาใช้งาน

32

Setter method Attribute

นำาค่า firstName มาแสดง

Getter Method 33

Overloading method

• คือการสร้างเมธอดให้มีชื่อเหมือนกันได้ • แต่ พารามิเตอร์ตอ้ งแตกต่างกัน • จำานวน • ชนิดข้อมูล

• จาวาจะเลือกเองโดยอัตโนมัติว่าจะไปทำางานที่เมธอดใด โดยดูจาก พารามิเตอร์เป็นหลัก

34

Overloading method จาวาจะเช็คเองว่าจะทำางานที่เมธอดใด PrintLine ไม่มีพารามิเตอร์

PrintLine มีพารามิเตอร์ 1 ตัว 35

Overloading method

PrintLine พารามิเตอร์ 1 ตัวเป็น char PrintLine พารามิเตอร์ 1 ตัว int 36

การส่งผ่านค่าในเมธอด

• การส่งผ่านค่ามี 2 แบบคือ Pass by value Pass by reference • Pass by value คือการส่งข้อมูลเข้าออกจากเมธอดโดยการส่งค่าของตัวแปรนั้น • Pass by reference คือการส่งข้อมูลเข้าออกจากเมธอดโดยการส่งค่าตำาแหน่งของตั วแปรนัน้ 37

Pass by Value

• ชนิดข้อมูลพืน้ ฐานทั้งหมด เช่น char, int , double จะมีการส่งค่าแบบ pass by value • เมื่อส่งข้อมูลเข้าออกจากเมธอด จาวาจะทำาการจองพืน้ ที่ในหน่วยความจำาใหม่ทกุ ครั้ง • หากส่งตัวแปรเข้าไปในเมธอด แล้วมีการเปลี่ยนแปลงค่าตัวแปรนั้นในเมธอด ตัวแปร ต้นทางจะไม่ถูกเปลี่ยนแปลงด้วย 38

Pass by Value

void methodA(){ char c = 'E'; int i = 30; output(c, i); System.out.println(c + i); } c

i

E

30

39

Pass by Value

void methodA(){ char c = 'E'; int i = 30; output(c, i); System.out.println(c + i); } void output(char ch, int size ){ c

i

E

30

for(int i = 0;i<size; i++) System.out.println(ch); ch = 'P'; size = 20; }

ch E

size 30

40

Pass by Value

void methodA(){ char c = 'E'; int i = 30; output(c, i); System.out.println(c + i); } void output(char ch, int size ){ c

i

E

30

for(int i = 0;i<size; i++) System.out.println(ch); ch = 'P'; size = 20; }

ch P

size 20

41

Pass by Value

void methodA(){ char c = 'E'; int i = 30; output(c, i); System.out.println(c + i); } void output(char ch, int size ){ c

i

E

30

E

30

for(int i = 0;i<size; i++) System.out.println(ch); ch = 'P'; size = 20; }

ch P

size 20

42

Pass by Reference

• เป็นการส่งผ่านค่าโดยการส่งตำาแหน่ง (address) ของหน่วยความจำาไป • เมื่อส่งข้อมูลเข้าออกจากเมธอด จาวาจะใช้หน่วยความจำาตำาแหน่งเดิมทุกครั้ง • หากส่งตัวแปรเข้าไปในเมธอด แล้วมีการเปลี่ยนแปลงค่าตัวแปรนั้นในเมธอด ตัวแปร ต้นทางจะถูกเปลี่ยนแปลงด้วย 43

Pass by Reference

เซตอาเรย์ต้นทาง[0] ถูกเปลีย่ นเป็น ‘z’ ด้วย เซตอาเรย์ปลายทาง[0] เป็น ‘z’ 44

เมธอดที่สำาคัญ

• charAt(); • คือเมธอดทีใ่ ช้ในการดึงค่าตัวอักษร ออกจากข้อความ (String) โดยระบุตำาแหน่งที่ต้องการ • ตัวอย่าง

• ผลลัพธ์ ch = ‘P’ • อย่าลืม จาวาเริ่มนับจาก ศูนย์

45

เมธอดที่สำาคัญ

• toCharArray(); • คือเมธอดที่ใช้ในการแยกตัวอักษรแต่ละตัวออกจากข้อความแล้ วนำาไปเก็บในอาเรย์ของ char • ตัวอย่าง

• ผลลัพธ์ x = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘ ‘, ‘P’, ‘e’, ‘t’, ‘e’, ‘r’} 46

Related Documents

Method
November 2019 62
Method
November 2019 65
Method
November 2019 56
Method
June 2020 29
Research Method
June 2020 8
Sq3r Method
May 2020 12