Just another WordPress.com site

สมมติชื่อว่าผมสร้าง class ชื่อว่า vector ซึ่งข้อมูลในการ class นี้จะเป็นองค์ประกอบของเวคเตอร์ตามแนว x ตามแนวแกน y และตามแนวแกน z ตามลำดับ

สมมติว่าผมต้องการสร้าง method ที่จะบวกเวคเตอร์ 2 ตัวเข้าด้วยกันผมอาจจะเขียนโค้ดได้แบบนี้ครับ

เวลาที่เราจะเรียกใช้ method การบวกเวคเตอร์ เราจะต้องใช้เขียนในลักษณะ

v.add(v1, v2)

ซึ่งถ้าเราจะใช้ class นี้ในการคำนวนที่ซับซ้อน การเรียกใช้ method แบบนี้อาจจะทำให้มองภาพลำบาก ดูโค้ดแล้วตาลายน่าเวียนหัวมากครับ

วิธีการอีกแบบหนึ่งที่เราที่เราสามารถทำได้คือ เราจะเขียน method ของ operator + ใน class vector แทน ซึ่งรูปแบบการเขียนจะเป็นแบบนี้ครับ

ในรูปแบบนี้ operator + จะรับ input (ทางด้านขวามือ) เป็นเวคเตอร์ที่ชื่อว่า v2 แล้วทำการนำเวคเตอร์ v2 ไปบวกกับเวคเตอร์ทางด้านซ้ายมือ เมื่อบวกกันเสร็จก็จะ return ค่าผลลัพธ์ที่ได้

เมื่อลองมาทดสอบใน main ดูจะได้ผลลัพธ์ดังนี้ครับ

ต่อไปสมมติว่าผมต้องการเขียน operator <<(ภายนอก class) เพื่อใช้แสดงเวคเตอร์ทางหน้าจอ ผมอาจจะเขียนดังนี้ครับ

สำหรับ operator << เมื่อทำการสร้างนอก class จะต้องใช้จำนวน input 2 ตัวเสมอครับ

เครื่องหมาย & หน้า output เป็นการบอกให้ output stream ทำการ update ค่า output ที่เราสร้างขึ้นมา (จำเป็นต้องใส่ & เสมอ!!! ไม่เช่นนั้นจะ compile ไม่ผ่าน) และ เครื่องหมาย & หน้า operator เป็นการบอกให้ค่าที่แสดงทางหน้าจอจะมีการ update ตามค่า output ที่เราสร้างขึ้นมา(จำเป็นต้องใส่ & เสมอ!!! ไม่เช่นนั้นจะ compile ไม่ผ่าน )

เมื่อทำการทดสอบ operator  >> ที่เราสร้างขึ้นมานี้ดูใน main จะได้ผลลัพธ์ดังนี้ครับ

ต่อไปผมจะลองสร้าง operator >> (ภายนอก class vector) ซึ่งจะใช้เก็บค่าเพื่อสร้างเวคเตอร์ขึ้นมาดังนี้ครับ

วิธีการสร้างก็จะสร้างคล้ายๆกับ operator << แต่สิ่งที่แตกต่างกันอย่างหนึ่งคือ หน้าตัวแปร v ใน operator ตัวนี้จะต้องมี & นำหน้า เพื่อที่ว่าหลังจากรับ input จากคีย์บอร์ด ส่วนประประกอบตามแนวแกน x ตามแนวแกน y และตามแนวแกน z มีค่าเปลี่ยนไปตาม input ที่เราทำการใส่เข้าไปด้วยครับ

เมื่อลองทดสอบการใช้ >> ใน main ดู จะได้ผลลัพธ์ดังนี้ครับ

ลองเอาไปประยุกต์ใช้กับการเขียนโปรแกรมดูครับ จะทำให้ตัวโปรแกรมของเราอ่านง่ายขึ้นเยอะเลยครับ ^^

Leave a Reply

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 / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: