Most popular

วันจันทร์ที่ 1 สิงหาคม พ.ศ. 2554

C# ทำยังไง อยากใช้ Constructor ของแม่

เมื่อเขียนโปรแกรมเชิงวัตถุ (OOP) แน่นอนว่าจะต้องเจอการทำ Inheritance หรือการสืบทอด และบางทีก็สืบทอดกันจนเป็นนิสัย โดยเฉพาะ Project ใหญ่ๆ ที่มักจะมีการสร้าง Pattern ให้ทีมงานใช้ บางครั้งก็จะเป็น Form Pattern ทั้งหมดเลย คราวนี้ก็อยู่ที่ตัวผู้ Inherit ไปที่ต้องไปต่อยอด ไป Implement ให้ตรงตามเป้าหมายของงาน
การ Inherit หรือการสืบทอดไป ความสามารถ รูปลักษณ์เกือบทั้งหมดก็จะได้มรดกไปจากแม่ (base class) ทั้งสิ้น แต่มีบางสิ่งที่สำคัญที่ไม่ได้เป็นของแม่ นั่นก็คือ "หัวใจ" 
หัวใจของคลาสที่จะขาดเสียไม่ได้นั่นก็คือ Constructor ทุกคลาสจะต้องมี Constructor ขึ้นอยู่ว่าจะใช้ Constructor ที่ Compiler สร้างให้ หรือจะสร้างเอง
จะทำ Override ก็ไม่ได้ การใช้ Constructor ของคลาสแม่นั้นไม่ยาก แต่จะไม่ได้ใช้โดยตรง คลาสลูกยังมี Constructor ของตัวเองอยู่ แต่ให้ Reference ไปที่คลาสแม่ของตัวเองก่อนที่จะทำงาน

ในตัวอย่าง ผู้เขียนจะสร้างฟอร์ม 2 ฟอร์ม
  1. Form1 เป็นฟอร์มหลัก
  2. frmChild เป็นฟอร์มต้นแบบ ใช้เป็น Pattern เท่านั้น
ไฟล์ใน project
หน้าตาของ frmChild
หน้าตาของ Form1
ผู้เขียนจะทำการ Overload Constructor ใน frmChild เพื่อที่จะให้ใส่ Parameter เข้ามา Set title bar ได้ในตอนสร้าง

*ในการ Overload Constructor  ของฟอร์มนั้นจะแตกต่างกันใน .Net 3.5 และ .Net 4.0
เพราะว่า .Net 4.0 นั้นสามารถตัด Constructor ที่เป็น Default ออกได้เลย
ต่างจาก .Net 3.5 ที่ต้องยังคงตัวเดิมไว้ มิฉนั้นจะ error
จากนั้น Add Form เข้ามาใน Project โดยเลือก Inherited Form
จะพบหน้าต่างให้เลือกว่าจะ Inherit จากฟอร์มไหน ในที่นี้ผู้เขียนเลือก Inherit จาก frmChild
ทำการแก้ไข Constructor ของฟอร์มที่ Inherit มา(ในที่นี้คือ Form2)
แก้ไขให้ Constructor ของ Form2 สามารถรับ parameter ได้ คือ title
และเมื่อรับค่าจาก parameter มาแล้ว ก็ให้ส่งค่า parameter ไปทำงานกับ Constructor ของคลาสแม่
ในปุ่ม Show ของ Form1 เป็นคำสั่งให้สร้าง และแสดงฟอร์ม

   new Form2("สืบทอด 1").Show();
   new Form2("สืบทอด 2").Show();

เมื่อรันทดสอบ หลังจากกดปุ่ม Show จะมีการสร้าง Form2 มา 2 ฟอร์ม โดยมีการเปลี่ยนข้อความบนTitle bar
ตามคำสั่งของ Constructor ที่ Overload อยู่ใน frmChild

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

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