เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้

Slides:



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

Suphot Sawattiwong Array ใน C# Suphot Sawattiwong
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
บทที่ 2 รหัสควบคุมและการคำนวณ
โครงสร้างโปรแกรมภาษา C
การจัดการความผิดพลาด
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
คำสั่ง while และ คำสั่ง do..while
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
บทที่ 3 ตอนที่ 1 คำสั่งเงื่อนไขและการตัดสินใจ(p
Structure Programming
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
รับและแสดงผลข้อมูล.
05_3_Constructor.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
C Programming Lecture no. 6: Function.
Selected Topics in IT (Java)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (2).
บทที่ 4 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
OOP (Object-Oriented Programming)
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
Inheritance การสืบทอดคลาส
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
บทที่ 8 อาร์เรย์.
บทที่ 6 เมธอด.
ตัวแปรกับชนิดของข้อมูล
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
โครงสร้างข้อมูลพื้นที่สุด ที่ไม่เคยเลย จะไม่ใช้อาร์เรย์
ให้เกิดความผิดพลาดน้อยที่สุด อย่างน้อยให้โปรแกรมทำงานต่อไปได้
พื้นฐานการโปรแกรม ต้องทราบการใช้คำสั่ง การควบคุม
รู้จักต้นแบบหรือคลาส จะเขียนโปรแกรม C# ได้ดี
3. ชนิดข้อมูล และการดำเนินการกับข้อมูล
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
ตัวแปรกับชนิดของข้อมูล
Method of Class อ.สุพจน์ สิงหัษฐิต
Week 2 Variables.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Computer Programming for Engineers
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
Object-Oriented Programming
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
บทที่ 3 ชนิดข้อมูล ตัวแปร นิพจน์และตัวดำเนินการ
Java Programming Java Structure and Datatype,Variable
อาจารย์ปิยศักดิ์ ถีอาสนา
Recursive Method.
คำสั่งวนซ้ำ.
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้
chapter 2 - Construction and destruction - Overloading method
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
เริ่มต้นเขียนโปรแกรมภาษาจา วา (Introduction to JAVA Programming)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
บทที่ 5 โปรแกรมย่อย.
ใบสำเนางานนำเสนอ:

เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้ 6. Method เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้ C# Programming with Visual C# 2010 Express

เป้าหมายการเรียนรู้ การนิยามเมทธอด ทั้งสเตติก และอินสแตทซ์เมทธอด เมทธอดโอเวอร์โหลด การใช้ตัวแปรเข้าแบบไดนามิกด้วยอะเรย์ ตัวแปรทางเลือกของเมทธอด การเรียกเมทธอดด้วยการระบุชื่อตัวแปร การสร้างเมทธอดอัตโนมัติ กลไกการส่งตัวแปร แนวทางการใช้ตัวแปร การให้เมทธอดเรียกใช้ตัวเอง C# Programming with Visual C# 2010 Express

อะไรคือเมธอด เมทธอดคือกลุ่มของคำสั่ง ภาษาสมัยใหม่ทุกตัวใช้ แนวคิดเดียวกันนี้ เราอาจคิดเปรียบเทียบได้ว่า เมทธอดก็ คือ Function, Subroutine, Procedure, Subprogram เราจะสังเกตได้ง่ายๆ ว่าอะไรเป็นเมทธอด เมทธอด จะมีเครื่องหมาย วงเล็บ “( )” ต่อท้ายชื่อเมทธอด C# Programming with Visual C# 2010 Express

เมธอด Main( ) class Program { static void Main(string[] args) CheckEmpty(); }  private static void CheckEmpty() { } } สังเกตไหม เมธอด ทำไมต้องเป็น static ด้วย ศึกษาต่อไป ก็จะตอบคำถามนี้ได้ C# Programming with Visual C# 2010 Express

การนิยามเมทธอด การตั้งชื่อ ชื่อไม่ควรเริ่มต้นด้วย ขีดล่าง ควรใช้อักษร พิมพ์ใหญ่นำหน้า และควรเป็นคำกริยา การใช้ตัวแปรเข้า จำนวนตัวแปรมีเท่าไหร่ก็ได้ ตัวแปร เข้าแต่ละตัวจะกำหนดชนิดข้อมูลของตัวแปรเข้าด้วย และ จะไม่มีตัวแปรเข้าเลยก็ได้ ทุกคำสั่งภายในเมธอด จะต้องอยู่ภายในเครื่องหมายปีกกา ถึงแม้จะคำสั่งเดียวก็ตาม เมธอดที่มีการคืนค่า ระบุชนิดข้อมูลการคืนค่าก่อนชื่อ เมทธอด และการคืนค่าเป็นชนิดข้อมูลอะไรจะต้องมีคำสั่ง return ภายในส่วนเมธอด เมธอดใดไม่คืนค่าชนิดข้อมูลอะไร ให้ใช้การคืนค่าเป็น void C# Programming with Visual C# 2010 Express

