บทที่ 6 เมธอด.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
การจัดการความผิดพลาด
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
ครั้งที่ 8 Function.
Object and classes.
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
05_3_Constructor.
ฟังก์ชั่น function.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
C Programming Lecture no. 6: Function.
Selected Topics in IT (Java)
การสืบทอด (Inheritance)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (3) (Class & Object)
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (2).
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
OOP (Object-Oriented Programming)
Inheritance การสืบทอดคลาส
รู้จักและใช้งาน Applet
บทที่ 8 อาร์เรย์.
ทำงานกับ File และStream
ตัวแปรกับชนิดของข้อมูล
การแปลงชนิดข้อมูลของตัวแปร
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
คณิตศาสตร์ และการจัดรูปแบบ
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
บทที่ 4 การใช้ตัวดำเนินการ
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
Method of Class อ.สุพจน์ สิงหัษฐิต
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
การเขียนโปรแกรม ตอนที่ 1 (ต่อ)
Object-Oriented Programming
บทที่ 3 Class and Object (2).
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
บทที่ 2 การแสดงผลและรับข้อมูล
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Java Programming Java Structure and Datatype,Variable
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
การแสดงผลและการรับข้อมูล (Data Output and Input)
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
Object-Oriented Programming
คอนสตรัคเตอร์ (Constructor)
การกระทำทางคณิตศาสตร์
การจัดการกับความผิดปกติ
Variable, Data type, Expression, Operators Data input, Data output
chapter 2 - Construction and destruction - Overloading method
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
เริ่มต้นเขียนโปรแกรมภาษาจา วา (Introduction to JAVA Programming)
Chapter 6 Abstract Class and Interface
บทที่ 3 การสืบทอด (Inheritance)
ใบสำเนางานนำเสนอ:

บทที่ 6 เมธอด

เมธอดคืออะไร เมธอด (Method) คือ ความสามารถในการทำงานของออบเจ็กต์ มันถูกสร้างขึ้นมาพร้อมกับการสร้างออบเจ็กต์ ซึ่งออบเจ็กต์ที่สร้างจากคลาสเดียวกันก็จะมีรายการของเมธอดต่างๆ เหมือนกัน การที่ออบเจ็กต์มีเมธอดจะช่วยให้ผู้ใช้งาน ไม่ต้องกังวล หรือไม่ต้องสนใจว่า จะมีวิธีการทำงานภายในเมธอดเป็นอย่างไร สนใจเพียงแค่ใช้งานอย่างไร ช่วยให้เมธอดที่มีไม่ถูกยุ่งย่ามก้าวก่ายโดยไม่จำเป็น แต่ละเมธอดจะแบ่งหน้าที่กันทำงาน แต่ก็สามารถทำงานร่วมกันได้ และสามารถเรียกใช้ได้หลายครั้ง เมธอดมีทั้งประเภทที่ผู้ใช้สร้างขึ้นมาเองและเมธอดที่จาวามีให้ใช้อยู่แล้ว

เมธอดหลักและเมธอดย่อย สร้างขึ้นเพื่อเรียกเมธอดอื่นๆ ขึ้นมาทำงาน มีการเข้าถึงเมธอดหลักแบบสาธารณะ(public) สามารถนำเมธอดหลักไปใช้ได้กับทุกๆ คลาส สามารถเรียกใช้งานได้ทันทีไม่ต้องผ่านออบเจ็กต์ ไม่มีการคืนค่ากลับไปที่เมธอดอื่น

Method Invocation main Method A Method B Method A() Method B()

