การเขียน โปรแกรมมันมีอยู่ 2 แบบครับ คือแบบโครงสร้าง ก็คือ ยาวไปเรื่อยๆ และแบบวัตถุ ก็คือสิ่งที่ผมจะมาอธิบาย มันเหมือนกับการเขียน แบบเอานี้มาบ้าง เอานั้นมาบ้าง เอามารวมกัน เอามาปรับปรุงต่อ โดยไม่ต้องเขียนซ้ำๆ ซากๆ ...อ่าวงงใหญ่ เอาเป็นว่า ดูต่อไปครับ

เช่น เราอยากสร้างรถยนต์ แบบที่ไม่เหมือนกันเลยอะ 20 คัน แต่ก็มีส่วนที่มันเหมือนกันอยู่ด้วย เราก็สร้างเลย class car สร้างเส็ด แล้วเอาอะไรใส่ลงไปใน class car หละ ก็เอาสิ่งที่รถทุกๆคันควรจะมีใส่เอาไว้ในนี้ครับ เช่น มีล้อ มีประตู มีพวงมาลัย มีเกียร์ เป็นต้น พอเราได้ class car ที่น่าจะโอเคแล้ว ทีนี้เราก็มาสร้างรถแต่ละคันกันครับ เช่น สร้าง class keng (เอาเป็นรถเก๋งละกัน) ก็ทำการสืบทอด class car มาเลยครับ พอสืบทอกเสร็จ เราได้รถและสิ่งที่รถทั่วไปควรจะมีมาละ ทีนี้เราก็มาเพิ่มแค่เอกลักษณ์ของรถเก๋งคันนี้กันครับ เช่นสีแดง ติด Nitus เป็นต้น ถ้าเราจะสร้างรถอีก ก็สืบทอดมาอีก โดยไม่ต้องมานั่งเขียนใหม่ให้แต่ละคันครับ นี่คือแบบจำลองคร่าว ซึ่งตอนใช้จริงอาจจะมีอะไรที่มันสลับซับซ้อนมากมายกว่านี้ไปอีก ก็ค่อยว่ากันอีกทีครับ

ที่นำเสนอออกไปแบบนี้ ก็แค่อยากให้เห็นหลักการณ์ การเขียนโปรแกรมเชิงวัตถุ ว่ามันง่าย(หรือปล่าวหว่า) เป็นระบบ ระเบียบ และลดจำนวน code ที่เราจะเขียนขึ้นได้มากเพียงไรก็เท่านั้นเอง

และมีศัพที่ให้อยากจะจำไว้ ดังนี้

1. class คือสิ่งที่สร้างขึ้นมาใช้ในโปรแกรม แต่มันจะยังใช้งานไม่ได้ หรือไม่สามารถใช้งานได้

2. object คือสิ่งที่สร้างขึ้นมา จาก class เพื่อเอาไว้ใช้งาน เพราะเราใช้งาน class เลยไม่ได้

3. Instance อธิบายคือ object ที่สร้างขึ้นจาก class ใดๆ ถือว่าเป็น Instance ของ class นั้นๆ

สรุปข้างบน เป็นภาษาคนได้ว่า class ก็คือต้นแบบ หรือวิญญาณ ไม่มีตัวตน ถ้าอยากจะใช้งาน จะต้องสร้าง Instance ของมันขึ้นมาก่อน ซึ่งก็คือ object ที่สามารถที่จะจับต้องได้ และใน class หนึ่งๆ สามารถมี Instance กี่อันก็ได้ แล้วแต่ว่าเราอยากได้แบบ class กี่อัน ก็คือสามารถสร้าง object ได้หลายอัน จาก class เดียว

  ต่อไปก็คือส่วนประกอบข้อง object นะครับ (อ่านหนังสือตามตอนเขียน แต่เป็นเรื่องที่น่าจะรู้กันอยู่ละ)

ก็คือ 1. คุณลักษณะ เช่นรถ 1 คัน ประกอบด้วยอะไรบ้าง เปรียบก็เหมือนกับ ตัวแปรทั่วไปนั่นหละ

2. พฤติกรรม ก็คือรถนี้มันทำอะไรได้บ้างละ เปรียบก็เหมือนกับ function นั่นหละ

และนี่คือตัวอย่าง Code นะครับ (ลอกตามหนังสือละกัน)

