ตอน 7: OOP กับ Microsoft .NET Framework


ไปหน้าแรก      สารบัญ        Laploy.com    ระเบียนบทความ      บทความจากลาภลอย


เว็บไซต์นี้เป็นตัวอย่างเนื้อหาบางตอนในหนังสือ "เรียนรู้ด้วยตนเอง OOP C# ASP.NET" ครอบคลุม บทที่ 1 ถึงบทที่ 6 (ในหนังสือมี 21 บท) เนื้อหาใน Blog อาจอาจแตกต่างจากในหนังสือเพราะเป็นเนื้อหาที่ยังไม่ได้ตรวจแก้ขัดเกลา (edit)

กดที่นี่เพื่อดูรายละเอียดเนื้อหาในแต่ละบท

กดที่นี่เพื่อไปยังเว็บบอร์ด ถาม-ตอบ 

 

 

ตอน 7: OOP กับ Microsoft .NET Framework

 

ในบทต่อไป (บทที่ 2) ทั้งบท ผู้เขียนจะอธิบายรายละเอียดเรื่อง .NET โดยพิสดาร ส่วนในหัวข้อนี้ผู้เขียนจะพูดถึง .NET ในแง่ด้านที่เกี่ยวกับ OOP เท่านั้น

Microsoft .NET Framework ถูกสร้างขึ้นบนแนวคิด OOP โดยสมบูรณ์ มันจะดูแลการสร้างและทำลาย object ให้แก่โค้ดที่ถูกเขียนขึ้นให้เข้ากับได้กับ .NET (.NET-enable code) โค้ดลักษณะนี้เรียกว่า managed-code (อ่านว่าแมนเนจด์ โค้ด หมายถึงโค้ดที่ถูกดูแลจัดการโดย .NET)

เนื่องจากภาษาและคอมไพลเลอร์เดิมใน Visual Studio 6 ไม่สามารถผลิต managed-code ได้ บริษัทไมโครซอฟท์จึงต้องประดิษฐ์ภาษาและคอมไพเลอร์ขึ้นใหม่ทั้งหมด ภาษา Visual Basic จึงกลายเป็น Visual Baisc.NET ภาษา Visual C++ จึงกลายเป็นภาษา Visual C++.NET และภาษา J++ จึงกลายเป็นภาษา Visual J# นอกจากนั้นบริษัทไมโครซอฟท์ยังประดิษฐ์ภาษาใหม่เพื่อให้เป็นภาษาพื้นเมือง (native language) ของ .NET คือภาษา C# ดังนั้นภาษา C# จึงเป็นเพียงภาษาเดียวที่ไมโครซอฟท์สร้างขึ้นเพื่อ .NET โดยตรง

ภาพ 116: บิลล์ เกสต์ ผู้ก่อตั้งบริษัทไมโครซอฟท์ (ภาพนี้ถ่ายในปี 1985)

.NET Framework และภาษา C# ของบริษัทไมโครซอฟท์เทียบได้กับ Java platform และภาษา Java ของบริษัทซัน ไมโครซิสเต็ม สอง framework นี้มีหลายๆ อย่างที่คล้ายกัน และมีหลายๆ อย่างที่แตกต่างกัน ยกตัวอย่างความคล้ายกันคือทั้ง .NET และ Java platform ทุกสิ่งทุกอย่างมาจาก object ยกตัวอย่างความแตกต่างกันคือ ใน .NET มีภาษาให้เลือกใช้มากกว่า 30 ภาษา ขณะที่ Java platform มีภาษาให้เลือกใช้เพียงเพียงภาษาเดียว (ภาษา Java)

ภาพ 117: เครื่องมืออำนวยความสะดวกเพื่อพัฒนาโปรแกรมภาษา Java (IDE) ชื่อ NetBeans

.NET Framework และภาษา C# เมื่อเทียบกับ Java platform และภาษา Java แล้ว .NET Framework และภาษา C# มีความก้าวหน้ากว่า แต่ไม่ใช่เรื่องน่าแปลกใจเพราะ Java เป็นเทคโนโลยีที่มีมาตั้งแต่ปี 1990 ส่วน .NET Framework และภาษา C# เกิดขึ้นภายหลัง Java นานถึงหนึ่งทศวรรษ

ต่อไปนี้เป็นคุณลักษณะเด่นบางประการของ .NET Framework ในแง่ OOP

1. ทุกสิ่งทุกอย่างใน .NET เป็น object: โปรดดูตัวอย่างการนิยามคลาสสองแบบต่อไปนี้

แบบที่ 1 นิยามคลาสตามปรกติ

class Foo()

{

}

แบบที่ 2 นิยามคลาสโดยสืบสันดานจากคลาส System.Object

class Foo(): System.Object

{

}

เมื่อคอมไพล์โค้ดทั้งสองแบบ จะได้ผลลัพธ์เหมือนกันทุกประการ เพราะตัวแปลภาษาของ .NET ถือว่าทุกคลาสสืบสันดานจากคลาส System.Object โดยปริยายอยู่แล้ว ด้วยเหตุนี้ทุก object จึงมี method พื้นฐานอยู่จำนวนหนึ่งโดยอัตโนมัติ (คือ Equals, GethashCode, GetType และ ToString คุณสมบัติเช่นนี้เหมือนกับ Java)