Ch5_1.java public class ch5_1 { public static void main(String[] args) { System.out.println("I am starting in main."); deep(); System.out.println("Now, I am back in main."); } //end of main public static void deep(){ System.out.println("I am now in deep"); deeper(); System.out.println("Now, I am back in deep"); } // end of deep public static void deeper(){ System.out.println("I am now in deeper"); }// end of deeper } // end of class

Ch5_1.java (edit) public class ch5_1 { public static void main(String[] args) { System.out.println("I am starting in main."); useDeep.deep(); System.out.println("Now, I am back in main."); } //end of main } // end of class ch5_1 class useDeep { public static void deep(){ System.out.println("I am now in deep"); deeper(); System.out.println("Now, I am back in deep"); } // end of deep public static void deeper(){ System.out.println("I am now in deeper"); }// end of deeper } // end of class useDeep

Result of ch5_1.java I am starting in main. I am now in deep I am now in deeper Now, I am back in deep Now, I am back in main.

การส่งค่าอาร์กิวเมนต์และเมธอดที่มีการส่งค่ากลับ import java.util.Scanner; public class testMax { public static void main(String[] args) { int num1,num2, num3; Scanner keyboard = new Scanner(System.in); System.out.println("Enter number1 :"); num1 = keyboard.nextInt(); System.out.println("Enter number2 :"); num2 = keyboard.nextInt(); num3 = max(num1,num2); System.out.println("The Maximum of "+num1+" and "+num2+" is "+num3); }// end of main static int max(int a,int b){ if (a>b) return a; else return b; } // end of max }//end of class 1 2 3 4

ตัวแปรแบบ local สามารถใช้ได้เฉพาะภายในเมธอดเท่านั้น ทำให้เมธอดหลายๆเมธอดสามารถใช้ชื่อตัวแปรชื่อเดียวกันได้ public class LocalVars { public static void main(String[] args){ texas(); california(); } // end of main public static void texas() { int birds = 500; System.out.println("In texas, there are "+birds+" birds."); } // end of texas public static void california() { int birds = 3500; System.out.println("In california, there are "+birds+" birds."); } // end of california } // end of class In texas, there are 500 birds. In california, there are 3500 birds.

เมธอดหลักและเมธอดย่อย (ต่อ) รูปแบบการสร้างเมธอดหลัก สำหรับเมธอดย่อยทั่วๆ ไปที่ไม่ใช่เมธอดหลัก อาจเป็น static method ,instant method, contructor method, Overloading method หรือ Overriding method ก็ได้ แต่ละชนิดมีโครงสร้างไม่เหมือนกับเมธอดหลัก ส่วนประกอบบางอย่างอาจมีหรือไม่มีก็ได้ตามแต่ลักษณะการทำงาน public static void main(String[ ] args) { รายละเอียดการทำงานในเมธอด }

เมธอดหลักและเมธอดย่อย(ต่อ) รูปแบบการสร้างเมธอดย่อย การเข้าถึงเมธอด ชนิดของข้อมูลที่จะส่งกลับออกไป ชื่อเมธอด (ลักษณะของตัวแปรส่ง ชื่อตัวแปรส่ง) { รายละเอียดการทำงานในเมธอด }

Method รูปแบบต่างๆ เมธอดมีอยู่ด้วยกัน 5 ประเภทแบ่งตามลักษณะการทำงานดังนี้ ประเภทที่ 1 : static method static method เป็นเมธอดที่เรียกใช้ตัวแปรได้ทันที ไม่ต้องมีการสร้างออบเจ็กต์ขึ้นมาเพื่อเรียกใช้ตัวแปร เช่น การคำนวณทางคณิตศาสตร์ ซึ่ง static method จะรับค่าที่ผู้ใช้ต้องการคำนวณ และทำการคำนวณ แล้วส่งผลลัพธ์กลับไปยังผู้ใช้

Method รูปแบบต่างๆ ประเภทที่ 2 :instance method เป็นเมธอดทั่วๆ ไปที่สร้างขึ้นมาใช้กันบ่อยๆ เมธอดแบบนี้จะไม่มีคำว่า static อยู่ข้างหน้าตัวแปร เมื่อจะเรียกใช้ method ประเภทนี้ จะต้องมีการสร้างออบเจ็กต์ขึ้นมา ค่าของข้อมูลจะเปลี่ยนไปตามออบเจ็กต์ที่สร้างขึ้นและการเรียกประมวลผลต้องเรียกผ่านชื่อออบเจ็กต์นั้น

Method รูปแบบต่างๆ ประเภทที่ 3 : constructor method คอนสตรัคเตอร์เมธอด ไม่มีคืนค่าข้อมูล

Constructor

Start Color = Black Start Speed = 0 Current Color: Pink 5 10

Method รูปแบบต่างๆ ประเภทที่ 4 : Overloading method Overloading method คือ เมธอดหลายเมธอดที่มีชื่อเดียวกัน แต่มีชนิดของตัวแปรต่างชนิดกัน หรือจำนวนอาร์กิวเมนต์ไม่เท่ากัน เพราะงานบางงานอาจใช้ชื่องานเดียวกัน แต่ต้องมีการแยกแยะว่า มีการส่งค่าตัวแปรชนิดใดมา เช่น ถ้าส่งค่าตัวแปรมาเป็น Integer ก็ให้ทำงานในเมธอดหนึ่ง ถ้าส่งมาเป็น String ก็ให้ทำงานในอีกเมธอดหนึ่ง

Area in Trinagle = 27.597292 Area in Circle = 218.4072

Method รูปแบบต่างๆ ประเภทที่ 5 : Overriding method Overriding method คือ เมธอดหลายเมธอดที่มีชื่อเดียวกัน ชนิดของตัวแปรเหมือนกัน แต่เขียนโปรแกรมในลักษณะที่เมธอดหนึ่งอยู่ในคลาสแม่ อีกเมธอดหนึ่งอยู่ในคลาสลูก ซึ่งเมื่อมีเมธอดชื่อซ้ำกัน รับค่าของตัวแปรเหมือนกันปรากฏในคลาสลูกโปรแกรมจะทำงานตามคำสั่งในคลาสลูกโดยอัตโนมัติ ซึ่งส่วนนี้เราจะอธิบายอย่างละเอียดในบท Inheritance

Method รูปแบบต่างๆ ตัวอย่าง Overriding method Cell phone can tel. Cell phone can tell. PDA phone GPS feature. Cell phone can tel. PDA phone can tell… PDA phone GPS feature. SuperClass SubClass

ก่อนจบบท ในบทนี้เราได้เรียนรู้เกี่ยวกับการใช้งานเมธอดอย่างละเอียด ซึ่งมีการใช้งานหลากหลายทั้งที่เป็นเมธอดหลัก (เมธอด main) ที่เราคุ้นเคย หรือเมธอดชนิด instance method, เมธอดชนิด static method รวมทั้งเมธอดชนิดพิเศษที่ทำงานตอนที่เริ่มต้นสร้างออบเจ็กต์นั่นคือ constructor method รวมทั้งการที่เราสามารถใช้เมธอดที่มีชื่อเดียวกัน (แต่อาร์กิวเมนต์ต่างกัน) ในรูปแบบของ Overloading method และการดัดแปลงเมธอดที่ได้จากการสืบทอดคลาสคือ Overriding Method

Public static void main(String, arg[]) { double Area; Assignment#4 จงหาข้อผิดพลาดในการเขียนเมธอดต่อไปนี้ พร้อมทั้งแก้ไขให้ถูกต้อง 1.1 Public static void main(String, arg[]) { double Area; double Width = 5; double Height = 4; Area = Width*Height; return Area; } // end of main

1.2 public static int half(double num) { double result = num/2.0; return result; } 1.3 public static double timesTwo(double num) { double result = num*2;

1.4 public static void main(String args[]) { double T_Area = Triangle(7;9); System.out.println(“พื้นที่สามเหลี่ยมฐาน ”+Base+ “ สูง”+Height+ “ คือ”+ “T_Area”); } // end of main Public double Triangle (int Base, Height) { Area = 0.5*Base*Height; return Area; }

2 ฝึกเขียนโปรแกรม 2.1 จงเขียนโปรแกรมสร้างเมธอดสำหรับคำนวณหาพื้นที่สามเหลี่ยม โดยให้อินพุตเป็นความยาวฐานและส่วนสูง เอาท์พุตเป็นพื้นที่สามเหลี่ยม 2.2 จงเขียนโปรแกรมเพื่อสร้างเมธอด main รับค่าเลขจำนวนเต็ม 3 จำนวนมาจากแป้นพิมพ์ แล้วสร้างเมธอด 2 เมธอด สำหรับหาค่าสูงสุด และต่ำสุดของเลขจำนวนเต็ม 3 จำนวน 2.3 จงเขียนโปรแกรมสร้างเมธอดเพื่อหาค่า x ยกกำลังสาม โดยที่ x เป็นเลขจำนวนเต็มตั้งแต่ 1 ถึง 100