การเรียกใช้เมธอด การเรียกเมธอด ทำได้โดยการเรียกชื่อเมธอดแล้วตามด้วย ตัวแปรเข้าให้ตรงกับที่ได้นิยามไว้ หรือไม่ต้องมีตัวแปรเข้า ในกรณีที่ไม่ได้นิยามตัวแปรเข้าไว้ แต่ยังคงต้องมีวงเล็บ ว่างไว้ ดังนั้นแล้วจะต้องมีวงเล็บเสมอ การเรียกเมธอดจากคลาสอื่น กรณี ไม่เป็น static method ทำได้โดยการเรียกชื่อ คลาสแล้วตามด้วยชื่อเมธอดที่ต้องการของคลาสนั้น กรณี ไม่เป็น static method ทำได้โดยการเรียกชื่อ instance แล้วตามด้วยชื่อเม่ธอด C# Programming with Visual C# 2010 Express

การเรียกเมธอดจากต่างคลาส class A { static void Main(string[] args) { B.Method_b1( ); // static method เรียก static method ด้วยกันได้ B b = new B( ); // static method เรียก non static method ต้องสร้างเป็น object ก่อน b.Method_b2( ); } class B { public static void Method_b1( ) { Console.WriteLine("This is Method_b1 in class B"); public void Method_b2( ) { Console.WriteLine("This is Method_b2 in class B"); C# Programming with Visual C# 2010 Express

เมธอดโอเวอร์โหลด (Overload Method) หมายถึงภายในคลาสเดียวกัน มีชื่อเมธอดเหมือนกันได้ แต่มี Signature ต่างกัน ซึ่งหมายถึง มีตัวแปรเข้า ออก ไปไม่เหมือนกัน มีเป้าหมายเพื่อให้ตอบสนองต่างกัน ในชื่อเมธอดเดียวกัน ตามความเหมาะสมที่จะสนับสนันการเรียกใช้งาน เช่น มี ข้อมูลตัวแปรที่ส่งเข้าเมธอด ไม่เหมือนกัน ตัวอย่างเช่น เมธอด WriteLine( ) มีการทำโอเวอร์โหลด ได้ถึง 19 แบบ เพื่อรองรับการเขียนข้อมูล บนคอนโซล ที่สามารถรองรับชนิดข้อมูลเข้าแบบต่างๆ int x = 100; string s = “word”; Console.WriteLine(x); Console.WriteLine(s); C# Programming with Visual C# 2010 Express

ลักษณะโอเวอร์โหลดที่ทำได้ ชนิดตัวแปรไม่เหมือนกัน จำนวนตัวแปรไม่เท่ากัน ลำดับตัวแปรไม่เหมือนกัน(ดูที่ชนิดตัวแปร) การคืนค่าต้องเหมือนกัน class Customer { private int id; public void SetId(int value) { id = value; } public void SetId(string value) { if (! int.TryParse(value, out id)) { Console.WriteLine("failed:Must be integer value."); } public int GetId() { return id; } C# Programming with Visual C# 2010 Express

การใช้ตัวแปรเข้าแบบไดนามิกด้วยอะเรย์ ในบางครั้งเมื่อต้องการให้ตัวแปรเข้า หลายตัว การใช้ เมธอดโอเวอร์โหลด จำนวนที่มีตัวเข้าต่างๆ จะทำให้มี เมธอดโอเวอร์โหลดจำนวนมาก เกินไป การแก้ปัญหานี้แก้ได้ด้วยการทำ ให้มีตัวแปรเข้าแบบได นามิก คีย์เวิร์ดที่ใช้ทำเพื่อการนี้คือ params public static int Accumulate(params int[ ] value) { int sum= 0; foreach (var item in value) { sum += item; } return sum; } C# Programming with Visual C# 2010 Express

เงื่อนไขการใช้ตัวแปรเข้าแบบไดนามิก มีเพียงหนึ่ง params ต่อหนึ่งเมธอด วางได้ที่ตำแหน่งท้ายสุดของตัวแปร มีเพียงอะเรย์หนึ่งมิติเท่านั้น static void Main(string[] args) { Console.WriteLine(Accumulate("total:", 1, 2, 3, 4)); //print total:10 Console.ReadKey(); } public static string Accumulate(string print, params int[] value ) { int sum = 0; foreach (var item in value) { sum += item; } return print + Convert.ToString(sum); C# Programming with Visual C# 2010 Express

ตัวแปรทางเลือกของเมธอด การทำโอเวอร์โหลดไม่เพียงพอที่สนับสนุนการทำงานแบบ นี้ void OptionalPara(int x1, float x2) { ทำงานอย่างแบบ1} void OptionalPara(int x1, int x2, float x3) { ทำงานอย่างแบบ2} void OptionalPara(int x1, float x3) // ทำไม่ได้ { ทำงานอย่างแบบ3} ซีชาร์ปสนับสนุนการใช้เป็นแปรที่ให้เลือกให้ใส่ได้ ไม่ใส่ก็ ได้ (ที่เรียกชื่อว่าทางเลือกมาจากคำว่า Option) แต่ยังคง ทำงานได้ C# Programming with Visual C# 2010 Express

การสร้างตัวแปรทางเลือก void OptionalPara(int x1, float x2) { ทำงานอย่างแบบ1} void OptionalPara(int x1, int x2, float x3) { ทำงานอย่างแบบ2} void OptionalPara(int x1, float x2, float x3 = 0.0F) { ทำงานอย่างแบบ3} เราสร้างตัวแปรทางเลือกที่มีการทำโอเวอร์โหลดไปด้วย เราจะ ใส่ตัวแปร 2 ตัว หรือ 3 ตัวก็ได้ และสังเกตด้วยว่า เมธอด สุดท้ายมีตัวแปรเข้า 3 ตัว มีการกำหนดค่าให้ตัวแปรสุดท้าย = 0.0F แต่ในการทำงานจริงสามารถเปลี่ยนค่าเป็น 10.0F ได้ สำหรับการไม่ใส่ตัวแปรที่ 3 เมธอดนี้จะกำหนดค่าปริยายให้ โดยสามารถใส่เงื่อนไขได้ ต้องให้ตัวแปรทางเลือกอยู่ในลำดับสุดท้ายเท่านั้น C# Programming with Visual C# 2010 Express

การเรียกเมธอดด้วยการระบุชื่อตัวแปร นอกจากการใส่ตัวแปร และชนิดตัวแปรตามลำดับของการ กำหนดเมธอดแล้ว ซีชาร์ป ยังยืดหยุ่นได้อีก ด้วยการใส่ ตัวแปร และชนิดตัวแปร ไม่ต้องตามลำดับได้ ด้วยการ กำหนดชื่อตัวแปรเข้าในการเรียกใช้งาน ดังตัวอย่าง ต่อไปนี้ static void Main(string[] args) { OptionalPara(x1: 1, x3: 10.0F, x2:2.0F); Console.ReadKey(); } static void OptionalPara(int x1, float x2, float x3 = 0.0F) Console.WriteLine("Optional3Para"); Console.WriteLine("x1:{0}", x1); Console.WriteLine("x2:{0}", x2); if (x3!=0.0) Console.WriteLine("x3:{0}", x3); C# Programming with Visual C# 2010 Express

การสร้างเมธอดอัตโนมัติ (Refactoring Code) C# Programming with Visual C# 2010 Express

กลไกการส่งตัวแปร รูปแบบการส่งผ่านตัวแปรมีอยู่สามแบบคือ การส่งตัวแปรเข้า (By Value) การส่งแบบนี้บางทีก็เรียก in ซึ่งเป็นค่าปริยาย (ไม่ใส่คำว่า in) ตัวแปรนี้จะทำสำเนาตัวแปร เข้ามา จะมีผลเฉพาะตัวแปรภายในเมธอดเท่านั้น ส่วนใหญ่ การในการเขียนโปรแกรมจะใช้การส่งตัวแปรเข้าแบบนี้ ซึ่งที่ ผ่านมาเราก็ใช้แบบนี้ทั้งหมด การส่งตัวแปรโดยการอ้างอิง (By Reference) การส่งแบบนี้ไม่มี การทำสำเนาตัวแปรตันทางแต่จะใช้การอ้างอิงแทน ดังนี้การ เปลี่ยนแปลงตัวแปรนี้จึงมีผลต่อตัวแปรต้นทาง หรือเรียกว่า มี in และ out การส่งตัวแปรออก หรือเรียกว่า out เพราะตัวแปรนี้ มีผลต่อ ตัวแปรภายนอก แต่ไม่มีผลต่อตัวแปร ภายในเมธอด C# Programming with Visual C# 2010 Express

ตัวอย่างการใช้ตัวแปร By Value static void AddOne(int x) { x++; // Increment x } static void Main( ) int k = 6; AddOne(k); Console.WriteLine(k); // Display the value 6, not 7 C# Programming with Visual C# 2010 Express

ตัวอย่างการใช้ตัวแปรเข้าแบบอ้างอิง static void Main(string[] args){ int i = 6; int j = 6; AddRefOneValueOne(ref i, j); Console.WriteLine("{0}, {1}", i,j); // Display the value 7, 6 Console.ReadKey(); } static void AddRefOneValueOne(ref int x, int y){ x++; y++; C# Programming with Visual C# 2010 Express

ตัวอย่างการใช้ตัวแปร out static void OutMethod(out int p){ p = 1; } static void Main(string[] args){ int p = 2; OutMethod(out p); Console.WriteLine(p);// Display 1 Console.Read(); C# Programming with Visual C# 2010 Express

แนวทางการใช้ตัวแปรของเมธอด กลไกการทำงาน Pass by value เป็นวิธีที่นิยมใช้มากที่สุด เพราะการเปลี่ยนแปลงใดเกิดขึ้นภายในเมธอดเท่านั้น หากว่าต้องการจะส่งตัวแปรออกออกนอกเมธอด มีอยู่สอง วิธีคือการใช้ return และ ref เป็นคีย์เวิร์ด ต่างกันที่ return จะใช้กับการส่งตัวแปรออกเพียงตัวเดียว แต่ ref ส่งตัวแปรออกได้หลายตัวได้ และมีการเปลี่ยนแปลงเกิดขึ้นสองทาง ในกรณีที่ต้องการ เกิดการเปลี่ยนเฉพาะทางออกเท่านั้นก็ให้ใช้ out เป็นคีย์ เวิร์ดกับตัวแปรเข้าของเมธอด ประสิทธิภาพการทำงาน ชนิดตัวแปรที่ทำงานได้เร็วคือ int, long มีประสิทธิภาพที่สุด และต้องใช้กับ pass by value C# Programming with Visual C# 2010 Express

การใช้เมธอดเรียกตัวเอง (Recursive) static void Main(string[ args) { for (ulong i = 1; i < 10; i++) Console.WriteLine(i + ":" + Fibonacci(i)); Console.ReadKey(); } static ulong Fibonacci(ulong n) { if (n <= 2) return 1; else return Fibonacci(n - 1) + Fibonacci(n - 2); } //จะขียนลำดับเลขชุดนี้คือ 1, 1, 2, 3, 5, 8, 13, 21, 34 C# Programming with Visual C# 2010 Express

สรุปท้ายบท บทนี้เราได้เรียนรู้การสร้างเมธอด การใช้งานเมธอด การทำโอเวอร์โหลด กฎเกณฑ์ การสร้างเมธอดในลักษณะ ต่างๆ โดยเฉพาะเรื่อง การสร้างตัวแปรเข้า หรือ พารามิเตอร์ในลักษณะ ไดนามิกของอะเรย์ ไดนามิกของ ทางเลือก การระบุชื่อตัวแปร ในกรณีที่ไม่เรียงลำดับตัวแปร เข้า กลไกการทำงานของตัวแปรเข้า แบบทำสำเนาเข้า แบบอ้างอิงตัแปรเข้า และแบบอ้างอิงภายนอกอย่างเดียว รวมทั้งเมธอดเรียกตัวเองสำหรับโครงสร้างปัญหาที่ซับซ้อน C# Programming with Visual C# 2010 Express

คำถามทบทวน เมธอดอาจเรียกได้หลายชื่อ ชื่อเหล่านั้นคืออะไรได้บ้าง มีเหตุผลอะไรที่ต้องสร้างสเตติกเมธอด และอินสแตทซ์เมธอด มีเหตุผลอะไรที่จะต้องทำโอเวอร์โหลดเมธอด ให้เขียนรายการลักษณะตัวแปรเข้าที่ทำโอเวอร์โหลดได้บ้าง ใช้คีย์เวิร์ดอะไรในการสร้างตัวแปรเข้าแบบไดนามิก ด้วยอะเรย์ มีเหตุผลอะไรที่ซีชาร์ปต้องสร้างตัวแปรทางเลือก ในกรณีที่ใช้การะบุชื่อตัวแปรเข้าทุกตัว ยกเว้นตัวแปร ทางเลือก ในการเรียกใช้งานเมธอดที่ตัวแปรทางเลือก ค่าตัวแปรทางเลือกจะมีค่าเป็นอะไร มีขั้นตอนอะไรบ้างในการสร้างเมธอดอัตโนมัติ C# Programming with Visual C# 2010 Express

คำถามทบทวน จากโค้ดต่อไปนี้ เมื่อเรียกเมธอด OutMethod( ) จะเกิดอะไร ขึ้น static void OutMethod(out int p){ p = 1;} static void Main(string[] args){ int p; OutMethod(out 1); Console.WriteLine(p); Console.Read(); } ชนิดตัวแปรเข้ามีกี่ชนิด จำแนกตามกลไกการส่งตัวแปร ประสิทธิภาพในการใช้ตัวแปรโดยทั่วไป ใช้ชนิดข้อมูลของ ตัวแปรเข้าเป็นอะไรจะดีที่สุด เมธอดเรียกตัวเอง หรือรีเคอร์ซีพ จำเป็นต้องมีการจุดหยุด ของการทำงานหรือไม่ และเพราะอะไร C# Programming with Visual C# 2010 Express