WEEK#16: Method เมธอดคือกลุ่มคําสั่งที่ถูกกําหนดขึ้นเพื่อทำงาน อย่างใดอย่างหนึ่งเพื่อให้ได้ผลลัพธ์ตาม ต้องการ การประกาศเมธอด มีรูปแบบดังนี้ [modifier] return_type Methodname ([parameter]) { [method_body] } การจัดการ parameter และ return_type ทำ ได้ 4 แบบ คือ ไม่มี parameter และ ไม่คืนค่า - void calWage() มี parameter และ ไม่คืนค่า - void calWage(int h, float r) ไม่มี parameter และ คืนค่า - float calWage() มี parameter และ คืนค่า - float calWage(int h, float r) 1
เรียกใช้ผ่าน การสร้างออบเจ็กต์จากคลาสที่ มีเมธอดที่ต้องการเรียกใช้ และเรียกใช้เมธอด ผ่านออบเจ็กต์ Fare x = new Fare(); float total = x.calFare(rate,peple); การเรียกใช้เมธอด 2 Instant Method
เมธอดที่สามารถเรียกใช้ได้โดยไม่ต้องสร้าง ออบเจ็กต์ โดยเรียกใช้เมธอดประเภทนี้ผ่านชื่อคลาสได้ เลย แต่จะต้องเรียกใช้จากเมธอดประเภท static method เหมือนกันเท่านั้น Static Method (1) 3 class Mymaths { public static double powerFive(float num){ return Math.pow(num, 5); } public class statMethod { public static void main(String[] args) { System.out.println("powerFive of 2 = " + Mymaths. powerFive(2)); }
เป็นคุณลักษณะของการมีได้หลายรูปแบบ (Polymorphism) มีการใช้เมธอดที่มีชื่อเหมือนกันมากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกันแต่ให้ผลลัพธ์ที่แตกต่างกัน จำนวนและชนิดข้อมูลของพารามิเตอร์ต่างกัน ชนิดข้อมูลที่คืนค่าต่างกัน งานที่มีการนำ Overloading Method มาใช้ มักจะ เป็นงานที่มีการคำนวณหรือการประมวลผลที่แบบ เดียวกัน แต่อาจต่างกันด้วยข้อมูล หรือเงื่อนไข บางอย่าง Overloading Method (1) 4
class employee { float setsalary(int t) { float salary=0; switch (t) { case 1: salary = 10000; break; case 2: salary = 20000; break; } return salary; } String setsalary(String t) { String salary=""; if (t.equals( "A")) salary = "$750"; if (t.equals( "B")) salary = "$500"; return salary; } Overloading Method (2) 5
public class EMPLOYEES { public static void main(String[] args) { String data =JOptionPane.showInputDialog("Enter Employee Type (1 or 2) "); int n =new Integer(data); employee x = new employee(); float s1 = x.setsalary(n); JOptionPane.showMessageDialog(null,"Salary = "+ s1 + " TH Baht"); data =JOptionPane.showInputDialog("Enter Employee Level (A or B) "); String s2 = x.setsalary(data); JOptionPane.showMessageDialog(null,"Salary = "+s2 + " US Dollar"); } Overloading Method (3) 6
class grade { float totalscore; String grade; String calGrade(int t) { grade = "U"; totalscore = t; if (t >= 60) grade = "S"; return grade; } String calGrade(float t1, float t2, float t3) { grade = "F"; float t = t1+t2+t3; totalscore = t; if (t >= 80) grade = "A"; else if(t >= 70) grade = "B"; else if(t >= 60) grade = "C"; else if(t >= 50) grade = "D"; return grade; } Overloading Method (4) 7
public class GRADES { public static void main(String[] args) { String s="", data1, data2, data3, title=""; grade x = new grade(); data1 = (JOptionPane.showInputDialog(null,"1. วิชาโครงงาน / ฝึกงาน \n2. วิชาเรียนทั่วไป \nSelect 1 or 2","Score Input", JOptionPane.QUESTION_MESSAGE)); int n = new Integer(data1); Overloading Method (5) 8
switch(n) { case 1 : title = "วิชาโครงงาน/ฝึกงาน"; data1 = JOptionPane.showInputDialog(null,"Enter Score : ",title, JOptionPane.QUESTION_MESSAGE); s = x.calGrade(new Integer(data1)); break; case 2 : title = "วิชาเรียนทั่วไป"; data1 =JOptionPane.showInputDialog(null,"Enter Midterm Score : ",title, JOptionPane.QUESTION_MESSAGE); data2 =JOptionPane.showInputDialog(null,"Enter Final Score : ",title, JOptionPane.QUESTION_MESSAGE); data3 =JOptionPane.showInputDialog(null,"Enter Quiz Scores : ",title, JOptionPane.QUESTION_MESSAGE); s = x.calGrade(new Float(data1),new Float(data2),new Float(data3)); break; default : System.out.println("Select Type 1 or 2 Only"); } JOptionPane.showMessageDialog(null,"คะแนนรวม = " + x.totalscore + " ได้เกรด " + s,title, JOptionPane.INFORMATION_MESSAGE); } Overloading Method (6) 9
switch(n) { case 1 : title = "วิชาโครงงาน/ฝึกงาน"; data1 = JOptionPane.showInputDialog(null,"Enter Score : ",title, JOptionPane.QUESTION_MESSAGE); s = x.calGrade(new Integer(data1)); break; case 2 : title = "วิชาเรียนทั่วไป"; data1 =JOptionPane.showInputDialog(null,"Enter Midterm Score : ",title, JOptionPane.QUESTION_MESSAGE); data2 =JOptionPane.showInputDialog(null,"Enter Final Score : ",title, JOptionPane.QUESTION_MESSAGE); data3 =JOptionPane.showInputDialog(null,"Enter Quiz Scores : ",title, JOptionPane.QUESTION_MESSAGE); s = x.calGrade(new Float(data1),new Float(data2),new Float(data3)); break; default : System.out.println("Select Type 1 or 2 Only"); } JOptionPane.showMessageDialog(null,"คะแนนรวม = " + x.totalscore + " ได้เกรด " + s,title, JOptionPane.INFORMATION_MESSAGE); } Overloading Method (7) 10