[C#]Unit5 Class

Unit5 Class

bot2.gif Intro

การเขียนโปรแกรมแบบ OOP หรือ Object Oriented Pogramming นั้น เราจะทำทุกอย่างออกมาในรูปแบบของ Class เพื่อการทำงานบางอย่าง แต่ก่อนที่เราจะมารู้จักกับลักษณะเชิงลึกของคลาส เราต้องมารู้จักสิ่งที่สำคัญยิ่งของคลาสก่อน นั่นคือ Method นั่นเอง

bot2.gifMethod

  • 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 );

bot2.gifModifier

  • Modifier เป็นระดับการควบคุมการเข้าใช้งาน Class Method Property หรือตัวแปรต่างๆ1.Class Modifier

    Modifier

    คำอธิบาย

    public ไม่จำกัดสิทธิ์ใดๆ ในการเข้าใช้งาน
    private สามารถเรียกใช้งานได้เฉพาะในคลาสเดียวกันเท่านั้น ไม่สามารถเรียกใช้งาน จากภายนอกคลาสได้

    2.Method Modifier

    Modifier

    คำอธิบาย

    public เป็นการอนุญาตให้สามารถเรียกใช้เมธอดจากที่ใดก็ได้โดยไม่จำกัดสิทธิ์การเข้าใช้งาน
    private อนุญาตให้เรียกใช้ได้เฉพาะภายในคลาสเดียวกันเท่านั้น
    static เมธอดนี้จะถูกโหลดขึ้นมาพร้อมคลาส และใช้งานได้ทันที เมธอดที่เป็นแบบสแตติกจะเรียกใช้ได้เฉพาะเมธอดที่เป็นสแตติกด้วยกันเองเท่านั้น

    3.Variable Modifier

    Modifier

    คำอธิบาย

    public ไม่จำกัดสิทธิ์ใดๆ ในการเข้าใช้งาน
    private เรียกประมวลผลได้เฉพาะภายในคลาสนี้เท่านั้น
    static ใช้สำหรับกำหนด ตัวแปรของคลาส ซึ่งเป็นตัวแปรที่เก็บข้อมูลบางอย่างที่คลาสนี้จำเป็นต้องใช้

bot2.gifEnum

  • 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