บทความ

กำลังแสดงโพสต์จาก 2016

Part1 -> Section2 -> Classes -> 008. Interface

รูปภาพ
     จากบทความที่แล้ว (Inheritance) ในตอนท้ายเรามีการกล่าวถึง class diagram คร่าวๆ ซึ่งพอเราสร้าง class diagram เสร็จแล้ว ขั้นต่อไปก็นำ diagram มาลงโค้ดจริง หากทั้งโปรแกรมมีแค่ class เดียว คงไม่มีปัญหาอันใด แต่ในชีวิตจริงมันมีมากกว่านั้นเยอะคับ เราจึงควรใช้ตัวนี้เข้ามาช่วยในการสร้างโครงของโปรแกรม สิ่งนี้คือ Interface นั่นเอง      อย่างที่ได้กล่าวไปแล้ว Interface คือ โครงของ class ซึ่งหาก class ใด implement interface จะต้อง implement method และ property ที่เราได้ประกาศใน Interface ให้ครบ ถ้าไม่ครบ build ไม่ผ่านนะจร๊ะ ดูตัวอย่างประกอบเลยจร้า

Part1 -> Section2 -> Classes -> 007. Inheritance

รูปภาพ
     หนึ่งในผู้เล่นคนสำคัญของ Object Oriented Programming (OOP) ก็คือ Inheritance หรือ การสืบทอด นั่นเอง มดูกันว่ามันจะมีประโยชน์อย่างไร ใช้งานกันอย่างไร ลองดูจากตัวอย่างแรก using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Animal animal = new Animal(); animal.Greet(); Dog dog = new Dog(); dog.Greet(); Animal dogAnimal = new Dog(); dogAnimal.Greet(); } } public class Animal { public void Greet() { Console.WriteLine("Hello, I am Animal"); } } public class Dog : Animal { } public class Cat : Animal { } }

Part1 -> Section2 -> Classes -> 006. Static Members

รูปภาพ
     จากบทความก่อนๆ ในการที่เราจะเรียกใช้งาน class นั้น ปกติเราจะต้องเรียกผ่านใช้งานผ่าน object ของ class นั้นๆ แต่จะมีการเรียกใช้งาน class โดยไม่ต้องผ่าน object นั่นก็คือจะต้องใช้งานผ่าน static member การเรียกใช้งานถือว่าสะดวกมากๆ      แต่จะมีคำถามสำคัญตามมาคือ แล้วเคสไหนจะใช้ static method เคสไหนจะใช้แบบ regular method (object) คำตอบของผมเองนะคับ มันอยู่ที่เราคับ แต่ก็จะมีหลักการไว้พิจารณาอยู่บ้าง ดังนี้ครัช (ผมลองค้นดูคร่าวๆ ก็ไม่มีที่ไหนตอบเหมือนกันเลยคับ สุดท้ายก็คงอยู่ที่เราจะพิจารณานะคับ)      - เป็นการแชร์ข้อมูลที่ตายตัว เช่น การหาพื้นที่สี่เหลี่ยม, การแปลงหน่วยอุณหภูมิ, การหาพื้นที่วงกลม อารมณ์คือ ใช้เป็นครั้งๆ แล้วจบไปเลยอ่าครัช      - ไม่ได้ใช้ในการเก็บค่า อธิบายคือ โปรแกรมจะมอง static เป็นตัวเดียวกันไม่ว่าจะเรียกใช้กี่ครั้งคือตัวเดิม แต่ถ้าเราใช้ new objcet นั้นการ new แต่ละครั้ง object นั้นๆคือคนละตัวกันะเลย ถ้ามีการ set ค่าใส่ตัวแปรของ class ล่ะก็ พอเรียกใช้มันก็จะเก็บค่าต่างกันไป เพราะ object มันคนละตัวกันเลย

Part1 -> Section2 -> Classes -> 005. Visibility

      Visibility หรือ Accessibility คือ สิ่งที่กำหนดการเข้าถึงหรือเรียกใช้งานตัวแปรหรือ method ซึ่งโดยทั่วไปแล้วจะมีตัวที่ใช้บ่อยๆอยู่แค่ private และ public แต่เราลองมาดูตัวที่เหลือกันดีกว่าว่าจะมีตัวไหนบ้าง public สามารถเข้าถึงได้จากทุกๆที่ protected สามารถเข้าถึงได้จาก class เดียวกัน หรือจาก inherit class เท่านั้น internal สามารถเข้าถึงได้จาก project เดียวกันเท่านั้น protected internal จะเหมือนกันกับ internal  แต่ต่างที่ inherit class สามารถเข้าถึงได้แม้จะอยู่คนละ project ก็ตาม private จะเข้าถึงได้เฉพาะใน class เดียวกันเท่านั้น ( class และ struct หากไม่ระบุ visibility จะ default เป็น private )      ลองดูตัวอย่างการใช้งาน visibility

Part1 -> Section2 -> Classes -> 004. Method Overloading

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

Part1 -> Section2 -> Classes -> 003. Constructors & Destructors

      Constructors คืออะไร อธิบายง่ายๆเลย Constructor คือ method นี่แหละ แต่เป็น method แบบพิเศษที่จะใช้สำหรับการ instantiate class  (การสร้าง object ของ class) เท่านั้น, Constructor จะมีชื่อเดียวกับ class และจะไม่มี return type ลองดูตัวอย่างด้านล่าง

Part1 -> Section2 -> Classes -> 002. Properties

รูปภาพ
     perperties (หรือจะเรียกว่าคุณสมบัติของคลาส ก็ได้ แต่อย่าเลย เรียก property น่ะดีแล้ว)คือตัวที่ช่วยให้เราควบคุมความสามารถในการเข้าใช้ตัวแปร จาก class อื่น, ซึ่งสำหรับ programming language ที่เป็นแบบ object oriented programming (เช่นพวก C#, Java) นั้นแนะนำว่าควรใช้คุณสมบัติตัวนี้ มันดียังไง มาดูกัน      properties นั้นจะมีหน้าตาที่คล้ายกับการรวมกันระหว่างตัวแปรที่บรรจุ method ไว้ภายในซึ่งมันจะไม่สามารถรับ parameter (method รับ parameter ได้) ดูตัวอย่างด้านล่าง