using System;
namespace TimeClass
{
public class Time
{
private int year;
private int month;
private int Date;
private int Hour;
public void Display()
{
Console.WriteLine("แสดงเวลา");
}
}
}
 

อธิบาย สีแดง ก็คือ คุณลักษณะ ส่วนสีชมพู ก็คือ พฤติกรรม ครับ
ส่วนอื่นๆ ที่เขียนไป ก็ยังไม่ต้องไปสนใจครับ รู้แค่นี้ก่อน 

อย่างแรก อยากอธิบายระดับ การเข้าถึงข้อมูลแบง่ายๆ ก่อนนะครับ เพราะมันจะเจอบ่อย สิ่งที่เราจะพบเจอก็คือ 

1. public อธิบายง่ายๆว่า ประกาศไว้หน้าตัวแปร หรือ Function (หรือ Class) เพื่อให้ตัวแปร หรือ Function (หรือ Class)นั้นๆ สามารถเรียกใช้จากไหนก็ได้ในโปรแกรมของเรา

2. private  ประกาศไว้หน้าตัวแปร หรือ Function (หรือ Class) เพื่อให้ตัวแปร หรือ Function (หรือ Class) นั้นๆ ไม่สามารถเรียกใช้งานจากที่อื่นได้ ยกเว้น ภายใน Class เดียวกันเท่านั้น เพื่อเอาไว้ป้องกันข้อมูลภายใน Class (อาจงง เก็บไว้ก่อน)

3. protected ประกาศไว้หน้าตัวแปร หรือ Function (หรือ Class) เพื่อให้ตัวแปร หรือ Function (หรือClass) นั้นๆ ไม่สามารถเรียกใช้งานจากที่อื่นได้ ก็คล้ายๆกับ private ครับ แต่ Class ที่สืบทอดจากมัน สามารถใช้งานได้ แต่ private ถึงแม้สืบทอดมา ก็ใช้มันไม่ได้

อาจงงกันพอสมควรนะครับ เพราะพูดถึงเรื่องนี้ก่อน แต่ไม่อยากให้งงว่า อ่าวเจอ public มันเป็นชนิดข้อมูลใหม่หรอ แล้วเจอ int ต่อท้ายงงไปใหญ่ เฮ้ยสมัยนี้ประกาศตัวแปรตัวเดียวได้ 2 แบบเลยหรอ(อันนี้มั่วไปให้เห็นภาพครับ) ซึ่งคิดว่า คนที่ไม่รู้อะไรเลย คงเคยงง เพราะผมก็เคยงง เอาเป็นว่า เจอ 3 ตัวนี้ ก็ไม่ต้องไปสนใจมันครับ รู้แค่ว่ามันทำอะไรพอ ซึ่งส่วนใหญ่ จะเจอ public บ่อยสุด และใช้ง่ายสุดครับ

แต่ถ้าไปเจออย่างอื่นนี่ ก็ไม่ต้องสนใจครับ คอยดูกันต่อไปละกันครับผม

หลังจากเครื่องมือพร้อมแล้ว ต่อไปเราก็มาเตรียมสมอง และสองมือกัน จากที่บอกไปตอนต้นแล้วคือ การทำจะต้องใช้ภาษา C# ในการเขียน ซึ่งคุณไม่จำเป็นต้องเทพ หรือเป็น C# มาก่อน สามารถข้าม Step นี้ไปเลยก็ได้ แต่ตอนทำถ้าคุณเกิดเจอ Error อะไรนี่คุณอาจจะงมอยู่นานมากๆ ดังนั้น พื้นฐานสำคัญที่สุด ขอย้ำ อยากแน่นก็ต้องศึกษาเยอะๆละครับ ถึงตอนนี้ก็ใครอ่านเยอะก็ได้เยอะละครับ ผมแนะนำเว็บสอน C# ที่เจ๋งมาก เพราะตอนแรกผมก็อ่านจากเว็บนี้นะครับ เพราะไม่มีหนังสืออ่าน ขี้เกียจยืม เหมาะสำหรับคนที่ไม่อยากอ่านหนังสือเยอะ โดยส่วนเนื้อหาพื้นฐานต่างๆอาจจะไม่ละเอียดยิบเหมือนหนังสือบางเล่ม เพราะเว็บนี้ ท่านทั้ง 2 เขียนจากประสบการณ์ส่วนตัว และอ้างอิงบ้าง หรือปล่าว ผมไม่รู้นะครับ มันเป็นความรู้สึกของคนที่เคยอ่านมาบ้าง และลองเทียบกับหนังสือที่เคยอ่านบ้าง เช่นกัน แต่ยอมรับครับ สอนดีมากเลย ชอบมากๆ เว็บนะครับ  http://www.twoguru.com/playground/cs_tutorial/index.htm 
ถ้าอ่านแล้วเข้าใจ ก็จบครับ เพราะเนื่อหาเท่าที่ดู ถ้าเข้าใจและทำได้ตามในเว็บนี้ (แต่บทหลังๆ ไม่ค่อยเกี่ยวมั้ง) พื้นฐานก็แน่นมากแล้วหนะครับ ซึ่งผมเองก็ยังหาความแน่นไม่ได้เหมือนกัน ก็เลยต้องหาหนังสืออ่านต่ออีกที

