วันจันทร์ที่ 16 พฤศจิกายน พ.ศ. 2552

พื้นฐานอิเล็กทรอนิกส์ แบบฝึกหัดบทที่ 3

1.การโฆษณาบนเว็บ (Web Advertising) คืออะไร
-มีวัตถุประสงค์เพื่อให้สินค้าและบริการของบริษัทเป็นที่รู้จักและเป็นที่ต้องการของผู้บริโภคผ่านทางสื่อโฆษณาที่พบเห็นได้ในชีวิตประจำวัน เช่น โทรทัศน์ วิทยุ และหนังสือพิมพ์ เป็นต้น

2.บอกข้อแตกต่างระหว่าง Ad Views และ Ad Click
-Ad views คือเป็นจำนวนครั้งที่ลูกค้าเห็นหน้าเว็บที่มีป้ายโฆษณา (Banner) ในช่วงเวลาใดเวลาหนึ่งตามที่กำหนดไว้
-Ad click คือเป็นการนับจำนวนครั้งที่ผู้เยี่ยมชมเว็บไซต์คลิกที่ป้ายโฆษณาในช่วงเวลาใดเวลาหนึ่ง เพื่อไปยังเว็บไซต์ปลายทาง

3.CPM (Cost Per Thousand Impression) คืออะไร
-เป็นต้นทุนที่ผู้โฆษณาจะต้องจ่ายเป็นค่าป้ายโฆษณา เมื่อมีผู้เยี่ยมชมเปิดเพจโฆษณาของตนเป็นจำนวน 1,000 ครั้ง

4.Conversion Rate ของเว็บไซต์ที่มีจำนวนผู้เยี่ยมชม 100 คน แต่มีผู้ซื้อสินค้าจริง 50 คน มีค่าเท่าใด
-Conversion Rate เท่ากับ 20%

5.Click Through Ratio เมื่อมีผู้เยี่ยมชมเปิดเพจที่มีโฆษณา 150 เพจ แต่คลิกเข้าไปดูโฆษณาจริง 20 ครั้ง มีค่าเท่าใด
-Conversion Rate เท่ากับ 45%

6.บอกข้อแตกต่างระหว่าง Banner Swapping และ Banner Exchange
-Banner Swapping เป็นข้อตกลงทางธุรกิจระหว่างบริษัท 2 บริษัท เพื่อแลกเปลี่ยนแบนเนอร์ระหว่างกัน
-Banner Exchange เป็นแหล่งแลกเปลี่ยนแบนเนอร์ระหว่างบริษัทต่าง ๆ ตามเงื่อนไขที่กำหนดขึ้น โดยสามารถจัดการแลกเปลี่ยนแบนเนอร์ตั้งแต่ 2 บริษัทขึ้นไป

7.อธิบายข้อจำกัดของการโฆษณาแบบป๊อปอัพ (Pop-Up) พอสังเขป
แบ่งออกเป็น 2 แบบ คือ
-Pop-Up Advertising เป็นโฆษณาที่แยกออกเป็นเว็บบราวเซอร์หน้าต่างใหม่ และจะปรากฏขึ้นพร้อมกับเว็บเพจที่มีโฆษณาสินค้านั้น โดย Pop-Up
-Pop-Under Advertising เป็นโฆษณาที่แยกออกเป็นเว็บบราวเซอร์หน้าต่างใหม่เช่นเดียวกับ Pop-Up แต่จะอยู่ด้านล่างของเว็บเพจที่ผู้ใช้เรียกทำงานอยู่ ดังนั้น ผู้ใช้จะต้องปิดเว็บเพจนั้นเสียก่อน จึงจะเห็นหน้าโฆษณานี้

8.ยกตัวอย่างกลยุทธ์ที่ใช้ในการโฆษณาบนเว็บมา 5 ชนิด อธิบายพอสังเขป
-กลยุทธ์เชิงรับ
-กลยุทธ์เชิงรุก
-กลยุทธ์เชิงซอนเร้น
-กลยุทธ์สะสมคะแนน
-กลยุทธ์ปากต่อปาก

9.หากบริษัทคิดค่าโฆษณาจาก Click –Through บริษัทจะต้องเสียค่าโฆษณาเท่าใด ถ้าต้องการให้มีป้ายโฆษณาปรากฏขึ้นมา 100,000 ครั้ง โดยที่ป้ายโฆษณาของบริษัทที่ปรากฏขึ้นมา 1,000 ครั้ง จะมีผู้ชมคลิกที่โฆษณา 75 ครั้ง และทุกครั้งที่ผู้ชมคลิกที่ป้ายโฆษณา บริษัทจะต้องเสียค่าใช้จ่าย 5 บาท
-375 บาท

10.E-Catalog คืออะไร
- เนื่องจากในอดีตรายการสินค้าจะถูกนำเสนอในรูปแบบโบรชัวร์ (Brochure) ที่ทำจากกระดาษเป็นเอกสารแผ่นพับหรือหนังสือที่มีขนาดเล็กเท่านั้น จึงทำให้ขาดความน่าสนใจและไม่สะดวกในการเลือกชม ปัจจุบันเมื่อกระแสการโฆษณาบนเว็บได้รับความนิยมมากขึ้น ทำให้มีการพัฒนาเครื่องมือและเทคโนโลยีที่ช่วยสร้างแคทตาล็อกสินค้าให้มีลูกเล่นที่น่าสนใจกว่าเดิม และเรียกแคทตาล็อกสินค้าแบบนี้ว่า “E-Catalog” นั่นเอ

11.บอกข้อแตกต่างระหว่างการใช้ E-Catalog และการนำเสนอสินค้าแบบโบร์ชัวร์มา 5 ข้อ
-การสร้างและพัฒนาง่าย
-ค่าใช้จ่ายในการพัฒนาถูก
-เทคโนโลยีที่ช้ไม่มาก
-การพกพาสะดวก
-รูปแบบการนำเสนอมัลติมีเดีย

12.เสิร์ชเอนจิ้น (Search Engine) คืออะไร
-เป็นโปรแกรมคอมพิวเตอร์ที่สามารถเข้าถึงข้อมูลในฐานข้อมูลบนอินเตอร์เน็ตได้ โดยจะทำหน้าที่ค้นหาข้อมูลในฐานข้อมูลที่มีคีย์เวิร์ด (Keyword) ตรงกับที่ผู้ใช้ระบุไว้ แล้วนำมาแสดงผลลัพธ์ด้วยกลไกการทำงานของเสิร์ชเอนจิ้น จึงช่วยลดภาระด้านต้นทุนและเวลาที่ใช้ค้นหาข้อมูลเป็นอย่างมาก เมื่อเทียบกับการใช้แรงงานด้วยมนุษย์

13.ตัวแทนปัญญา (Intelligent Agent) คืออะไร
-เป็นโปรแกรมที่มีขีดความสามารถมากกว่าเสิร์ชเอนจิ้น นิยมนำมาใช้จัดการกับงานประจำ (Routine Tasks) ที่ต้องอาศัยเทคโนโลยีที่ชาญฉลาด เช่น การเฝ้าระวังการทำงานบนเว็บ โดยคอยตรวจสอบและแจ้งเตือนผู้ใช้

วันอาทิตย์ที่ 15 พฤศจิกายน พ.ศ. 2552

พื้นฐานอิเล็กทรอนิกส์ แบบฝึกหัดที่ 2

1.บอกข้อแตกต่างของการค้าปลีกอิเล็กทรอนิกส์ (E-Retailing) กับการค้าปลีกรูปแบบเดิม
-แตกต่างจากวิธีเดิมที่ต้องอาศัย “ผู้ค้าปลีก (Retailer)” เป็นคนกลางในการกระจายสินค้าจากผู้ผลิตไปยังผู้บริโภค การใช้คนกลางทำให้มีต้นทุนเพิ่มขึ้นหลายประการ เช่น ค่าขนส่ง ค่าโฆษณา และค่าธรรมเนียม เป็นต้น

2.สินค้าและบริการที่จะเสนอขายผ่านร้านค้าปลีกอิเล็กทรอนิกส์ควรมีคุณลักษณะเช่นใด
-ชื่อตราสินค้า (Brand) สามารถจดจำได้ง่าย หรือเป็นที่รู้จักกันเป็นอย่างดี
-มีการรับประกันคุณภาพของสินค้าหรือบริการหลังการขาย เพื่อสร้างความมั่นใจให้กับลูกค้า
-สินค้าและบริการควรมีมาตรฐานรองรับ เพื่อให้ลูกค้าสามารถตัดสินใจซื้อได้ง่ายขึ้น
-เป็นสินค้าที่อยู่ในรูปของผลิตภัณฑ์ดิจิตอล (Digital Product) ได้ เช่น ดนตรี ภาพยนตร์ หรือซอฟแวร์ เป็นต้น
-หากเป็นสินค้าที่มีขายตามท้องตลาดทั่วไป ควรมีราคาถูกกว่าราคาปกติ
-เป็นสินค้าที่ได้รับการบรรจุห่อแน่นหนา ลูกค้าสามารถมั่นใจได้ว่าสินค้าจะไม่ถูกเปิดออกก่อนส่งถึงมือลูกค้า

3.อธิบายแบบจำลองการค้าปลีกอิเล็กทรอนิกส์แต่ละประเภทมาพอสังเขป
มี 4 ประเภทดังนี้
1.การตลาดขายตรงโดยผู้ผลิต (Direct Marketing by Manufacturers) หมายถึง การขายสินค้าจากผู้ผลิตไปยังผู้ซื้อโดยตรงโดยไม่ผ่านคนกลางหรือตลาดกลางแต่อย่างใดแต่จะต้องอาศัยช่องทางการติดต่อสื่อสารเพื่อนำเสนอสินค้า เช่น การนำเสนอด้วยเว็บไซต์ผ่านเครือข่ายอินเทอร์เน็ต
2.ผู้ค้าปลีกอิเล็กทรอนิกส์เพียงอย่างเดียว (Pure-Play E-Retailer) เป็นการขายตรงจากผู้ผลิตไปยังผู้บริโภคผ่านเครือข่ายอินเทอร์เน็ตเช่นเดียวกับวิธีแรก แต่การขายตรงวิธีนี้ ผู้ผลิตจะขายสินค้าผ่านทางเว็บไซต์ ซึ่งเป็นร้านค้าเสมือน (Virtual Storefront) เพียงแห่งเดียวเท่านั้น ไม่มีหน้าร้านค้าจริง (Physical Storefront) ที่ใช้จัดเก็บสินค้าหรือใช้ขายสินค้าอีก
3.ผู้ค้าปลีกแบบคลิกและมอร์ตาร์ (Click-and-Mortar Retailer) เหมาะสำหรับผู้มีร้านค้าเดิมอยู่แล้ว โดยวิธีนี้จะขายสินค้าควบคู่ไปทั้ง 2 ลักษณะ คือ “การค้าปลีกแบบใหม่ (Click)” ซึ่งเป็นการขายสินค้าผ่านเว็บไซต์บนเครือข่ายอินเทอร์เน็ต และ “การค้าปลีกแบบเดิม (Mortar)”
4.การค้าปลีกแบบออนไลน์มอลล์ (Retailing in Online Mall) มีลักษณะคล้ายกับบริการ Affiliate ที่ต้องนำรูปภาพสินค้าหรือโฆษณาไปฝากไว้ในเว็บไซต์กลาง ซึ่งเป็นแหล่งรวบรวมเว็บไซต์ที่ต้องการจำหน่ายสินค้าชนิดต่าง ๆ เข้าไว้ด้วยกัน เพื่อให้ลูกค้าที่สนใจสามารถคลิกเชื่อมโยงไปหน้าเว็บที่ขายสินค้าดังกล่าวได้โดยตรง

4.ยกตัวอย่างเครื่องมือที่ช่วยอำนวยความสะดวกในการเลือกซื้อสินค้าออนไลน์มา 3 ชนิด
-เว็บไซต์ท่าขายสินค้า (Shopping Portals Site)
-เว็บไซต์ตัวแทนปัญญา (Shopbots Software Agent)
-เว็บไซต์วัดความนิยมหรือเรทติ้ง (Business Rating Site)

5.อธิบายปัจจัยที่มีผลกระทบต่อการค้าปลีกอิเล็กทรอนิกส์มาพอสังเขป
-ความสามารถในการทำกำไร (Profitability) กล่าวคือ ธุรกิจไม่ควรมุ่งเน้นถึงผลกำไรจากการขายสินค้ามากจนเกินไป แต่ควรกำหนดราคาให้เหมาะสมกับกลุ่มเป้าหมาย
-ตราสินค้า (Branding)ตราสินค้าเป็นสิ่งที่มีอิทธิพลต่อการตลาดเป็นอย่างมาก เนื่องจากลูกค้าจะใช้วิธีจดจำชื่อตราสินค้าเพื่อจำแนกสินค้าของผู้ผลิตแต่ละราย
-ประสิทธิภาพ (Performance) หมายถึงประสิทธิภาพของฮาร์ดแวร์และซอฟต์แวร์ที่จะรองรับ และสนับสนุนการทำงานผ่านเครือข่ายอินเทอร์เน็ต ซึ่งจะต้องมีประสิทธิภาพในการทำงานสูงและให้บริการได้ตลอดเวลา โดยเฉพาะเว็บไซต์จะต้องแสดงผลได้อย่างรวดเร็ว

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

วันจันทร์ที่ 9 พฤศจิกายน พ.ศ. 2552

การเขียนโปรแกรมแบบ OOP

การเขียนโปรแกรมแบบ OOP
สาเหตุที่ผู้เขียนนำหัวข้อ การเขียนโปรแกรมแบบ OOP มาไว้เป็นบทแรก ก็เพราะหนังสือเล่มนี้จะสอนภาษา C# และการสร้างเว็บไซต์แคตาล็อกสินค้าด้วย ASP.NET โดยเน้นที่การคิดและการปฏิบัติแบบ OOP ทำให้มีคำศัพท์ คำจำกัดความ และแนวคิดหลายอย่างเกี่ยวกับ OOP ที่ท่านจำเป็นต้องรู้ก่อน จึงจะเข้าใจเนื้อหาส่วนใหญ่ในบทต่อๆ ไปได้
หัวข้อที่ท่านจะได้เรียนในบทคือ
• ความหมายของ OOP
• คลาสกับออบเจ็กต์
• การใช้งานออบเจ็กต์
• ความเป็นมา OOP
• OOP วิธีติดใหม่ในการสร้างซอฟแวร์
• Object based programming
• Object Oriented Programming
• Encapsulation
• Inheritance
• Polymorphism
• OOP กับ Microsoft .NET Framework

ความหมายของ OOP

OOP (ย่อมาจาก Object Oriented Programming หมายถึงการเขียนโปรแกรมแบบวัตถุวิธี) เป็นรูปแบบ (paradigm) หรือแนวคิดอย่างหนึ่ง อันมีจุดมุ่งหมายเพื่อการสร้างซอฟแวร์ คำว่า Object ในที่นี้หมายถึงวัตถุ หรือ สิ่งของที่จับต้องได้ ไม่ได้หมายถึงวัตถุประสงค์ จุดมุ่งหมาย หรือกรรม (ผู้ถูกกระทำ อย่างประธาน กริยา และกรรม ในรูปประโยค)
มีผู้ตีความว่าแนวคิดนี้คือ “การเขียนโปรแกรมโดยมุ่งที่เป้าหมาย (มิได้เน้นที่กระบวนการ)” ผู้เขียนเห็นว่าการตีความดังกล่าวไม่สู้จะถูกต้องนัก เพราะการเขียนโปรแกรมตามลัทธินี้การสร้างออบเจ็กต์ขึ้นจริง แม้จะเป็นออบเจ็กต์ที่จับต้องไม่ได้ เพราะอยู่ในสภาพซอฟแวร์ แต่ก็มีเจตนาจะเลียนแบบออบเจ็กต์ที่เป็นรูปธรรมอย่างเต็มที่
เรื่อง OOP เป็นเรื่องของออบเจ็กต์ ดังนั้นสิ่งแรกที่ต้องรู้ก็คือ ความหมายของคำว่าออบเจ็กต์ นิยามของออบเจ็กต์คือ “หน่วยหนึ่งของโปรแกรมซึ่งมีหน้าที่การทำงานอันเฉพาะเจาะจง และถูกกำหนดปฏิสัมพันธ์กับโปรแกรมหน่วยอื่นๆ ไว้อย่างแน่ชัด” ในภาษา C# เราสร้างออบเจ็กต์จากคลาส

คลาสกับออบเจ็กต์
คลาสกับออบเจ็กต์เป็นสองสิ่งที่มีความเกี่ยวข้องกันโดยตรง คลาสคือโค้ดที่เราเขียนขึ้นเพื่อทำหน้าที่เป็นพิมพ์เขียวของออบเจ็กต์ การสร้างออบเจ็กต์จากคลาสเรียกว่าการทำ instantiation การสร้างออบเจ็กต์จากคลาสเทียบได้กับการทำขนมครกสิงคโปร์ เตาขนมจะมีหลุมหลายหลุม แต่ละหลุมมีลวดลายไม่เหมือนกัน ขนมครกที่ได้จากแต่ละกลุ่มจึงมีรูปร่างต่างๆ กัน คลาสคือหลุมหนึ่งหลุม ขนมครกที่ได้คืออินสแตนซ์ (instance) ของคลาส หรือ ออบเจ็กต์
เราเรียกออบเจ็กต์หนึ่งออบเจ็กต์ว่าหนึ่งอินสแตนซ์ เราสามารถสร้างออบเจ็กต์ได้หลายๆ อินสแตนซ์จากคลาสเพียงคลาสเดียวจากตัวอย่างขนมครกสิงค์โปร์ในวันหนึ่งๆ แม่ค้าจะทำขนมครกได้เป็นจำนวนมากจากหลุมแต่ละหลุม ส่วนในภาษา C# หากเราสร้างคลาสหนึ่งคลาส ยกตัวอย่างเช่น เป็นคลาสเพื่อนิยาม node หลังจากนั้นเราอาจเขียนโปรแกรมสร้าง binary tree ซึ่งขณะทำงานมันอาจจะสร้างออบเจ็กต์จากคลาส node ได้หลายล้านอินสแตนซ์ภายในหนึ่งวินาที
การใช้งานคลาสทำได้สองวิธี วิธีแรกคือการนำไปใช้สร้างออบเจ็กต์ และใช้งานผ่านออบเจ็กต์ ดังที่อธิบายไปแล้ว อีกวิธีหนึ่งคือเรียกใช้โดยตรงโดยไม่ต้องสร้างออบเจ็กต์ เรียกว่า static class แม้การใช้งานคลาสวิธีนี้จะไม่มีออบเจ็กต์ทำให้ดูเหมือนไม่เป็นการ OOP แต่ในบางสถานการณ์ก็ถือว่ามีความเหมาะสมดี

ออบเจ็กต์กับไทป์
เรื่องของไทป์เป็นเรื่องสำคัญในวิชา OOP ในหนังสือนี้ท่านจึงจะพบคำว่า ไทป์ (type) อยู่เสมอ จึงมีความจำเป็นที่ท่านจะต้องทำความเข้าใจความหมายของคำว่าไทป์ ให้ตรงกับความหมายใน OOP และภาษา C# ก่อน
ในภาษาที่ไม่ใช่ภาษา OOP อย่างภาษา C มีไทป์ต่างๆ เตรียมไว้ล่วงหน้า เช่น int (จำนวนเต็ม), float (จำนวนมีทศนิยม), chat (ตัวอักษร) เป็นต้น ไทป์เหล่านี้คือชนิดของข้อมูล
ภาษา C รับรู้ไทป์อยู่จำนวนหนึ่งหากเราพบว่าไทป์ที่มีมาให้ไม่สามารถตอบสนองต่อความต้องการของเราได้ เราสามารถนิยามไทป์ขึ้นเองได้เรียกว่า user defined data type (ต่อไปจะเรียกย่อว่า UDT) โดยใช้ structure
คลาสก็เหมือน structure เรานิยามคลาสเพราะเราต้องการสร้าง UDT ของใช้อุปมาขนมครกสิงค์โปร์อีกครั้งขนมครกสิงค์โปร์หนึ่งเตาจะมีหลายหลุม แต่ละหลุมมีลวดลายต่างกัน เช่น หลุมหนึ่งมีลายเป็นปลา อีกหลุมหนึ่งมีลายเป็นหอย ขนมครกที่ได้จากหลุมแต่ละหลุมจึงมีรูปร่างต่างกัน หรือมีไทป์ต่างกัน สิ่งที่ทำให้ไทป์ของขนกครกแตกต่างกันก็คือตัวหลุม
หลุมแต่ละหลุมบนขนมครกสิงคโปร์เทียบได้กับคลาสหนึ่งคลาส จุดมุ่งหมายในการนิยามคลาสก็เหมือน structure คือเราต้องการสร้างไทป์ใหม่ ออบเจ็กต์ที่ถูกสร้างจากคลาสจะมีไทป์ ตามที่คลาสนั้นได้นิยามไว้
ภาษา C# สนับสนุนการสร้างไทป์ใหม่อย่างพิสดาร เมื่อนิยามแล้ว UDT กับ build-in type จะมีศักดิ์ศรีเสมอกัน (คือคอมไพเลอร์จะปฏิบัติต่อไทป์ที่เราสร้างในลักษณะ first class เช่นเดียวกับ build-in type) .NET Framework library เองก็เป็นแหล่งรวมไทป์หลายพันไทป์ ที่เราสามารถนำมาประกอบเป็นไทป์ใหม่ที่มีการทำงานซับซ้อนได้อย่างสะดวกรวดเร็ว
การเขียนโปรแกรมแบบ OOP เราจะใช้เวลาส่วนมากไปกับการออกแบบ และนิยามไทป์ขึ้นใหม่เพื่อนำไปใช้สร้างออบเจ็กต์ต่างๆ เมื่อนำออบเจ็กต์ทั้งหมดมาประกอบเข้าด้วยกัน เพื่อให้ทำงานร่วมกัน จะทำให้โปรแกรมของเราสร้างผลลัพธ์ได้ตามความประสงค์
การใช้งานออบเจ็กต์
การใช้งานออบเจ็กต้องทำได้ง่าย เราอาจมองว่าออบเจ็กต์เป็น “กล่องดำ” ในทางวิทยาศาสตร์เราจะเรียกอุปกรณ์ที่เราสามารถนำมาใช้ประโยชน์ได้ โดยไม่จำเป็นต้องรู้รายละเอียดการทำงานภายในของมันว่า “กล่องดำ”ยกตัวอย่างเช่น โทรศัพท์ เรานำมันมาใช้ประโยชน์เพื่อการสื่อสารได้ โดยไม่จำเป็นต้องรู้ว่ามันทำงานได้อย่างไร เช่นเดียวกัน ในภาษา C# เราสามารถนำออบเจ็กต์มาใช้งานได้โดยไม่จำเป็นต้องรู้ว่า มันมีซอร์สโค้ดภายในเป็นอย่างไร
เมื่อเราต้องการเรียกให้ออบเจ็กต์ทำงานบางอย่าง เราจะเรียกเมธอด (method) ของมัน ยกตัวอย่างเช่นโทรศัพท์มีเมธอดคือการโทรฯ ออก การวางสาย การพักสาย การบันทึกเลขหมายฯ ในภาษา C# เราจะนิยามเมธอดเหล่านี้โดยการเขียนโค้ดหนึ่งชุด คล้ายการนิยามฟังก์ชันในภาษา C
ออบเจ็กต์จะผนวกกระบวนการ (method) และข้อมูล (information) ไว้ภายในตัวของมันเอง จากตัวอย่างโทรศัพท์เก็บเลขหมายที่เราบันทึกไว้ โดยเราไม่จำเป็นต้องรู้ว่า มันเก็บไว้ที่ไหน อย่างไร เรารู้เพียงวิธีดึงเลขหมายที่บันทึกไว้ออกมาใช้งานก็พอ ในภาษา C# ออบเจ็กต์จะเก็บข้อมูลภายในไว้ในฟิลด์ (คือตัวแปรท้องถิ่นของคลาส)โปรแกรมที่เรียกใช้ออบเจ็กต์ไม่จำเป็น (และไม่สามารถ) เข้าถึง หรือเปลี่ยนแปลงข้อมูลในฟิลด์ (field) ได้โดยตรงแต่สามารถเข้าถึงทางอ้อมได้ผ่านส่วนเชื่อมต่อที่เรียกว่า “พร็อปเพอร์ตี้ (property)”
ภาษา C# สนับสนุนหลักการทุกรูปแบบในลัทธิ OOP โดยหลักการนี้มีเรื่องหลัก 3 หัวข้อที่ท่านจำเป็นต้องเข้าใจคือ
o Encapsulation : การห่อหุ้มวิธีการและข้อมูลไว้ภายในหน่วยหนึ่งๆ
o Inheritance : การสืบทอดคุณสมบัติ
o Polymorphic : การแปรคุณสมบัติ

ความเป็นมาของ OOP
แนวคิด OOP ไม่ใช่ของใหม่ แต่มีมาพร้อมๆ กับการเริ่มต้นของวิทยาการคอมพิวเตอร์ ในปี ค.ศ. 1960 นักเขียนโปรแกรมคิดค้นภาษา Simula (อ่านว่า “ซิมูลา”) สำหรับเครือง UNIVAC ซึ่งเป็นภาษาแรกที่มีคุณสมบัติในการทำ OOP และอีก 3 ปีต่อมา นักศึกษาที่สถาบัน MIT อีวาน ซัทเธอร์แลนด์ (Ivan Sutherland) ได้สร้างซอฟแวร์ ชื่อ Sketcpad เป็นโปรแกรมประยุกต์ทำหน้าที่ช่วยการออกแบบ (CAD) มันเป็นโปรแกรมแรกที่นำ “การปฏิสัมพันธ์กับผู้ใช้ด้วยภาพ” (Graphic User Interface หรือ GUI)มาใช้อย่างสมบูรณ์ และการออกแบบสร้างก็ทำโดยใช้หลักการ OOP อย่างเต็มรูปแบบ
ดูเหมือนว่า วิวัฒน์ของ OOP และ GUI จะเกี่ยวพันกันอยู่เสมอ เพราะต่อมาในปี ค.ศ. 1970 เมื่อศูนย์วิจัยของซีร็อกซ์ ที่พาโล-อัลโต ต้องการสร้างระบบปฏิบัติการแบบ GUI (ที่ต่อไปจะเป็นบรรพบุรุษของ Mac OS และ MicrosoftWindows)ทีมนักวิจัยได้สร้างภาษาใหม่ชื่อ Smalltalk (สมอลทอล์ค) เพื่อให้เหมาะกับการเรียนโปรแกรมแบบ GUI ภาษานี้ได้รับอิทธิพลจากภาษา Simula อย่างมาก
แนวคิด OOP เริ่มแบ่งบานเต็มที่ในช่วงกลางทศวรรษที่ 1980 เมื่อบริษัทแอปเปิลและบริษัทไมโครซอฟต์ต่างผลิตระบบปฏิบัติการที่เป็น GUI ออกสู่ท้องตลาด และมีภาษาแบบ OOP เกิดขึ้นใหม่จำนวนมาก เช่น ภาษา Objective C, Modula-2 และ Eiffel แนวคิด OOP ขึ้นถึงจุดสุดยอดใน ค.ศ. 1983 เมื่อ Bjarne Stroustrup นักวิทยาศาสตร์แห่งห้องทดลองเบลล์ ได้สร้างภาษา C++ ซึ่ง Bjarne ให้นิยามว่าเป็น “ภาษา C ที่มีคลาส”
OOP วิธีคิดใหม่ในการสร้างซอฟแวร์
เมื่อถึง ค.ศ. 1990 บริษัทซันไมโครซิสเต็ม นำภาษา Java (อย่าปะปนกับภาษา JavaScript เพราะเป็นคนละภาษากัน) ออกสู่สาธารณชน ได้รับความนิยมทันที เพราะเป็นภาษาสมัยใหม่ที่มีคุณสมบัติสนับสนุน OOP อย่างสมบูรณ์ และมีข้อดีคือมี virtual machine ในระบบปฏิบัติหลายแบบ ทำให้เขียนเพียงครั้งเดียวสามารถนำไปใช้งานทุดที่ โดยไม่ต้องคอมไพล์ใหม่ ทำให้สะดวกเมื่อนำไปใช้ในองค์กรขนาดใหญ่ มี่มีฮาร์ดแวร์คละกันหลายแบบ
ต่อมาในปี ค.ศ. 2000 บริษัทไมโครซอฟแวร์ได้ปรับกระบวนทัศน์ขององค์กร ให้มุ่งไปยังเครือข่ายอินเทอร์เน็ตไมโครซอฟต์ได้ประดิษฐ์ .NET Framework และภาษาต่างๆ หลายภาษา เช่น VB.NET,C# และ J# โดยทั้ง .NET Framework เอง และภาษาสำหรับ .NET มีความเป็น OOP อย่างสุดโต่ง
จากที่กล่าวมา จะว่าเห็นแนวโน้มในการสร้างซอฟแวร์กำลังมุ่งไปยัง OOP มากขึ้นเรื่อย จึงนับเป็นการดีหากนักเขียนโปรแกรมจะเรียนรู้วิธีคิดแบบ OOP จนสามารถเขียนโปรแกรมภาษาใดภาษาหนึ่งที่สนับสนุน OOP อย่างเต็มรูปแบบ เนื่องจากระบบปฏิบัติการ Windows ของบริษัทไมโครซอฟต์ถูกใช้อย่างกว้างขวางมาก ผู้เขียนเห็นว่าการเรียนรู้วิธีเขียนโปรแกรมใน .NET Framework จึงไม่น่าจะเสียเวลาเปล่า
ภาษาที่เป็นภาษาหลักของ .NET Framework คือภาษา C# ซึ่งบัดนี้ได้กลายเป็นภาษาตามมาตรฐานของ ISO และ ECMA แล้ว ดังนั้นการเรียนรู้หลักการ OOP โดยใช้ภาษา C# เป็นเครื่องมือจึงน่าจะเป็นประโยชน์ ไม่อีกทั้งยังเป็นวิธีฝึกฝนการคิดแบบ OOP ที่ดีวิธีหนึ่ง
Object based programming
นักเขียนโปรแกรม VB6 บางคนพบว่าคนไม่สามารถเขียนโปรแกรมใน VB.NET ได้ดีนัก เพราะพบแนวคิดที่แตกต่างจาก VB6 ไปมากจนไม่อาจปรับวิธีทำงานให้เข้ากับ VB.NET ได้ สาเหตุที่เป็นเช่นนั้นเพราะ VB6 เป็น Object based programming (การเขียนโปรแกรมที่มีพื้นฐานจากวัตถุ) ส่วน VB.NET เป็นภาษา OOP โดยสมบูรณ์มิได้เป็นเพียง VB6 เวอร์ชันใหม่ ขณะที่นักเขียนโปรแกรมที่เคยเขียนภาษา C++ และหรือภาษา Java มาแล้วจะสามารถเรียนรู้ภาษา C# ได้อย่างรวดเร็ว เพราะมีพื้นฐานเกี่ยวกับ OOP มาบ้างแล้ว
ใน VB6 มีออบเจ็กต์อยู่จำนวนหนึ่งเรียกว่า “คอนโทรล” (เช่น ปุ่มและเลเบล) มันมีพร็อปเพอร์ตี้ เมธอดและอีเวนต์ (event) ครบถ้วนเหมือนออบเจ็กต์ใน OOP แต่เราไม่สามารถนำมันมา “สืบสันดาน”(inheritance) หรือนำมาสร้างเป็นออบเจ็กต์ใหม่ โดยเพิ่มเติมแก้ไขคุณสมบัติของมันได้ง่ายเหมือนที่ทำได้ในภาษา .NET การไม่มีคุณสมบัติ ingeritance เป็นเครื่องชี้ว่าภาษา VB6 ไม่ใช่ภาษา OOP
Object Oriented Programming
OOP ไม่ใช่ภาษา ไม่ใช่ซอฟแวร์ มันเป็นเพียง Paradigm (อ่านว่า “พาราดิม”แปลว่า แบบ หรือตัวอย่าง)หรือสไตล์การเขียน มันยังเป็นวิธีคิดอีกด้วย หากนักเขียนโค้ดยังคิดแบบ non-OOP แม้จะใช้ซอฟแวร์หรือใช้ภาษา OOP อย่างดี โค้ดผลลัพธ์ก็จะไม่เป็น OOP ไปได้
OOP เป็นส่วนหนึ่งของวิชาวิศวรรมซอฟแวร์วิชานี้มีขึ้นเพื่อยกระดับการสร้างซอฟแวร์ให้เป็นไปตามหลักวิศวกรรม เพราะเดิมการเขียนโค้ดเป็นเรื่องของความสามารถเฉพาะตัว นักเขียนโปรแกรมแต่ละคนใช้หลักการเฉพาะตน ทำให้การสร้างซอฟแวร์มีความเป็นศิลปะมากกว่าศาสตร์ พฤติกรรมเช่นนี้เป็นปัจจัยหนึ่งซึ่งทำให้เกิดสภาพการณ์ที่เรียกว่า “วิกฤตการณ์ซอฟแวร์”(Software crisis) ตอนปลายทศวรรษที่ 1960 เป็นวิกฤตการณ์ด้านความขาดแคลนซอฟแวร์ที่มีประสิทธิภาพ
ปัจจัยสำคัญอีกอย่าง ที่ทำให้วิกฤตการณ์ซอฟแวร์รุนแรงขึ้น คือการเกิดขึ้นของไมโครโปรเซสเซอร์ในช่วงกลางทศวรรษที่ 1970 และการพัฒนาฮาร์ดแวร์ที่ก้าวหนาอย่างรวดเร็ว เนื่องจากฮาร์ดแวร์สามารถถูกผลิตขึ้นได้จำนวนมาก โดยทำเป็นอุตสาหกรรม ในขณะที่ไม่อาจทำเช่นเดียวกันกับซอฟแวร์ได้ จึงเป็นสาเหตุให้เกิดการขาดแคลนซอฟแวร์
ในปี ค.ศ. 1992 ไอวาร์ จาคอบสัน ได้นำเสนอแนวคิดวิศวกรรมซอฟแวร์แบบวัตถุวิธี (Object-oriented software engineering หรือ OOSE)แนวคิดนี้เสนอให้นำหลักการ use cases มาประยุกต์ใช้กับการออกแบบซอฟแวร์โดยการใช้ UML (Unified Modeling Language)เป็นเครื่องมือหลัก
ทั้ง OOSE และ OOP ต่างเป็นส่วนหนึ่งของวิชา “การออกแบบและวิเคราะห์แบบวัตถุวิธี” (Object-Oriented Analysis and Design หรือ OOAD)แม้ OOSE และ OOP จะมีชื่อคล้ายกัน และอยู่ในวิชา OOAD เหมือนๆ กันแต่ก็เป็นสองหัวข้อวิชาที่แยกจากกัน โดย OOSE เน้นเรื่องการออกแบบ ส่วน OOP เน้นเรื่องการเขียนโค้ด ในหนังสือเล่มนี้ผู้เขียนจะสอนวิธีคิดและเขียนโค้ดให้เป็น OOP เท่านั้น หากต้องการศึกษาเรื่อง OOAD และ OOSE ท่านอาจศึกษาได้ในชั้นเรียนวิชานี้ หรือตำราเล่มอื่น
ขอย้อนกลับไปในช่วงทศวรรษที่ 1970 มีการเสนอว่า หากจะแก้วิกฤตการณ์ซอฟแวร์ ก็น่าจะหาทางทำให้การสร้างซอฟแวร์ง่ายเหมือนฮาร์ดแวร์ ในสมัยนั้นฮาร์ดแวร์ส่วนมากถูกสร้างจากไปไอซีดิจิตอลแบบ “ลอจิกเกต” ยกตัวอย่างเช่น หากท่านต้องการสร้างวงจรดิจิตอลอะไรสักอย่าง ท่านไม่จำเป็นต้องนำทรานซิสเตอร์ ตัวต้านทาน และตัวเก็บประจุมาต่อกัน แต่ท่านสามารถเลือกไปซีที่เป็นลอจิกเกต (logic gate) ที่มีอยู่มากมายหลายร้อยแบบ นำมาสร้างเป็นวงจร digital combination (ดิจิตอล คอมบิเนชัน คือวงจรดิจิตอลที่เกิดจากการนำลอจิกเกตหลายๆ แบบมาเชื่อมต่อกัน) ที่มีคุณสมบัติตามที่ท่านต้องการได้ไม่ยาก
การนำไอซีดิจิตอลมาใช้งาน ท่านไม่จำเป็นต้องรู้กระบวนการทำงานภายในของมัน ท่านเพียงแต่ต้องรู้ว่า มันต้องการอินพุด (input) อย่างไร และจะให้ผลลัพธ์ (output) ออกมาเป็นอย่างไร (ข้อมูลเพื่อการนำไปเชื่อมต่อหรืออินเตอร์เฟชกับไอซีตัวอื่น) ซึ่งเป็นเรื่องดี เพราะท่านไม่ต้องเสียเวลาไปกับการเรียนรู้วิธีทำงานภายในของไอซีแต่ละตัวทำให้การออกแบบสร้างวงจรใหม่ๆ ทำได้รวดเร็วและง่ายขึ้นมาก นี่คือสาเหตุหนึ่งที่ทำให้วงการฮาร์ดแวร์ก้าวหน้าไปได้อย่างรวดเร็ว
เราอาจจะมองว่า ไอซีและตัวคือ component (อ่านว่า “คอมโพเนนต์”แปลว่าชิ้นส่วนหรือส่วนประกอบ) เหมือนชิ้นของเล่นพลาสติกเลโก้ ที่มีรูปแบบต่างๆ มากมาย ทุกชิ้นถูกออบแบบให้มีอินเตอร์เฟซตรงกัน เราจึงสามารถนำเลโก้มาต่อเป็นของเล่นต่างๆ ได้สารพัด
ย้อนกลับไปอีกในปี 1968 องค์การนาโต้ (NATO องค์การสนธิสัญญาแอตแลนติกเหนือ) ได้จัดสัมนาเรื่อง Mass Produced Software Components (การผลิตชิ้นส่วนซอฟแวร์เป็นจำนวนมาก) ที่ประเทศเยอรมัน เพื่อต้านวิกฤตการณ์ซอฟแวร์ การสัมนานี้วางรากฐานแนวคิดการทำซอฟแวร์ให้เป็น component หรือซอฟแวร์ไอซี ผู้นำการสัมนาเรียกแนวคิดนี้ว่า Component Oriented Programming (ย่อว่า OOP) หรือการเขียนโปรแกรมโดยเน้นการสร้างชิ้นส่วน
“คอมโพเนนต์” หมายถึงออบเจ็กต์ที่ถูกสร้างขึ้นตามข้อกำหนดจำเพาะ เพื่อตอบสนองเป้าหมาย 5 ประการคือ
• นำกลับมาใช้ใหม่ได้
• เป็นอิสระต่อสภาพแวดล้อม
• ทำงานร่วมกับคอมโพเนนต์อื่นได้
• ใช้วิธี Encapsulation
• เป็นอิสระต่อการนำไปใช้ และการปรับเปลี่ยนเวอร์ชัน
ภาษา C# เป็นภาษา OOP ที่สนับสนุนหลักการ OOP อย่างจริงจังหลักการ OOP มีหลายอย่างตรงกับ OOP เช่น การส่งออบเจ็กต์ไปเก็บในหน่วยความจำ หรือส่งไปในเครือข่ายโดยเรียงออกไปกันแบบอนุกรม และให้อยู่ในรูปแบบที่คนสามารถอ่านได้ เมื่อไปถึงจุดหมายแล้วจะกลับมารวมตัวกันใหม่ หรือ Marshalling (อ่านว่า “มาแซลลิง”แปลว่าการเรียงกันออกไป ในการเรียนภาษา C# ท่านจะพบกับการทำมาแซลลิงอยู่เนืองๆ)
Encapsulation
ว่ากันว่า นักเขียนโปรแกรมคนหนึ่งเมื่ออ่านตำรา OOP เห็นคำว่า encapsulation ก็ไม่เข้าใจและปวดหัว จึงหยิบยาแก้ปวดมารับประทาน ก่อนรับประทานได้อ่านที่ฉลาก เห็นเขียนกำกับว่าให้รับประทานครั้งละ 2 แคปซูลคือสองเม็ด ลองแกะแคปซูลออกดูก็เห็นมีผงยาขมอัดแน่นอยู่ เนื่องจากผู้ผลิตยาต้องการให้รับประทานได้โดยไม่ให้ขม จึงทำเยลลาตินเป็นหลอกดแคปซูลหุ้มผงยาเอาไว้ นักเขียนโปรแกรมเห็นดังนั้นก็เข้าใจความหมายของ encapsulation และหายปวดหัวโดยไม่ต้องรับประทานยา เขาเข้าใจว่า encapsulation ก็คือการผนึกโค้ดให้เป็นแคปซูลเหมือนแคปซูลยา เพื่อให้ผู้อื่นนำไปใช้ได้โดยง่าย
Encapsulation (อ่านว่า “เอ็นแคปซูเลชัน”แปลว่าการบรรจุลงในแคปซูล) คือแนวคิดว่าออบเจ็กต์ควรแยกโค้ด “ส่วนเชื่อมต่อ” (Interface) กับโค้ด “ส่วนประมวลผลและข้อมูล” (logic หรือ process และ data หรือ field)ออกจากกัน ข้อมูลและส่วนประมวลผลทั้งหมดควรถูกซ่อนไว้เบื้องหลังอินเตอร์เฟซ หากเราจัดให้มีอินเตอร์เฟซที่ดี และรักษาความคงเส้นคงวาของอินเตอร์เฟซไว้ แม้เราจะเปลี่ยนโค้ดส่วนประมวลผลไปทั้งหมด โปรแกรมประยุกต์ก็ยังสามารถใช้งานออบเจ็กต์ได้ตามปกติ
ยกตัวอย่างเช่น ผู้เขียนสร้างคลาสชื่อ BCC ทำหน้าที่คำนวณผลรวมของข้อมูล เพื่อใช้ตรวจสอบความถูกต้องในการรับ-ส่งข้อมูลระหว่างคอมพิวเตอร์ ผู้นำคลาสนี้ไปใช้ไม่จำเป็นต้องรู้ว่า ผู้เขียนใช้วิธีหาค่า (algorithm)อย่างไร ผู้ใช้เพียงสร้างออบเจ็กต์จากคลาสนี้ และส่งชุดข้อมูลให้มัน มันก็จะส่งผลลัพธ์กลับมาให้ หากผู้เขียนปรับปรุงอัลกอริทึม (algorithm) เพื่อให้คลาส BCC ทำงานมีประสิทธิภาพสูงขึ้น ผู้ใช้ก็ไม่จำเป็นต้องแก้ไขโค้ดแต่อย่างใด
บ่อยครั้งที่การสร้างซอฟแวร์ตามวิธี OOP จะได้ซอฟต์แวร์ที่ประกอบด้วยออบเจ็กต์จำนวนมาก ออบเจ็กต์แต่ละตัวถูกสร้างจากคลาสซึ่งมีที่มาต่างๆ กัน เช่น มาจาก .NET Framework มาจากผู้เขียนเอง มาจากบุคคลที่สาม (third party)การทำให้ออบเจ็กต์แต่ละตัวเป็นอิสระต่อกัน ในขณะที่สามารถทำงานสอดคล้องกันได้เป็นอย่างดีจำเป็นต้องมีข้อตกลง หรือแนวทางที่ทุกฝ่ายใช้ร่วมกัน encapsulation คือแนวทางหลักอันหนึ่งที่ใช้ในการสร้างซอฟแวร์ตามวิธี OOP
Encapsulation เป็นจาร์กอนที่กินใจ และมันเป็นหนึ่งในสามจาร์กอนหลักของ OOP (อีกสองคำคือ Inheritance และ Polymorphism ที่ท่านจะได้เรียนกันต่อแพทย์สองคนสนทนากันไม่รู้เรื่อง เพราะไม่เข้าใจคำจาร์กอนของแพทย์ หากท่านเข้าใจคำจาร์กอนของแพทย์ทุกคำ ท่านย่อมเข้าใจการสนทนานั้น วงการ OOP ก็เช่นเดียวกัน หากท่านเข้าใจคำจาร์กอน OOP ทุกคำ ท่านก็จะอ่านตำรา หรือ บทความเกี่ยวกับ OOP เข้าใจได้ทั้งนั้น

Inheritance
วิธีง่ายที่สุดเพื่อดูว่า ภาษาใดเป็นภาษาที่สนับสนุน OOP หรือไม่ ให้ตรวจสอบว่า ภาษานั้นสนับสนุน Inheritance หรือไม่ ถ้าไม่ แสดงว่าภาษานั้นไม่เป็น OOP
Inheritance (อ่านว่า “อินเฮียริแตนซ์”แปลว่า”การสืบสันดาน”ต่อไปจะใช้คำว่า ingerit)เป็นหลักการสำคัญหนึ่งในสามหลักการของ OOP หลักการนี้มีไว้เพี่อให้สามารถต่อยอดงานใหม่ จากงานเดิมที่เคยทำไว้แล้ว โดยไม่ต้องเริ่มจากศูนย์
ใน .NET Framework ทุกสิ่งทุกอย่างล้วน inherit จาก base class ชื่อออบเจ็กต์ หรือกล่าวได้อีกอย่างหนึ่งว่า คลาสชื่อออบเจ็กต์เป็นต้นตระกูลของการสืบวงศ์วานตามลำดับชั้น (เรียกว่า hierarchy อ่านว่า “ไฮราคี”แปลว่าลำดับชั้น)
ในขณะที่ภาษา C++ สนับสนุนให้ sub class inherit จากหลายๆ base class ได้ (เรียกว่า multiple ingeritance) แต่ภาษา C# กลับทำเช่นนั้นไม่ได้เพราะภาษา C# และภาษา Java สนับสนุนให้ sub class ingerit จาก base class ได้เพียงคลาสเดียวเท่านั้น (เรียกว่า single ingeritance) บางคนเข้าใจผิดว่านั่นคือจุดด้อยของภาษา C# และ Java อันที่จริงแล้วผู้สร้างภาษาทั้งสองเจตนาที่จะตัด multiple inheritance ออกไป เพราะต้องการให้ภาษาของตนไม่ยุ่งยากซับซ้อน และได้ประดิษฐ์กลไกชื่อ interface เพราะคนละเรื่องกัน ขึ้นมาทดแทน ปัญหาใดก็ตามที่ต้องแก้ด้วย multiple inheritance จะสามารถใช้การทำอินเตอร์เฟชทดแทนได้
Polymorphism
คำจาร์กอนของ OOP ที่ผู้คนหวาดกลัวมากที่สุด คือคำว่า Polymorphism เพราะมันชวนให้นึกถึงยัญพิธีอันลี้ลับที่แฮกเกอร์ประกอบในที่รโหฐาน แต่ตรงกันข้าม อันที่จริง Polymorphism เป็นสิ่งเรียบง่ายที่แม้เด็กเล็กๆก็เข้าใจทุกคน
ท่านเคยเห็นเด็กเล่นดินน้ำมันหรือไม่ เด็กชอบดินน้ำมัน เพราะนอกจากจะมีสีสันสวยงามแล้ว ยังนำมาปั้นให้เป็นรูปทรงอะไรก็ได้ตามใจชอบ คำว่า Polymorphism (อ่านว่า “โพลีมอร์ฟิส”) มาจากคำในภาษากรีกสองคำ คือ poly (โพลี) แปลว่าหลาย และ morphism (มอร์ฟิส) แปลว่ารูปร่าง ดังนั้น Polymorphism จึงแปลว่า “หลายรูปทรง” หรือ “แปลงสภาพได้” เช่นเดียวกับดินน้ำมันที่เด็กๆ นำมาปั้นเป็นรูปทรงต่างๆ ได้หลายแบบ
ท่านอาจสงสัยว่า อะไรที่เปลี่ยนรูปร่างได้ และการเปลี่ยนรูปร่างได้ และการเปลี่ยนรูปร่างได้นี้มีประโยชน์อย่างไร คำตอบคือสิ่งที่เปลี่ยนรูปร่างได้ก็คือ เมธอดที่ inherit มาจาก base class โดยเปลี่ยนแปลงเมธอดบางเมธอดของ base class ให้ตรงกับความต้องการ (เรียกว่า method override) หรือสร้างเมธอดใหม่ทับของเดิมไปเลย (เรียกว่า method hiding)
ประโยชน์คือ ช่วยให้เรานำคลาสเดิมที่เคยนิยามไว้มาใช้ได้ประโยชน์ได้ แม้คุณสมบัติของคลาสนั้นจะไม่ตรงตามความต้องการของเราโดยสมบูรณ์ เราก็สามารถเปลี่ยนแปลงหรือเพิ่มเติมความสามารถของมันภายใน derived class ได้ โดยที่เราไม่ต้องยุ่งกับคลาสเดิม ( ทำหน้าที่เป็น base class) เลย ซึ่งการทำเช่นนี้ในหลายๆ กรณีจะรวดเร็ว และสะดวกกว่าการนิยามคลาสขึ้นใหม่ทั้งหมด
ท่านเข้าใจหลักการ Polymorphism เมื่อท่านเข้าใจการทำ method hiding และ method override
OOP กับ Microsoft .NET Framework
Microsoft .NET Framework ถูกสร้างขึ้นบนแนวคิด OOP โดยสมบูรณ์ มีโปรแกรม CLR ซึ่งทำหน้าที่สร้างและการทำลายออบเจ็กต์ให้แก่ โปรแกรมที่เขียนขึ้นเพื่อทำงานใน .NET โดยเฉพาะ (.NET-enable code)โค้ดลักษณะนี้เรียกว่า manged-code (อ่านว่า “แมนเนจด์ โค้ด” หมายถึงโค้ดที่ถูกดูแลจัดการโดย .NET)
เนื่องจากภาษาและคอมไพเลอร์เดิมใน Visual Studio 6 ไม่สามารถผลิต managed-code ได้ บริษัทไมโครซอฟต์จึงต้องประดิษฐ์ภาษาและคอมไพเลอร์ขึ้นใหม่ทั้งหมด ภาษา Visual Basic จึงกลายเป็น Visual Basic.NET ภาษา Visual C++ จึงกลายเป็นภาษา Visual C++.NET และภาษา J++ จึงกลายเป็นภาษา Visual J# .NET นอกจากนั้นบริษัทไมโครซอฟต์ยังประดิษฐ์ภาษาใหม่เพื่อให้เป็นภาษาหลัก(native language)ของ .NET คือภาษา C# ซึ่งเป็นภาษาเดียวที่ไมโครซอฟต์สร้างขึ้นสำหรับ .NET โดยเฉพาะ (ไม่มีใน Visual Studio 6)
.NET Framework และภาษา C# ของบริษัทไมโครซอฟต์เทียบได้กับ Java platform และภาษา Java ของบริษัทซัน ไมโครซิสเต็ม สองเฟรมเวิร์ก (framework) นี้มีหลายสิ่งที่คล้ายกัน และมีหลายสิ่งที่แตกต่างกัน ยกตัวอย่างความคล้ายกันก็คือ ทั้ง .NET และ Java platform ทุกสิ่งทุกอย่างมาจากออบเจ็กต์ และยกตัวอย่างความแตกต่างกันคือ ใน .NET มีภาษาให้เลือกใช้มากกว่า 30 ภาษา ขณะที่ Java platform มีภาษาให้เลือกใช้เพียงภาษาเดียว (ภาษา Java)
.NET Framework และภาษา C# เมื่อเทียบกับ Java platform และภาษา Java แล้ว .NET Framework และภาษา C# มีความก้าวหน้ากว่า แต่ไม่ใช่เรื่องน่าแปลกใจ เพราะ Java เป็นเทคโนโลยีที่มีมาตั้งแต่ปี 1990 ส่วน .NET Framework และภาษา C# เกิดขึ้นภายหลัง Java หนึ่งทศวรรษ

วันอาทิตย์ที่ 8 พฤศจิกายน พ.ศ. 2552

สรุปใบงานที่ 1-9 รายวิชา พื้นฐานการพาณิชย์อิเล็กทรอนิกส์

ใบงานที่ 1 การสร้างเว็บไซต์ร้านค้าออนไลน์ การสมัครสมาชิกเว็บไซต์ขายสินค้าฟรีมี 8 ขั้นตอนดังนี้
1.พิมพ์ชื่อเว็บไซต์ www.own-free-website.com
2.คลิกปุ่ม to registration
3.ปรากฏหน้าต่างกรอกข้อมูลทุกช่อง
4.คลิกปุ่ม Send registration
5.รอสักครู่จะปรากฏหน้าต่างแสดงหน้าเว็บเพจตอบรับการเป็นสมาชิก
6.คลิกที่ชื่อเว็บไซต์ของนักศึกษาด้านซ้ายบน เพื่อเปิดเว็บไซต์ที่สร้าง
7.รอสักครู่จะปรากฏหน้าต่างที่สร้างไว้
8.สามารถเปลี่ยนแปลงหน้าเว็บไซต์ไม่ได้

ใบงาน 2 เริ่มต้นปรับเว็บไซต์ออนไลน์ของนักศึกษา
1.พิมพ์เว็บไซต์ www.own-free-website.com
2.คลิกเมนู Login ใส่ชื่อเว็บไซต์ของนักศึกษาและรหัสผ่าน
3.คลิกปุ่ม Login
4.จะเข้าสู่หน้าต่าง Your Homepage ปรากฏชื่อเว็บไซต์ของนักศึกษาช่อง Address:
5.คลิกรายการ Ddit desing
6.ปรากฏ Base desing ให้คลิก เลือกรูปแบบของเว็บไซต์ ตอนนี้เลือก Iceblue General-Popular
ให้ทดลองเลือกแบบอื่นเช่น Butterfly General-Popular หรือ รูปแบบอื่น ๆ หลายรูปแบบ คลิกเลือกดูแต่ละรูปแบบ
7.คลิกปุ่ม Save จะปรากฏหน้าต่างรูปแบบที่เลือกเช่นแบบ Iceblue General-popular
8.ให้เลื่อน Scroll ลงมาเลือกส่วนของ Desing Options จะมีรายละเอียดดังนี้
9.Title of navigation Column:เมนูหลัก (มุมซ้าย)
10.title of right box#1:สินค้าคุณภาพ (มุมขวาสุด)
11.คลิกปุ่ม Save
12.คลิกขวาชื่อเว็บไซต์ด้านซ้าย --> เลือก Open in New Window ทดลองดูหน้าเว็บไซต์
13.คลิกปุ่ม X ปิด
14.ให้คลิกแท็บ Clock ปรับแต่งเพื่อเติมรายละเอียด ให้แสดงนาริฬกา
15.คลิกปุ่ม Save
16.คลิกขวาที่ชื่อเว็บไซต์เพื่อ ดูผลลัพธ์ที่เลือกรายการนาฬิกา
17.สามารถเลือกแท็บ Poll Log-in Top List
18.ต่อไปสร้างกล่องข้อความที่ 2 ให้คลิกแท็บ Extended Settings
19.กำหนดรายละเอียดแต่ละกล่องข้อความ เช่น
Title of right box#2 พิมพ์ สินค้าคุณภาพ จากโรงงานมีสินค้าจำนวนจำกัดหากซื้อวันนี้มีส่วนรถทันที 70% ก็ว่ากันไปค่ะ
20.คลิกปุ่ม Save เหมือนเดิม
21.เลื่อนคลิกขวาชื่อเว็บไซต์ด้านซ้าย -- > เลือก Open in New window ทดลองดูหน้าเว็บไซต์
22.หากต้องการแสดงนาฬิกา ให้คลิกที่แท็บ Clock แล้วคลิกปุ่ม Save อีกครั้ง
23.แล้วคิลกขวาชื่อเว็บไซต์ของนักศึกษา -- > เลือก Open in New Window ทดลองดูหน้าเว็บไซต์

ใบงานที่ 3 การเตรียมรูปภาพ และสร้าง Header / ส่วนหัวของเว็บเป็นภาพของนักศึกษาตัวเราเอง
ปรับแต่ง Header/ส่วนหัวเว็บไซต์ เพื่อแสดงภาพที่เป็นโลโก้ของนักศึกษา/ภาพแสดงสินค้าต่าง ๆ ของนักศึกษา เพื่อความสวยงามของเว็บไซต์ และเป็นที่สะดุดตาให้กับผู้เข้าเยี่ยมชม
1.คลิกเมนู Edit design
2.คลิกแท็บ Extended Settings
3.เลื่อน Scroll ลงมาที่ Header picture (921 * 104) เป็นการสร้างภาพขนาดมาตรฐานของส่วนหัว (Header)
4.เข้าสู่โปรแกรม Adobe Photoshop
5.กำหนดขนาด Width:921 Height:104 Resolution:150 Color Mode: RGB Color 16 bit
6.คลิกปุ่ม OK
7.นำรูปภาพเข้ามา โดยใช้คำสั่ง File -- > Open
8.กด Ctrl เลือกภาพทั้งหมด แล้วคลิก Open
9.คลิกที่ภาพแล้วลากมาวางที่พื้นที่ว่างเอกสารใหม่
10.คลิกปุ่ม T พิมพ์ตัวอักษรเช่น ชื่อเว็บไซต์ กดปุ่ม Ctrl+A เลือกตัวอักษรทั้งหมด
11.คลิก Style เลือกที่รูปแบบที่ต้องการ
12.ดับเบิ้ลคลิกที่ Layer ของตัวอักษร จะแสดงหน้าต่าง Layer Style
13.คลิกสี Gradient Overlay เลือกสีที่ต้องการ แล้วคลิก OK
14.คลิกเลื่อน Layer ของตัวอักษรไว้ด้านบนสุด
15.คลิกปุ่ม Select เพื่อเพิ่มพื้นหลังให้กับตัวอักษร จะปรากฏเส้นประ เทพื้นสีขาว
16.เลื่อน Layer พื้นหลังลง กำหนด Opacity 60%
17.ดับเบิ้ลคลิก Layer ตัวอักษร กำหนดความหน้าของเส้นขอบ 3
18.บันทึกไฟล์ คลิกเมนู File -- > Save for web เลือก Jpg -- > Medium

ใบงานที่ 4 สร้างภาพสไลด์โชว์ด้วยโปรแกรม Adobe ImageReady
1.เปิดโปรแกรม Adobe Photoshop
2.คลิกเมนู File -- > Open เลือกรูปภาพ 5 ภาพ วางบนหน้าจอเพื่อทำสไลด์โชว์
3.คลิกเมนู File -- > New เพื่อเปิดหน้าต่างเอกสารใหม่
4.กำหนด Width: 216 pixels Heitht: 187 pixls Resolution: 72 pixels/inch Color Mode: RGB Clolr 16 bit ,Background Contents:White
5.คลิก OK
6.กดปุ่ม Ctrl+A หรือคลิกเมนู Select -- > All ที่หน้าต่างรูปภาพนำภาพทั้งหมดมาว่างที่หน้าเอกสารใหม่ (ให้แสดงภาพเป็นเลเยอร์แต่ละเลเยอร์)
7.กดปุ่ม Ctrl+C คัดลอก
8.คลิกเมาส์ที่หน้าเอกสารใหม่ แล้วกดปุ่ม Ctrl+V
9.ให้คัดลอกภาพทั้งหมดมาวางที่หน้าเอกสารใหม่ ถ้ารูปภาพขนาดไม่เท่ากันจะต้องปรับให้เท่ากันทุกรูปก่อน
10.คลิกปุ่ม โปรแกรม Adobe ImageReady เพื่อนำภาพเข้ามาหน้าต่าง Adobe ImageReady
11.คลิกเฟรมแรกให้หน้าต่างแอนนิเมชั่น
12.คลิกรูปดวงตาที่ Layer 5 ออกเพื่อแสดงภาพต่อมา
14.ทำข้อ 12-13 กับภาพต่อ ๆ มาจนครบ 5 ภาพ
15.คลิกเมาส์ที่เฟรม 1
16.คลิกที่ปุ่ม Tween
17.ปรากฏหน้าต่าง Tween
18.กำหนด Tween With: เลือก Next Frame
19.กำหนด Frames to Add: 6
20.คลิกปุ่ม OK
21.จะแสดงการเฟรมของภาพเฟรม 1 เพิ่มอีก 6
22.ให้คลิกภาพที่ 2 เหรม โดยคลิกที่เหรม 8
23.คลิกปุ่ม Tween กำหนด Frames to Add: 6 เฟรม แล้วคลิก OK (ทำเช่นนี้กับอื่นต่อไปจนครบ 5 ภาพ)
24.กำหนดภาพ 1.8.15.22 แสดง 1 วินาที
25.คลิกปุ่ม Play เพื่อดูผลลัพธ์
26.การบันทึกไฟล์ภาพแอนนิเมชั่นไปใช้งาน แบบ Flash คลิกเมนู File -- > Export -- > Macromedia Flash SWF…
27.ปรากฏหน้าต่างให้กำหนดคุณภาพของภาพ ถ้ากำหนดมาก ไฟล์ภาพก็จะใหญ่ กำหนด 80 คลิก OK
28.เลือกโฟลเดอร์ที่ต้องการจัดเก็บ พิมพ์ชื่อ File name คลิกปุ่ม Save
29.ทดลองดับเบิ้ลคลิกไฟล์ Flash เพื่อดูภาพสไลด์โชว์ที่สร้างเสร็จ

ใบงานที่ 5 Upload รูปภาพทั้งหมดที่เตรียมไว้
ขั้นตอนการอัพโหลดรูปภาพเพื่อเข้าไปไว้ในเซิฟเวอร์ของผู้ให้บริการ หลังจากนั้นสามารถนำภาล่านั้นเข้ามากำหนดวางในตำแหน่งต่างๆ ที่ต้องการในหน้าเว็บเพจของเราได้
1.ทำการ login ก่อนทำการแก้ไขหน้าเว็บไซต์
2.คลิกเมนู Manage images
3.คลิกแท็บ Add new Picture
4.ช่อง Category: ให้เลือก Create new Category
5.ช่อง Name of the Category: ให้ใส่ชื่อกลุ่มของสินค้า เช่น พิมพ์ Products
6.คลิกเครื่องหมาย Downsize the pictures: เพื่อย่อภาพ ให้เล็กลงอัตโนมัติ
7.คลิกปุ่ม Browse -- > เลือกรูปภาพ -- > แล้วคลิกปุ่ม Open
8.คลิกปุ่ม Upload picture จะเข้าสู่การอัพโหลดรูปภาพไปเก็บไว้ที่เซิฟร์เวอร์
9.หากต้องการ Upload ได้หลายไฟล์ไห้กดที่ Personal Preferences
10.เลื่อน Scroll ลงมาด้านล่าง ตรง Manage images
12.ช่อง How many pictures to upload at once ให้กำหนดจำนวนไฟล์ 6
13.ช่อง If you Select “Resize image ” resize it to which width (when you upload a new image) ให้เลือก 400 Pixel (Standard)
14.คลิกปุ่มเมนู Save
15.คลิกที่เมนู Manage images
16.คลิก Add new picture
17.จะแสดงหน้าต่างให้เลือกไฟล์ตามที่กำหนด 6 ไฟล์
18.ช่อง Category: ให้เลือก Products (1 image)
19.ให้ทำการ Upload ไฟล์ 6 ภาพ -- > คลิกปุ่ม Upload picture
20.ให้สร้าง Name of the category: Animation
21.คลิก Browse เลือกไฟล์ gif -- > Open
22.แล้วคลิกปุ่ม Upload picture
23.คลิกปุ่ม Submit

ใบงานที่ 6
สร้างหน้าโอมเพจและหน้าเว็บเพจแต่ละหน้า
การสร้างโฮมเพจเพื่อกำหนดให้เป็นหน้าหลักและหน้าเว็บเพจแต่ละหน้า โดยกำหนดให้มีข้อมูลเมนูหน้าแรก รายการสินค้า วิธีชำระเงิน ตำต่อเรา เป็นต้น
1.คลิกเมนู manage pages
2.ให้คลิกรายการ Home เปลี่ยน Home เป็น หน้าแรก คลิกลักษณะ Blod Italic เลือกสี
3.คลิกปุ่ม Save
4.คลิกที่ Contact -- > เปลี่ยน contact เป็น ติดต่อเรา เปลี่ยนสี -- > คลิก Seve
5.หากต้อการสร้างหน้าเว็บเพจขึ้นมาใหม่ คลิก Add new page
6.พิมพ์รายการสินค้า คลิก Blod เลือกสี
7.คลิก Save จะปรากฏรายการสินค้าเพิ่มขึ้น
9.พิมพ์ วิธีชำระเงิน
10.ต้องการเลื่อนรายการใดให้คลิก เมาส์ว้าค้างแล้วลากเลื่อนขึ้นลง เช่น หน้าแรก รายการสินค้า วิธีชำระเงิน ติดต่อเราทดลองดูหน้าเว็บไซต์ของเรา

ใบงานที่ 7 การจัดการเนื้อหา
สร้างเนื้อหาหน้าเว็บเพจแต่ละหน้า เช่นการสร้างตาราง การแทรกหรือแก้ไขรูปภาพ แทรกไฟล์ Flash แทรกรูปภาพสื่ออารมณ์ การปรับแต่งตัวอักษร
1.คลิกที่รายการ หน้าแรก
2.เลื่อน Scroll bar ลงด้านล่าง
3.พิมพ์ข้อความและแทรกรูปภาพดังตัวอย่าง
4.ให้ทดลองดูที่หน้าเว็บไซต์ที่แก้ไข
5.คลิกที่เมนู รายการสินค้า
6.เลื่อน Scroll ลงเพื่อแทรกตาราง
7.พิมพ์ แถว : 4 สดมน์:3 ขนาดเส้นขอบ 2
8.คลิกปุ่ม ตกลง
9.ปรับขยายตารางและพิมพ์ข้อความ แทรกรูปภาพ
10.คลิกปุ่ม Save และทดลองดูผลลัพธ์ที่ได้บนเว็บไซต์
12คลิก วิธีชำระสินค้า
13.แทรกรูปภาพสื่ออารมณ์
พิมพ์ข้อความตังต่อไปนี้
ขั้นตอนการชำระเงิน
1.โอนเงินเข้าบัญชีธนาคารดังต่อไปนี้
-ธนาคารกรุงเทพ สาขา จรัญสนิทวงศ์
เลขที่บัญชี +++++++++++++++++
-ธนาคารกรุงไทย สาขา จรัญสนิทวงศ์
เลขที่บัญชี+++++++++++++++++++
14.คลิกปุ่ม Save แล้วทอดลองดูผลลัพธ์ที่ได้บนหน้าเว็บไซต์

ใบงานที่ 8สร้าง Gallery ให้กับภาพสินค้า
การสร้าง Gallery เพื่อแสดงภาพสินค้าทั้งหมด เมื่อมีผู้เข้าเยี่ยมชมเว็บไซต์คลิกที่ภาพแต่ละภาพใน Gallery จะแสดงภาพสินค้าที่จยายให้แสดงขึ้นมา
1.คลิกเมนู Manage extras
2.คลิกแท็ก Add extra
3.ช่อง Sesct extra: ให้เลือก Gallery
4.คลิกที่ปุ่ม Add extra
5.คลิกช่อง Enter a title for the gallery page: เลือกชื่อของส่วนหัวเรื่องของหน้า gallery พิมพ์ว่า แสดงสินค้า
6.คลิกแท็บ New album สร้างอัลบั้มรูปภาพ
7.ช่อง Title of the albums: รูปสินภาพสินค้า
8.ช่อง Eescription of the albums:สินค้าคุณภาพ ราคาประหยัด
9.คลิกปุ่ม Continue
10.จะปรากฏหน้าต่างนำรูปภาพเข้ามา แล้วคลิกปุ่ม Add pictures จะปรากฏภาพส่วนล่าง
11.คลิกปุ่ม Continue
13.คลิกปุ่ม Complete album
14.ทอลองเปิดเว็บไซต์ของเราดูผลลัพธ์ที่ได้
15.ใส่เสียง เข้าเว็บไซต์ www.esnips.com
16.พิมพ์ Search : background music
17.คลิกเลือก music.mp3 ให้คัดลอก code ที่ช่อง Embed : มาวางที่เนื้อหาบรรทัดสุดท้ายของหน้าแรก