บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ C#

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 ได้) ดูตัวอย่างด้านล่าง

Part1 -> Section2 -> Classes -> 001. Introduction to C# classes

รูปภาพ
     ยินดีต้อนรับสู่ Section ที่สอง Class, เมื่อเราเข้าสู่โลกของ C# .NET แล้ว เราจะต้องศึกษาการเขียนโปรแกรมแบบ Object Oriented Programming (OOP) เพราะเป็นส่วนที่สำคัญมากๆของตัวภาษา รวมถึงด้วยแนวทางนี้จะทำให้การอ่านโค้ดโปรแกรม การแก้ไขโปรแกรม การนำโปรแกรมกลับมาใช้ซ้ำๆ จะเป็นเรื่องง่ายเลยแหละ ซึ่งบทความเราจะอธิบายพอสังเขปเท่านั้น เพราะเอาเข้าจริงๆเรื่องของ OOP นั้นเนื้อหาสามารถยัดใส่หนังสือได้เป็นเล่มๆ มีหนังสือดีๆหลายเล่มลองหามาอ่านได้      Class เปรียบเหมือนกับ group ของ methods และ ตัวแปร ที่มีความสัมพันธ์กัน ฟังตอนนี้บางคนอาจจะงง ซึ่งก็น่างงจริงๆ ผมยังงงเลย, เราไปดูตัวอย่างประกอบจะเข้าใจได้ง่ายขึ้นครัช

Part1 -> Section1 -> Basic -> 012. Collection

รูปภาพ
     ตัวแปรปกติที่เคยได้กล่าวมาก่อนหน้านี้จะสามารถเก็บข้อมูลได้เพียงค่าเดียวต่อหนึ่งตัวแปรเท่านั้น หากเราต้องการเก็บค่ามากกว่าหนึ่งค่าต่อหนึ่งตัวแปร เราจะต้องใช้ Collection ในการเก็บข้อมูล ซึ่ง Collection นั้นก็มีอยู่หลากหลายชนิด แต่ที่นี้จะกล่าวเพียงแค่สองชนิดที่ใช้บ่อย คือ Arrays และ Lists 1. Arrays การประกาศนั้นจะเหมือนกับตัวแปรปกติ ต่างนิดเดียวที่มี brackets [] อยู่ที่หลังชนิดข้อมูล โปรดดูตัวอย่าง

Part1 -> Section1 -> Basic -> 011. Functions

รูปภาพ
     ฟังก์ชัน (Function) หรือใน .NET เรียกว่า เมธอด (Method) อธิบายแบบเข้าใจง่ายๆเลยก็คือ การยกโค้ดบางส่วนไปไว้ที่อื่น (เน้นที่มีการใช้งานโค้ดส่วนนี้ซ้ำๆหลายครั้ง) ซึ่งเราสามารถเรียกใช้โค้ดส่วนนั้นจากที่ไหนก็ได้ และเรียกกี่ครั้งก็ได้ ซึ่งเรียกการทำงานแบบนี้ว่าเป็นการ ใช้โค้ดซ้ำ (reuse) เชิญดูรูปแบบการสร้าง Method ด้านล่าง <accessibility> <return type> <method name>([parameters]) { <code> }

Part1 -> Section1 -> Basic -> 010. Loops

รูปภาพ
     วันนี้เราจะมาศึกษาการเขียนโปรแกรมเพื่อทำงานแบบวนซ้ำๆ เป็นส่วนที่สำคัญมากในการเขียนโปรแกรม ซึ่งเรามีตัวช่วยอยู่หลายตัวให้เลือกใช้ เราจะมาดูทีละตัวกันเลยว่าใช้งานอย่างไร The while loop      while loop เป็น loop ที่ง่านต่อการเริ่มศึกษา ซึ่งการทำงานของมันก็คือ มันจะทำงานใน block code ไปเรื่อยๆ จะกว่าเงื่อนไขที่เราส่งเข้าไปจะเป็น false ลองดูจากตัวอย่าง using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int number = 0; while (number < 5) { Console.WriteLine("Number: " + number); number += 1; // equal to number = number + 1 } Console.ReadLine(); } } }

Part1 -> Section1 -> Basic -> 009. The switch statement

     switch พูดง่ายๆคือ ทำหน้าที่เหมือนกันกับ if statement คือการทำงานตามเงื่อนไข แต่ switch จะเน้นในกรณีที่มีเงื่อนไขหลายเงื่อนไข ลองดูจากตัวอย่าง using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int cond = 1; switch (cond) { case 0: Console.WriteLine("Condition zero"); break; case 1: Console.WriteLine("Condition one"); break; } Console.ReadLine(); } } }

Part1 -> Section1 -> Basic -> 008. The if statement

     if statement คือโค้ดบล็อกที่ใช้เลือกเงื่อนไข ซึ่ง if ต้องการ boolean เป็น input (มีแค่ true และ false) ลองศึกษาเพิ่มจากตัวอย่าง using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int input; Console.WriteLine("Please enter a number 0 to 10"); input = int.Parse(Console.ReadLine()); if (input > 10) { Console.WriteLine("You enter a number more than 10"); } else if (input > 0) { Console.WriteLine("Good job"); } else { Console.WriteLine("You enter a negative number"); } } } }

Part1 -> Section1 -> Basic -> 007. Variables

     variable หรือตัวแปรเปรียบได้เหมือนกับเป็นห้องเก็บของ ใน C# นั้นรูปแบบการเขียนคือ <data type> <variable name>;      ตัวอย่างเช่น string name;      ตัวอย่างขางบนเป็นรูปแบบพื้นฐานของการประกาศตัวแปร มันสามารถเพิ่ม accessibility (visibility)  (ซึ่งจะได้อธิบายละเอียดอีกครั้งในส่วนของ Class) รวมถึงใส่ค่าให้กับตัวแปรได้ด้วย ดังนี้ <accessibility> <data type> <name> = <value>;

Part1 -> Section1 -> Basic -> 006. Data Types

      Data Types หรือชนิดของข้อมูล สำหรับภาษาที่เป็นแบบ Strongly typed language นั้นชนิดของข้อมูลถือว่าสำคัญมาก เพราะหากเก็บข้อมูลลงในตัวแปรที่มีชนิดไม่ตรงกับข้อมูลแล้วอาจทำให้โปรแกรมทำงานผิดพลาดได้ ต่อไปนี้จะอธิบายชนิดข้อมูลที่ใช้งานบ่อยๆ bool เป็นชนิดของข้อมูลที่เก็บแค่ 2 ค่าเท่านั้น คือ true และ false  เป็นชนิดข้อมูลที่สำคัญมากกับการใช้งานพวก logical operator เช่นพวก if statement int ย่อมาจาก integer เป็นข้อมูลที่เก็บตัวเลขจำนวนเต็มเท่านั้น (ไม่มีจุดทศนิยม) ปกติถ้าเก็บเลขจำนวนเต็มแล้วก็จะใช้ int แต่จริงๆแล้วนั้น C# มีชนิดข้อมูลตัวเลขอีกมาก (byte, short, int, long) ซึ่งการใช้งานนั้นขึ้นกับขนาดของข้อมูลตัวเลขที่จะเก็บ float เป็นชนิดข้อมูลที่ใช้เก็บตัวเลขทศนิยมหรือจำนวนเต็มก็ได้ ซึ่งก็ยังมี double อีกชนิด การใช้งานก็ขึ้นกับขนาดของข้อมูลที่ต้องการเก็บ char ใช้เก็บตัวอักษร (เก็บได้แค่หนึ่งตัวอักษร) string ใช้เก็บข้อความ สามารถเก็บตัวเลขเป็นแบบข้อความได้ด้วย แต่ไม่สามารถนำไปคำนวณได้ สอบถามหรือติดตามได้ที่  https://www.facebook.com/learnaspnetmvcjq...

