วันเสาร์ที่ 11 สิงหาคม พ.ศ. 2555

Java and C# for MiniCompiler part 13-2

Java and C# for MiniCompiler part 13-1

Java and C# for MiniCompiler part 12

Java and C# for MiniCompiler part 11

- ข้ามไปก่อนนะครับ

Java and C# for MiniCompiler part 10



- อธิบายเรื่อง Generic ของภาษาซีชาร์ป (ภาษาจาวาก็คล้ายกันนี่ล่ะครับ) หรือก็คือโครงสร้างข้อมูลที่ใช้ระบุตัวตนของข้อมูลที่ใช้ (มันคืออะไรเหรอ?)
       โครงสร้างข้อมูลที่ว่านี้ก็คือคลาสจำพวก ArrayList, LinkedList, Hashtable เป็นต้น ซึ่งโดยทั่วไปแล้วจะมีบริการเพื่อเพิ่ม (Add), ลบ (Remove), ขอจำนวน (Count, size), ขอข้อมูล ([ ], get) ฯลฯ

- เหตุใดต้องใช้ Generic ด้วยล่ะ (วีดีโอบอกไว้อยู่แล้ว)
       สมมติเราต้องการเขียนโปรแกรมจัดเก็บอะไรสักอย่างหนึ่ง (ไม่ระบุเจาะจง) และได้ออกแบบคลาสชื่อ MyArrayList ไว้ดังนี้

class MyArrayList
{
       private Object[] elements;
       private int count;

       public MyArrayList() : this(10) { }

       public MyArrayList(int size)
       {
              elements = new Object[size];
              count = 0;
       }

       public void Add(Object e)
       {
              elements[count++] = e;
       }

       public Object Get(int i)
       {
              return elements[i];
       }

       public int Count
       {
              get { return count; }
       }
}

       ทีนี้ก็นำไปเรียกใช้งานใน Main ดังนี้

MyArrayList ma = new MyArrayList();
ma.Add("Kittipong");
ma.Add(173);
ma.Add(65.5);
ma.Add('P');

for (int i = 0; i < ma.Count; i++)
{
              Console.WriteLine(ma.Get(i));
}

       โอโฮ้! โครงสร้างข้อมูล MyArrayList ของเราเก็บได้สารพัดนึกเลยครับ ไม่ว่าจะเป็น String, Integer, Floating-point หรือกระทั่ง Character นี่ก็คือสิ่งที่กล่าวว่า ไร้ Generic คือเป็นอะไรก็ได้ (มั่วกันไป) เหมือนจะดี แต่เขา (ใครก็ไม่รู้) มองว่ามันไม่ดีหรอก

       เปรียบเสมือน (เริ่มไร้สาระอีกแล้ว) หัวใจที่โลเลรักใครก็ได้ ไม่ว่าจะเป็นน้องเกต น้องอาร์ต น้องส้มโอ น้องแป้ง เจ้หมาน้อยหรือกระทั่งท่านต๋อง ชอบเขาไปหมด (ดีไหมล่ะแบบนี้) เมื่อมีการใช้ Generic คนหัวใจโลเลก็กลายเป็นคนซื่อสัตย์ ไม่ว่าจะกิน ไม่ว่าจะถ่าย ไม่ว่าจะมีความรักหรือนอน ต่างก็ระลึกถึงคนที่รักเพียงคนเดียว (รักเธอคนเดียวที่สุดในโลก) จะ Add จะ Remove จะ Get อย่างไรก็เธอคนเดียว อย่างนี้บ่งบอกว่าโครงสร้างข้อมูลนั้นใช้ Generic ด้วยครับผม และสัญลักษณ์ที่เห็นตั้งกะภาษา C++ ก็คือ <T> นั่นเอง (ย่อมาจาก Template และดูเหมือนจะนิยามการให้กำเนิดแตกต่างจาก Generic เล็กน้อย ต่างยังไงไม่ขอกล่าวถึงนะ อิอิ)

Java and C# for MiniCompiler part 9

- ข้ามไปก่อนนะครับ