[C#]Unit5 Class
Unit5 Class
Intro
การเขียนโปรแกรมแบบ OOP หรือ Object Oriented Pogramming นั้น เราจะทำทุกอย่างออกมาในรูปแบบของ Class เพื่อการทำงานบางอย่าง แต่ก่อนที่เราจะมารู้จักกับลักษณะเชิงลึกของคลาส เราต้องมารู้จักสิ่งที่สำคัญยิ่งของคลาสก่อน นั่นคือ Method นั่นเอง
Method
- Method : เป็นองค์ประกอบอย่างหนึ่งของคลาสสำหรับกำหนดรูปแบบ วิธีการกระืืำทำ อย่างใดอย่างหนึ่ง
- การสร้าง Methodจากลักษณะของคลาสที่ผ่านมาจะมีเมธอดเีดียวที่เรียกว่า Main() ในลักษณะดังนี้
class Classname {
static void Main()
{
…
}
}
แต่โดยทั่วไปแล้ว คลาสมักจะประกอบด้วยเมธอดมากกว่า 1 เมธอด สำหรับการกระทำเฉพาะอย่าง
class Classname {
static void Main()
{
…
}
static returnValueType MethodName (parameter)
{
…
}
}
- returnValueType >> ใช้ในกรณีที่เมธอดนั้นจำเป็นต้องส่งผลลัพธ์ที่ประมวลผลภายในเมธอดนั้นกลับไปยังส่วนที่เรียกใช้งาน เราจำเป็นต้องระบุชนิดของข้อมูล เช่น int, double, string, … ที่จะส่งกลับไว้หน้าชื่อเมธอดนั้น แต่ถ้าไม่ต้องการส่งค่าให้ใส่ void
static double Cal(int r){ …
}
- การส่งผลลัพธ์ด้วย return
static double Cal(int r){ double area = 3.14*r*r ;
return area;
}
- การรับข้อมูลผ่าน Parameter >> ในเมธอดจะต้องมีส่วนของพารามิเตอร์ในการรับข้อมูลเข้ามา เช่น Cal(int r) จะมี r เป็นพารามิเตอร์ชนิด Interger โดยพารามิเตอร์จะีมีกี่ตัวก็ได้ หรือไม่มีเลยก็ได้ขึ้นอยู่กับว่าจำเป็นต้องใช้อะไรบ้าง
- การเรียกใช้ Method1. การเรียกใช้ void method หรือ เมธอดที่ไม่คืนค่า เช่น
string msg = “Hello World”; Say(msg); // เป็นการเรียกใช้เมธอด Say พร้อมส่งพารามิเตอร์ไปให้
2. การเรียกใช้เมธอดที่ต้องส่งผลลัพธฺ์กลับมา เราจำเป็นต้องมีตัวแปรในการรรับค่าผลลัพธ์นั้นด้วย และ ชนิดของข้อมูลต้องเป็นชนิดเดียวกันกับที่ระบุเอาไว้ในเมธอด เช่น
double myArea = Cal(10); // เป็นการเรียกเมธอด Cal โดยการส่งค่า r = 10 - Method Parameter1. Value Parameter >> เป็นการส่งเฉพาะค่าของข้อมูล หากมีการเปลี่ยนแปลงค่าของพารามิเตอร์ที่เราส่งไปนั้นภายในเมธอด จะไม่มีผลต่อค่าที่ส่วนอื่นเปลี่ยนแปลงไปด้วย
using System; class ValueParam
{
static void Main()
{
int a =1;
Console.WriteLine(“Value before pass = {0}”,a);
F(a); // ส่งค่า a ไปให้ method F( )
Console.WriteLine(“Value after exit Method = {0}”,a);
Console.Read();
}
static void F (int p)
{
p++;
Console.WriteLine(“Value changed in method = {0}”, p);
}
}
/*Result is
Value before pass = 1
Value changed in method = 2
Value after exit Method =1
*/
2. Reference Parameter >> การส่งพารามิเตอร์แบบนี้หากมีการเปลี่ยนแปลงค่าของพารามิเตอร์ที่เราส่งไปนั้น จะทำให้ส่วนอื่นเปลี่ยนแปลงไปด้วย วิธีการส่งทำได้โดยระบุคำว่า ref นำหน้าพารามิเตอร์ที่ส่งไป more
using System; class RefParam
{
static void Main()
{
int x = 66;
int y = 99;
Console.WriteLine(“before swap : x={0},y={1}”,x,y);
swap(ref x, ref y);
Console.WriteLine(“after swap : x={0},y={1}”, x, y);
Console.Read();
}
static void swap(ref int a, ref int b)
{
int t = a;
a = b;
b = t;
}
}
/* Result is
before swap : x=66,y= 99
after swap : x=99,y=66*/
3. Output Parameter >> คล้ายกับแบบ Referenceแต่แบบนี้เราใช้พารามิเตอร์ในการรับข้อมูลที่ส่งกลับมายังส่ี่วนที่เรียกใช้เมธอดนั้น โดยการระบุคำว่า out นำหน้าพารามิเตอร์นั้น more
using System; class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = “I’ve been returned”;
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
Console.WriteLine(“value ={0},str1 = {1},str2 = {2}”,value,str1,str2);
Console.Read();
// value is now 44
// str1 is now “I’ve been returned”
// str2 is (still) null;
}
}
4. Parameter Array >> เป็นการส่งผ่านข้อมูลไว้ในรูปแบบของอาร์เรย์ ด้วยการระบุคำว่า params ตามด้วยข้อมูลชนิดอาร์เรย์ ข้อมูลที่ส่งไปอาจอยู่ในรูปของอาร์เรย์หรือไม่ก็ได้ more
using System; public class MyClass
{
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine();
}
static void Main()
{
UseParams(1, 2, 3);
// An array of objects can also be passed, as long as
// the array type matches the method being called.
int[] myarray = new int[3] { 10, 11, 12 };
UseParams(myarray);
Console.Read();
}
}
- Recursion Method >> เป็นเมธอดที่มีการเรียกใช้ตัวมันเอง เพื่อทำงานบางอย่างที่ซ้ำๆกัน เหมือนกับการวบลูปไปเรื่อยๆ จนกว่าจะถึงค่าสุดท้าย
- การเรียกใช้ Method ใน class อื่น >> ระวังเรื่องสิทธิ์ในการเข้าใช้งานด้วย
รูปแบบของคำสั่ง
ตัวอย่าง
ClassName.MethodName(parameter); MyFirstClass.Cal(100); - Overloading Method >> หมายถึงการตั้งชื่อเมธอดเหมือนกัน แต่การรับพารามิเตอร์และวิธีประมวลผลอาจจะต่างกัน ทั้งนี้เพื่อให้การใช้งานเมธอดนั้นมีความยืดหยุ่นมากขึ้น เช่น
void F( ); void F(int x);
void F(ref int x);
- Signature >> หมายถึง รูปแบบในการรับพารามิเตอร์ของเมธอดนั้นสามารถกำหนดรูปแบบการประมวลผลได้หลากหลาย จากตัวอย่างของ Overloading Method ทำให้เราได้ Signature ของแต่ละ เมธอดดังนี้
F( ); F(int );
F(ref int );
Modifier
- Modifier เป็นระดับการควบคุมการเข้าใช้งาน Class Method Property หรือตัวแปรต่างๆ1.Class Modifier
Modifier
คำอธิบาย
public ไม่จำกัดสิทธิ์ใดๆ ในการเข้าใช้งาน private สามารถเรียกใช้งานได้เฉพาะในคลาสเดียวกันเท่านั้น ไม่สามารถเรียกใช้งาน จากภายนอกคลาสได้ 2.Method Modifier
Modifier
คำอธิบาย
public เป็นการอนุญาตให้สามารถเรียกใช้เมธอดจากที่ใดก็ได้โดยไม่จำกัดสิทธิ์การเข้าใช้งาน private อนุญาตให้เรียกใช้ได้เฉพาะภายในคลาสเดียวกันเท่านั้น static เมธอดนี้จะถูกโหลดขึ้นมาพร้อมคลาส และใช้งานได้ทันที เมธอดที่เป็นแบบสแตติกจะเรียกใช้ได้เฉพาะเมธอดที่เป็นสแตติกด้วยกันเองเท่านั้น 3.Variable Modifier
Modifier
คำอธิบาย
public ไม่จำกัดสิทธิ์ใดๆ ในการเข้าใช้งาน private เรียกประมวลผลได้เฉพาะภายในคลาสนี้เท่านั้น static ใช้สำหรับกำหนด ตัวแปรของคลาส ซึ่งเป็นตัวแปรที่เก็บข้อมูลบางอย่างที่คลาสนี้จำเป็นต้องใช้
Enum
- Enum (Enumeration) >> หมายถึงเซตของข้อมูลชุดหนึ่งที่มีจำนวนสมาชิกที่กำหนดไว้แน่นอนและทราบค่าทุกตัว ซึ่งมักจะเป็นข้อมูลที่มีลักษณะคงที่
รูปแบบของคำสั่ง
ตัวอย่าง
enum NameEnum{ สมาชิก1,
สมาชิก2,
สมาชิก3,
สมาชิก4,
………..
สมาชิก n
}
enum DayOfWeek{ Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday
}
Property
- Property >> หมายถึงคุณลักษณะของคลาส หรือ object
- การกำหนด Property
using System; class ClassName
{
private ฟิลด์ที่จะเก็บข้อมูล
public ชนิดของข้อมูล ชื่อ-Property
{
get{
………
}
set{
………
}
}
}
- get >> get accessor เป็นส่วนที่ใช้ในการอ่านข้อมูลที่เก็บอยู่ในฟิลด์ แล้วส่งไปให้ส่วนที่อ่านค่าproperty นั้น
- set >> set accessor เป็นส่วนที่ใช้ในการบันทึกหรือเขียนข้อมูลลงในตัวแปรฟิลด์ เมื่อมีการกำหนดค่าให้กับ property นั้น
- NOTE1. หาก Property นั้นมีทั้ง get และ set accessor เราจะเรียกว่าเป็น read-write property
2. หาก Property นั้นมีทั้ง get accessor เราจะเรียกว่าเป็น read-only property
3. หาก Property นั้นมีทั้ง set accessor เราจะเรียกว่าเป็น write-only property
Leave a comment