Part1 -> Section1 -> Basic -> 005. Walk through Hello, World!

     ในบทความที่แล้วเราได้สร้างโปรแกรม Hello, World! แต่ยังไม่ได้อธิบายในรายละเอียดมากนัก ในบทความนี้เราจะอธิบายโค้ดให้เข้าใจมากขึ้น ก่อนอื่นจะขอกล่าวถึง { และ } มีชื่อว่า curly braces ภาษาไทยเรียกปีกกา ตัวนี้ในทาง programming นั้นใช้ระบุขอบเขตของโค้ด (the beginning and end of a logical block of code) ทีนี้เรามาดูโค้ดจากบทความที่แล้วกัน

Part1 -> Section1 -> Basic -> 004. Hello, World!

รูปภาพ
     ตามธรรมเนียมปฏิบัติของการเริ่มต้นเรียนรู้การเขียนโปรแกรม (ซึ่งใครตั้งก็ไม่รู้) เราต้องสร้างโปรแกรม Hello, World! เริ่มต้นเปิด Visual Studio แล้วเลือกที่ File -> New Project... -> Visual C# -> Console Application (คอนโซลเป็นโปรแกรมพื้นฐานของ Windows เพราะส่วนติดต่อผู้ใช้สามารถรับคำสั่งที่เป็น Text เท่านั้น) คลิกปุ่ม OK ตัว Visual Studio จะสร้างโปรเจ็คใหม่ให้เรา ซึ่งจะเปิดไฟล์ Program.cs ไว้ให้เรา จะป็นประมาณนี้

Part1 -> Section1 -> Basic -> 003. Development Tool

     โปรแกรมที่ใช้สำหรับเขียนโค้ดเราจะใช้ Visual Studio ซึ่งตอนนี้มีข่าวดีฝุดๆ เพราะทาง Microsoft ได้ปล่อย VS เวอร์ชั่นเกือบเต็มให้เราใช้กันได้ฟรีๆ (ห้ามใช้ในเชิงพาณิชย์) ถือว่าป๋ามากๆ โดยตัวนี้มีชื่อเต็มๆว่า  Visual Studio Community  หลังจากดาวน์โหลดเสร็จก็มา install กันเลย (ขั้นตอนที่ให้สร้างไอดีนี่แล้วแต่เรานะ ไม่สร้างก็ได้) สอบถามหรือติดตามได้ที่  https://www.facebook.com/learnaspnetmvcjquery

Part1 -> Section1 -> Basic -> 002. C# Basic Introduction

รูปภาพ
     ดีจร้า บทความนี้เป็นบทแรกของการเริ่มต้นเรียนรู้ของเรานะครัช โดยใน section นี้เราจะมาเริ่มเรียนรู้เกี่ยวกับตัวภาษา C# เกี่ยวกับคำสั่งเบื้องต้นที่ต้องรู้และใช้บ่อยกัน ผมจะไม่เขียนในเชิงลึกนะครับ เพราะถ้าลึกมากผมเองก้องง เอาที่เราพอเข้าใจ ใช้ทำงาน แล้วไปต่อยอดได้      เริ่มต้นจากปี 2002 ทาง Microsoft ได้ปล่อย software framework  ออกมาโดยใช้ชื่อว่า .NET Framework อ่านว่า ดอนเน็ทเฟรมเวิร์ค (อย่าสับสนกับดอทเอนะครัช) ซึ่ง Microsoft ได้ให้อิสระกับเราในการเลือกภาษาที่จะใช้เขียนได้หลายภาษา ยกตัวอย่างเช่น C# .NET, VB.NET ฯลฯ เรียกว่าเอาที่เราสบายใจเลยทีเดียว ส่วนเรานั้นจะโฟกันเฉพาะของ C# เท่านั้นครับ