2. สนับสนุน encapsulation: ทุกภาษาใน .NET Framework สนับสนุนการสร้างคลาสและ struc โค้ดต่างๆ จะอยู่ภายในคลาสหรือ struc ทั้งหมด เช่น หน้าเว็บหนึ่งหน้าหรือหน้า Window หนึ่งหน้าจะเป็นคลาสๆ หนึ่ง ปฏิสัมพันธ์ระหว่างคลาสสามารถทำได้โดยผ่านกลไก property และ delegate

3. สนับสนุน Inheritance: ทุกภาษาใน .NET Framework สนับสนุนการทำ Inheritance อย่างเต็มที่ คลาสส่วนใหญ่ใน .NET Class Library เจตนาเขียนขึ้นให้นำไปใช้สืบสันดานได้ดี คลาสที่เราเขียนเองก็นำไปใช้เป็น base class ได้เช่นกัน การสืบสันดานจะทำกี่ชั้นก็ได้ แต่ทำได้จาก base class เดียว (single inheritance) หากต้องการสืบสันดานจากหลายคลาส (multiple inheritance) ให้ใช้วิธี interface แทน

4. สนับสนุน polymorphism: ทุกภาษาใน .NET Framework สนับสนุนการทำ method override, method overloading และ method hiding

5. ไม่มี Global method: ในโลกของการเขียนโปรแกรม .NET method ใดๆ ก็ตามต้องเป็นส่วนหนึ่งของคลาส ไม่มี method ที่เรียกใช้ได้อย่างลอยๆ โดยไม่มีที่มาที่ไป ดังนั้นท่านจะใช้เรียกใช้ method ใดก็ต้องเรียกผ่านคลาส โดยอาจนำคลาสมาสร้าง object เสียก่อนแล้วเรียกจาก object อีกที หรือจะเรียก method จากคลาสโดยตรง โดยไม่สร้าง object ก่อนก็ได้ (เรียกว่า static class) คุณสมบัตินี้เหมือนภาษา Java (ไม่เหมือนภาษา C++)

6. Object อยู่ใน heap: โปรแกรม .NET run-time จะสร้าง object ไว้ใน heap และทำลาย object เมื่อถึงวาระ มีบางกรณีเหมือนกันที่ object ไพล่ไปอยู่ใน stack (เรียกว่า value type) คุณจะได้เรียนรายละเอียดเรื่องนี้ในบทที่ 2 หัวข้อการจัดสรรหน่วยความจำ stack และ heap

7. สนับสนุนการทำ operator overloading: เช่นเดียวกับในภาษา C++ และภาษา Java ภาษา C# สนับสนุนการทำ operator overloading ซึ่งคือการเปลี่ยนหน้าที่ของตัวกระทำ (operator เช่น + – * ++ –) ให้ทำหน้าหน้าที่ใหม่ตามที่กำหนด เช่นเปลี่ยน operator + และ * เพื่อใช้กับเมทริกซ์เป็นต้น

นี่เป็นเพียงตัวอย่างบางประการของคุณลักษณะเด่นด้าน OOP ของ .NET Framework เมื่อท่านอ่านบทต่อๆ ไปท่านจะได้เรียนรู้รายละเอียดของคุณสมบัติเหล่านี้ คุณสมบัติอื่นๆ วิธีและประยุกต์ใช้งานโดยการสร้างโปรแกรมทีทำงานในเว็บ (web application)

สรุปท้ายบท

ความรู้พื้นฐานสามอย่างที่จำเป็นแก่นักเขียนโค้ดในอนาคตคือ OOP ภาษา C# และการเขียน web application ในบทนี้ผู้เขียนได้แนะนำ OOP ทางทฤษฏีอย่างเบื้องต้นอันเป็นข้อมูลที่จะช่วยให้ท่านอ่านบทต่อๆ ไปได้เข้าใจได้ง่ายขึ้น โดยเฉพาะ “คำจาร์กอน” ที่มีอยู่มากในวงการ OOP เป็นสิ่งสำคัญที่ท่านต้องเข้าใจความหมายจึงจะศึกษาในระดับที่ก้าวหน้าขึ้นได้ ในบทต่อไปท่านจะได้เรียนสิ่งสำคัญในการเขียนโปรแกรมภาษา C# นั่นคือเรื่องเกี่ยวกับ .NET Framework และคลาสไลบรารี

คำถามท้ายบท

1. object base programming แตกต่างกับ OOP หรือไม่ อย่างไร
2. อะไรคือ software component
3. encapsulation มีหลักการอย่างไร
4. inheritance มีหลักการอย่างไร
5. polymorphism มีหลักการอย่างไร
6. method overriding มีหลักการอย่างไร
7. method hiding มีหลักการอย่างไร
8. managed-code คืออะไร
9. อะไรคือสมาชิกแบบ data field
10. hierarchy คืออะไร

  เฉลยคำถาม

ตอนต่อไป: บทที่ 2 .NET Framework และคลาสไลบรารี

Post a comment or leave a trackback: Trackback URL.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: