วันจันทร์ที่ 11 มิถุนายน พ.ศ. 2555

Java and C# for MiniCompiler part 4

จาก part ที่แล้วๆมา ทบทวนอีกครั้ง เราจะสร้างคลาสขึ้นมาเพื่อบรรจุสิ่งที่มีความสัมพันธ์ต่อกันไว้ด้วยกัน สิ่งเหล่านั้นที่เรารู้จักคือ ตัวแปร และ ฟังก์ชัน สำคัญคือคลาสของเราจะเป็น public class (เอาแบบนี้ไปก่อน คือ เป็นคลาสที่อนุญาตให้ใครก็ได้นำไปใช้งาน) part นี้เราจะคุยกันเรื่อง Package และ Name space ของภาษาจาวาและซีชาร์ปตามลำดับครับ (สำคัญนะขอบอก!)


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

คือเล่าเป็นเรื่องเป็นราวได้

คราวนี้มาดูฝั่งภาษาซีชาร์ปบ้าง เราอาจเรียก Package สำหรับภาษาซีชาร์ปว่า Name space
- การสร้างที่เก็บคลาสหรือกลุ่มคลาส ภาษาซีชาร์ปเรียกว่า Name space
- เมื่อสร้าง Name space ใดๆ Name space เหล่านั้นจะห่อหุ้มลำดับของแต่ละ Name space ด้วยเครื่องหมาย { และ } และเข้าไปห่อหุ้มคลาสหรือกลุ่มคลาสอีกทีหนึ่ง
- แต่ละ Name space สามารถเข้าถึงด้วยเครื่องหมาย dot เช่นเดียวกับภาษาจาวา
- นิยามของ Name space คล้ายกับกล่องบรรจุของ คือในกล่องใบใหญ่ยังมีกล่องใบที่เล็กกว่า ในกล่องใบที่เล็กกว่ายังมีกล่องที่เล็กกว่าอีก และที่ว่าเล็กแล้วยังมีใบที่เล็กกว่านั้นอีก จวบกระทั่งพบคลาสหรือกลุ่มคลาสที่ต้องการ
ตัวอย่าง เมื่อเราต้องการเขียนโปรแกรมติดต่อฐานข้อมูล MS Office Access 2007 สิ่งที่เราควรคิดถึงคือ คลาสสำหรับติดต่อฐานข้อมูลดังกล่าวเก็บไว้ในกล่องใบไหน แน่นอนต้องเริ่มจากกล่องใบใหญ่ที่สุดก่อนแล้วไล่เปิดไปเรื่อยๆ ดังนี้
using System.Data.OleDb;

จากนั้นจึงจะใช้คลาส OleDbConnection, OleDbCommand, OleDbDataAdapter และอื่นๆที่เกี่ยวข้องได้

เอาละครับเบื้องต้นนี้ให้สนใจเพียงว่า Package และ Name space นั้นสำคัญมาก หากเรามีคลาสหรือกลุ่มคลาสแค่หยิบมือ (หนึ่งถึงสิบคลาสหรือมากกว่าอีกนิดหน่อย) เราอาจมองไม่เห็นว่าการสร้าง Package ในภาษาจาวาหรือ Name space ในภาษาซีชาร์ปนั้นมีประโยชน์อะไร ? ทว่าคลังของภาษาจาวาและซีชาร์ปในโลกสากลบรรจุคลาสไว้ภายในเป็นหมื่นถึงแสนคลาส แล้วจะจัดการคลาสมากมายปานนี้ได้อย่างไรล่ะ ? เพื่อให้ค้นหาง่าย แก้ไขง่าย ตลอดจนแบ่งจำพวกของมันออก เพราะเราไม่ต้องการโหลดหรือติดตั้งทั้งหมดนั่นลงในเครื่องคอมพิวเตอร์ของเราจริงไหม ? หรือเราต้องการทำแบบนั้นจริงๆ บ้า! เราคงไม่โง่พอจะเก็บทุกสิ่งไว้ในเป้แล้วแบกมันไว้บนหลังตลอดเวลาหรอก เชื่อสิ เราต้องการใช้งานเพียงไม่กี่คลาสเท่านั้นสำหรับงานของเรา รู้อย่างนี้แล้วสิ่งที่เราควรเร่งศึกษาก็คือ จะเลือกใช้คลาสที่มีเป็นกระบุงอย่างไรดี แต่ละคลาสทำอะไรได้บ้าง สร้างออบเจ็กต์ของคลาสอย่างไร เรียกใช้อย่างไรให้ได้ประสิทธิภาพเยี่ยมที่สุด เขียนโค้ดน้อยที่สุดทำนองนี้ เอาละครับไว้ part ต่อไปนะคนดี

ไม่มีความคิดเห็น:

แสดงความคิดเห็น