แต่ผมว่า ผมจะลองศึกษาไปด้วย ถ้าเข้าใจก็ว่าจะลองเอามาอธิบายไว้ในนี้ละกันครับ เผื่อลืมจะได้กลับมาอ่านของตังเองอีกที ส่วนในส่วนของ XNA เองจริงๆ ขอยังไม่พูดถึงนะครับ เพราะผมลืมไปหมดละ ตอนนี้ก็กำลังกลับมาศึกษาพื้นฐานให้โอเคพร้อมลุยอีกทีก่อน เพื่อที่จะได้เอาหนังสือที่ยืมจากห้องสมุดไปคืน มันเล่มใหญ่อะ หนักด้วย แต่ช่วงนี้ก็ต้องทำงานส่งของอีกสายคือ Animation ด้วย ก็ต้องนั่งดู Tutorial การทำ Model 3D ของโปรแกรม Softimage XSI 7.0 64bit (ไอ้ 64bit นี่อยากโชว์) เพราะเรียน Maya มาแต่ไม่ชอบมัน อคติกับมันมากเลย ชอบ error ไรก็ไม่รู้ ทำๆอยู่ เน่าซะงั้น พอเน่าเปิดไฟล์ใหม่ เอ้าไฟล์เสียซะงั้น อันนี้ไม่ได้ว่าโปรแกรมไม่ดีนะครับ แต่เจอมากับตัว และเพื่อนๆ อีกเกือบ 50 คน ซึ่ง maya ที่ใช้มัน version 8.0 ซึ่งทางคณะมันซื้อลิขสิทธิ์เขามา เราก็ต้องใช้อันนั้น ซึ่ง เท่าที่ดู Error เยอะมากๆ ทำงานกับมันแล้วรู้สึกเกร็งๆ จะเน่าเมื่อไหร่วะ ปรับเยอะไปเปล่าวะ คอมมันจาไหวปล่าววะ เลยถือโอกาศที่อาจารย์บอกว่า โปรเจคตัวนี้ ใช้อะไรทำก็ได้ เปลี่ยนมาใช้โปรแกรม Softimage XSI 7.0 ดู ถึงจะเริ่มต้นนับ 1 ใหม่ แต่ถือว่ามันจะอยู่กับเราตลอดไป ถ้ามันมีพฤติกรรมดี แต่ที่พูดไปก็งั้นๆ แหละ ถ้ามันไม่ทันก็คงต้องกลับมาจับ Maya แล้วเกร็งต่อไป 5+ อีกโปรเจคหนึ่งเลยก็คือ ทำเกมบน Mobile ใช้ Java เขียนซึ่งไม่ได้ยากน้อยหน้าไปกว่าไอ้นี่เลย สำหรับคนนอก อาจจะยังไม่เห็นภาพและรับรู้ถึงความทุกข์ ทรมาณ ของผมและเพื่อนๆ ลองมาเรียนดู แล้วท่านจะรู้เอง ว่าถ้าท่านจบได้ ท่านทำได้หมด(แต่ไม่เก่งสักอย่าง) ขอบคุณครับ วันนี้ไฟแรง ปั่นไปเยอะเลย 5+ ง่วงมาก เรียน 8 โมงเช้า แทบทุกวัน จาบ้าตาย

ขอให้ทุกท่านโชคดีครับ 

edit @ 9 Jun 2009 10:51:56 by NOVICE