การส่งผ่าน Arguments จัดทำโดย : Mr.POP พิมพ์
 Untitled Document

สวัสดีครับ ในบทความนี้เรามาต่อกันด้วยเรื่องราวของ Method กันอีกเรื่องนะครับ ผมจะมานำเสนอเรื่องของการส่ง พารามิเตอร์ของ Method ครับหรือเรียกกันว่า การส่งผ่าน Arguments ในภาษา Java จะมีการส่งผ่านยังไงลอง มาดูกันเลยนะครับ

ก่อนอื่นเรามาทำความเข้าใจกันซักนิดก่อนนะครับเดี๋ยวบางคน จะสับสนกับคำศัพท์ 2 คำนี้ คำว่า Arguments(อากิวเมนต์) กับ Parameter(พารามิเตอร์) มันแตกต่างกันอย่างไร

Arguments หมายถึง ค่าคงที่หรือตัวแปรต่างๆ ที่เราจะส่งไปให้ Method ที่มีการรับพารามิเตอร์
Parameter หมายถึง ตัวแปรที่กำหนดขึ้นมาเพื่อรองรับค่าของ Arguments ที่จะส่งมาให้กับ Method

ถ้าใครอ่านแล้วงงให้ดูตัวอย่างต่อไปนี้ครับ (สำหรับในบทความเก่าๆ เรื่อง Metohd ผมจะใช้ศัพท์คำว่า พารามิเตอร์ อย่างเดียว ก็เพื่อความง่ายในการอ่านนะครับ ดังนั้นเมื่อมาอ่านบทความนี้แล้วเราทราบแล้วว่าความหมายของศัพท์ 2 ตัวแตกต่างกันอย่างไร ก็ให้ทำความเข้าใจกันใหม่อีกทีนะครับ)

การส่งผ่าน Arguments จะมีอยู่ 2 ลักษณะ คือ
1. การส่งผ่านด้วยค่าของ Arguments (Pass by value)
วิธีของ Pass by value นี้จะเป็นการส่งตัวแปร ค่าคงที่ต่างๆ (Arguments)โดยใช้การกำหนดค่าแบบ copy by value ให้กับพารามิเตอร์ที่มารองรับเลย

2. การส่งผ่านด้วยการอ้างอิง Arguments (Pass by reference)
วิธีของ Pass by reference นี้จะต้องเป็นการส่งตัวแปรเท่าันั้นห้ามเป็นค่าคงที่ จะเป็นการส่งค่า address ของ Arguments โดยใช้การกำหนดค่าแบบ copy by reference ให้กับพารามิเตอร์ที่มารองรับ แต่ในภาษา Java นี้เราจะเป็นการส่ง object หรือเรียกอีกอย่างว่า instances ของคลาสเหล่านี้จะถูกส่งแบบ Pass by reference ทั้งสิ้น

ลองมาดูตัวอย่างของการส่งทั้ง 2 แบบกันเลยนะครับ

1. การส่งผ่านด้วยค่าของ Arguments (Pass by value)


อธิบายโปรแกรม โปรแกรมนี้จะมี 2 class นะครับคือ TestPass1 กับ Circle ซึ่งคลาส Circle จะทำหน้าที่ในการเซตค่ารัศมี ของวงกลมและมีการคำนวณหาพื้นที่วงกลมด้วย ตัวอย่างนี้เป็นตัวอย่างเก่านะครับจากบทความคราวที่แล้วผมจะไม่ขออธิบาย รายละเอียดอื่นๆ แล้วนะครับ ให้ดูประเด็นหลักๆ คือบรรทัดที่ 7 มีการส่งค่าของ Arguments 2 ค่า คือ ค่าของรัศมี myCircle.getRadius( ) และพื้นที่ myCircle.findArea( ) ไปให้พารามิเตอร์ที่อยู่ใน Metohd printCircle แบบนี้แหละคับคือการ Pass by value

2. การส่งผ่านด้วยการอ้างอิง Arguments (Pass by reference)

อธิบายโปรแกรม จากโปรแกรมผมจะเปลี่ยนวิธีการส่งพารามิเตอร์เป็นแบบ Pass by reference นะครับโดยเปลี่ยนการประกาศ รับพารามิเเตอร์ที่ printCircle เป็นแบบ object ซึ่งก็คือประกาศตัวแปร c จากคลาส Circle และส่ง Arguments ชื่อ myCircle ที่ประกาศใน main มาให้ตัวแปร c การกระทำแบบนี้จะเป็นการส่งค่า address ของ object หรือ instances ของ myCircle ไปให้กับ c นั้นเองทำให้ c สามารถเรียกใช้ Method ต่างๆ ที่อยู่ในคลาส Circle ได้ทันที คำตอบของตัวอย่างทั้ง 2 เหมือนกันนะครับ แต่ต่างกันที่วิธีการครับ

เป็นอย่างไรครับพอจะเริ่มมองเห็นอะไรได้มากขึ้นไหมครับในการเขียน Java การส่งและรับพารามิเตอร์นี้ก็ถือเป็นเรื่องสำคัญเรื่องนึง นะครับอย่ามองข้ามไป เพราะมันจะทำให้โปรแกรมเราีมีประสิทธิภาพมากขึ้นและมีความยืดหยุ่นมากขึ้นอย่างเวลาเราทำ Overloading Method ก็ต้องคำนึงถึงตัวพารามิเตอร์ที่จะรับ ส่งด้วยนะครับ สำหรับบทความนี้ขอจบเพียงเท่านี้นะครับ สวัสดีครับ....

 

คุณอาจสนใจ
เชื่อมต่อ Flash MX กับเท็กซ์ไฟล์ และ XML (ตอนที่ 2)
Ching Ching (26,297 - 29 ก.ย. 50)
การใช้คำสั่ง DMax และ DMin
นายจืด (19,149 - 08 พ.ค. 51)
ทำปุ่มเคลื่อนไหวใส่เว็บด้วย Flash MX (ตอนที่ 2)
มรกต อุ่นเสรี (33,177 - 29 ก.ย. 50)
วิธีการสแกนหาทั้ง Web Site ว่ามี Link ไหนที่เสียหรือเข้าไม่ได้บ้าง
เว็บไทยดีดี (15,087 - 29 ก.ย. 50)
ให้แสดงสีสันชัด ๆ ว่าเมล์ไหนใน Out look Express มีไฟล์แนบ
เว็บไทยดีดี (13,345 - 27 ต.ค. 50)
สร้างสายรุ้งด้วย Polar Coordinates
Mr.GuruZ (120,746 - 04 มิ.ย. 49)
เคล็ดไม่ลับกับการวาดเส้นโค้งให้ดูสวยงาม
Mr.GuruZ (154,056 - 04 มิ.ย. 49)
การใช้งานคำสั่ง strftime
Mr.GuruZ (25,717 - 03 มิ.ย. 49)