Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Computer Programming (Java)

Computer Programming (Java)

Published by SAM PURIWAT, 2022-08-22 10:33:33

Description: เอกสารประกอบการสอนรายวิชา การเขียนโปรแกรมคอมพิวเตอร์ ใช้สำหรับการเรียนการสอนในหลักสูตรการจัดการเทคโนโลยีสารสนเทศ คณะเทคโนโลยีการจัดการ มทร.ศรีวิชัย

Keywords: ่่java,programming,subject

Search

Read the Text Version

เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 131  เปนลบ (-) คือ String ไมเทากัน ขอความทางซายมีคารหสั asci นอยกวาขอความ ทางขวา  เปน บวก (+) คือ String ไมเทากัน ขอ ความทางซา ยมีคารหัส asci มากกวาขอ ความ ทางขวา  เปน ศนู ย (0) คือ String ทัง้ สองเทา กนั String str1 = \"Computer\"; String str2 = \"Programming\"; If (str1.compareTo(str2) < 0) System.out.println(“str2 more than str1.”); else if (str1.compareTo(str2) > 0) System.out.println(“str2 less than str1.”); else System.out.println(“str2 equals to str1.”); จากตัวอยางเปน การเปรยี บเทยี บ String 2 ตัว ซ่งึ มคี าใน String แตกตางกัน ทำใหผ ลลัพธท่ี เกิดขึน้ มีผลให expression ของคำส่ัง if อันแรกเปน True แสดงวาคาที่ไดจากการเปรียบเทยี บดว ย เมธอด compareTo(); มคี าเปนลบ (-) เนอ่ื งจาก str2 มคี า รหัส ascii มากกวา str1 นอกจากเมธอดตวั อยางเหลานแี้ ลว ยงั มเี มธอดอกี มากมายทส่ี ามารถเรียกใชไดทันที ทงั้ ในการ จัดการ String และการเปรียบเทียบ String สามารถศกึ ษาเพิม่ เตมิ ไดจ ากลง้ิ ดานลา ง  https://docs.oracle.com/javase/8/docs/api/java/lang/String.html _________________________________________________________________________ เรียบเรียงโดย: อาจารยภ ูรวิ ฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

132 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพวิ เตอร (11-413-202) แบบฝก หัดบทที่ 9 1. จงเขียนโปรแกรมเพอ่ื กลบั ตัวอกั ษร (reverse) คำในประโยค นบั จำนวนคำ ในประโยคดวยวามกี ี่ คำ และหาวา มสี ระทง้ั หมดกีต่ วั เชน ปอ นประโยคที่ตอ งการ This is a book ผลลพั ธที่ไดคือ sihT si a koob มีท้งั หมด 4 คำ มสี ระท้ังหมด 5 ตวั ปอนประโยคทต่ี องการ This is a cat ผลลพั ธท ่ีไดค ือ sihT si a tac มีทงั้ หมด 4 คำ มสี ระทง้ั หมด 4 ตัว 2. เขียนโปรแกรมเพื่อรับขอ ความ String 2 ขอความที่มีความยาวเทากนั จากน้ันทำการเปรยี บเทียบ วา ทงั้ สองขอความมีตัวอกั ษรใดทเี่ หมือนกันบา งโดยแสดงผลทางจอภาพ 3.เขียนโปรแกรม Login โดยใหผ ูใ ชก รอก username และ password เพ่ือเขา สรู ะบบ หากผใู ชก รอก ขอ มลู ไมถูกตอ งครบ 3 คร้งั ใหแ สดงขอ ความเชน “Your account has been locked. Please, contact Admin.” _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูริวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 133 วิธีการสอนและกจิ กรรม 1. สอนแบบบรรยายโดยใชส ่ือประกอบการสอน 2. ใหน ักศกึ ษามสี วนรวมในกจิ กรรมระหวางการเรยี นการสอนโดยใชว ิธกี ารถาม-ตอบ 3. ปฏิบัติการเขียนโปรแกรมการใชงานคลาสสตรงิ เอกสารประกอบ เอกสารประกอบการสอน บทที่ 9 สตรงิ ส่อื การสอน ส่อื ประกอบการสอน ไฟลนำเสนอ power point บทท่ี 9 สตรงิ โสตทัศนวสั ดุ เครอ่ื งฉายโปรเจคเตอร งานทีม่ อบหมาย 1. ศกึ ษาการประกาศ String เมธอดในคลาส String และการเปรียบเทียบ String ดวยรูปแบบ ตา ง ๆ 2. แบบฝก หดั การเขยี นโปรแกรมโดยการใชงาน String ในรปู แบบตาง ๆ การวดั ผล 1. สังเกตพฤติกรรมการเรยี นในหอ งเรียน 2. สงั เกตพฤติกรรมการมสี ว นรว มในกจิ กรรมระหวางการเรียนการสอนในการถาม-ตอบ 3. ตรวจงานทมี่ อบหมาย 4. ทดสอบตามจุดประสงคก ารสอน บนั ทกึ การสอนและขอ สงั เกต …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภรู ิวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

134 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู วิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพวิ เตอร (11-413-202) 135 สปั ดาหท ี่ 11 ใบเตรียมการสอน เวลา 4 ชว่ั โมง บทท่ี 10 เมธอด 10.1 การสรา งเมธอด 10.2 อากิวเมนตและพารามเิ ตอร 10.3 เมธอดท่ีมกี ารสง คา กลับ (Return keyword) 10.4 เมธอดและอาเรย 10.5 โอเวอรโหลดดง้ิ เมธอด (Overloading Method) จดุ ประสงคก ารสอน 10.1 เขาใจโครงสรา งและวิธีการสรางเมธอด 10.2 สามารถเรียกใชงานเมธอดไดอ ยางถกู ตอ ง 10.3 สามารถเขียนโปแกรมเพือ่ สง คา หรอื รับคา ในเมธอดได 10.4 เขาใจหลักการ overloading method และการใชงาน _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภ รู ิวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

136 เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) บทที่ 10 เมธอด เมธอด คือ ระเบียบวิธใี นการทำงาน เปนกลุมของคำส่ังที่สรางขึน้ มาเพือ่ ทำหนาที่บางอยาง เปนสวนยอยภายในโปรแกรมชวยลดความซับซอนของโปรแกรม การสรางเมธอดจะสามารถทำให เรียกกลุมคำสั่งนั้นมาใชใหมไดโดยที่ไมตองเขียนคำสั่งขึ้นมาใหม เมธอดมีทั้งที่สรางขึ้นเอง และมีใน ไลบรารี่ของ Java ที่สามารถเรียกใชไดทนั ทีซึ่งมีตัวอยา งใหเห็นในบทท่ีผานมา เชน เมธอดในคลาส Scanner และคลาส String ดงั นน้ั ในบทนี้จะกลาวถึงเมธอดทีผ่ ูเขียนโปรแกรมสรางขน้ึ เอง ดงั ตอไปนี้ 10.1 การสรางเมธอด การสรา งเมธอดในภาษา Java นั้นจะสามารถเรียกใชจ ากสว นใดของโปรแกรมก็ได ข้นึ อยูกับ ขอบเขตและระดบั การเขา ถงึ ทไ่ี ดกำหนดไว โดยมีรปู แบบการสรางเมธอดดงั นี้ type name ( parameter1, parameter2, ... ) { statements } access_modifier type name ( parameter1, parameter2, ... ) { statements } โดยท่ี  type คอื ประเภทของเมธอดท่ีสรา งขน้ึ เปน ไดท ้งั primitive datatype หรือ reference types และหากเมธอดไมมกี ารสง คา กลับจะมี type เปน void  Name คอื ช่ือของเมธอด มีกฎการต้งั ชอ่ื เดยี วกบั การต้ังชื่อตวั แปร  parameter คอื เปน ลิสตข องตัวแปรที่จะสงเขาไปใชในเมธอด โดยสามารถมไี ดต้ังแต 1 ข้นึ ไปหรอื ไมม ีก็ได  access modifier คือ การกำหนดระดับการเขาถึงของเมธอด มี 4 แบบ คือ public protected private และ default (ไมกำหนด) _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูรวิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 137 รูปที่ 10.1 ตัวอยา งโปรแกรมการสรา งเมธอด จากรปู ที่ 10.1 เมธอด 2 เมธอด คอื sayGreeeting() เพ่ือใชแสดงขอความเมือ่ โปรแกรมเร่ิม ทำงาน และ summation() เปนเมธอดสำหรับการหาผลรวมของตวั เลขสองจำนวน การเรียกใชเมธอด ในภาษา Java นัน้ คือ การใชช่ือของเมธอดนั้นแลวตามดวยเครอ่ื งหมาย () และใส อากิวเมนตใหตรง ตามลำดับพารามิเตอรของเมธอด จะเห็นวาในตัวอยางมีการเรียกใชเมธอด summation() สองครงั้ โดยมไี มต อ งเขยี นโปรแกรมสำหรบั หาผลรวมขึน้ มาใหม ซ่ึงนเ้ี ปน วิธีการแยกกลมุ ของคำสง่ั ออกไปเพื่อ ลดความซบั ซอนและการนำกลบั มาใชใหมในหลกั การเขียนโปรแกรม นอกจากนี้ในตัวอยางยังมีคำสั่ง static ซึ่งเปนคำสั่งที่ทำใหเมธอดหรือตัวแปรใด ๆ เปนตัว แปรที่สามารถใชรวมกันภายในโปรแกรมได สำหรับการเรียกใช static เมธอด เมธอดท่เี รียกก็ตอ งเปน static เชน กัน เมอ่ื รันโปรแกรมตัวอยา งขา งตนจะไดผลลพั ธดงั รูปที่ 10.2 รูปท่ี 10.2 ผลลัพธการรนั ตัวอยางโปรแกรมการสรา งเมธอด _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูรวิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

138 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 10.2 อากิวเมนตและพารามิเตอร สำหรบั การสง คาหรือรบั คา ตวั แปรในเมธอดนั้น อากวิ เมนต คอื ตวั แปรทสี่ งไปยังเมธอดตอน ที่เมธอดถูกเรยี กใชง าน เชน summation (x, y); ซงึ่ ในท่ีนี้ x และ y คือ อากิวเมนต สวนพารามิเตอร เปนตัวแปรที่ถูกประกาศขึ้นภายในเมธอดเพื่อใชสำหรับรับคาจากอากิวเมนตที่สงเขามา จากรูปท่ี 10.1 จะเห็นวา อากวิ เมนตและพารามเิ ตอรในเมธอด summation(); น้ันเปนชอื่ เดยี วกัน แตตวั แปร x และ y นั้นถกู ประกาศไวใ นคนละเมธอด ดังน้ันตวั แปร x และ y จะมคี าในเฉพาะเมธอดทเี่ ปนเจา ของ ตัวแปรน้นั หรือบางครงั้ เรยี กวา ตวั แปรเฉพาะท่ี (local variable) นอกจากนกี้ ารสง อากิวเมนตไ ปยังเมธอดนน้ั จะตองสง ใหต รงกบั ลำดับพารามิเตอรแ ละชนิดตัว แปรในเมธอดท่ีเรียกใช ดังรปู ที่ 10.3 รปู ที่ 10.3 ตัวอยางโปรแกรมการสง คาอากิวเมนต จากรูปที่ 10.3 เปนการสรางเมธอดชื่อ summation(); และมีการรับคาพารามิเตอร 2 ตัว เปนชนิด double คือ ตัวแปร i และ j ดังนั้นเม่ือตองการเรียกใชเมธอดนีจ้ ะตองสงอากิวเมนตที่เปน คาขอมูลชนิด double ใหกับเมธอด summation(); เชนในคำสั่ง System.out.println(\"x + y = \"+summation(x,y)); สามารถสง อากวิ เมนตไปไดเนอื่ งจากตวั แปร x และ y เปน ชนดิ double สำหรับคำสั่ง System.out.println(\"a + b = \"+summation(a,b)); เปนการเรียกใชเมธอด summation(); เชนกัน เพียงแตตัวแปร a และ b นั้นเปนขนิด integer ซึ่งในตัวอยางนีโ้ ปรแกรมยงั _________________________________________________________________________ เรียบเรียงโดย: อาจารยภ ูริวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 139 สามารถทำงานไดโดยไมมีขอผิดพลาดเนื่องจากตัวแปรชนิด integer มีขนาดเล็กกวาตัวแปรชนิด double ผลลัพธก ารรันโปรแกรมเปน ไปตามรปู ท่ี 10.4 รูปท่ี 10.4 ผลลพั ธก ารรนั การสง คาอากิวเมนต จะสังเกตเห็นวาในรูปที่ 10.4 ผลลัพธที่ไดจะเปนขอมูลชนิด double ทั้งสองคำสั่งเพราะ เมธอด summation(); นั้นมีการคืนคากลับเปนชนิด double สำหรับการคืนคากลับจะกลาวถึงใน หวั ขอ ตอ ไป 10.3 เมธอดที่มีการสง คากลับ (Return keyword) เมธอดที่มีการสงคากลับ หมายถึง เมธอดจะมีการสงคากลับไปยังที่ที่เมธอดถูกเรียกใช โดยทั่วไปจะมีคำสั่ง return เปนคำสั่งสุดทายเมื่อเมธอดทำงานเสร็จสิ้นตามคำสั่งที่ถูกเขียนไว และ โปรแกรมจะทำงานคำส่ังอนื่ ตอ ไป ดงั รปู ที่ 10.5 รปู ที่ 10.5 ตัวอยา งโปรแกรมเมธอดคืนคา กลับ _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภ ูรวิ ฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

140 เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) จากตัวอยา งเปนโปรแกรมตรวจสอบเลขคูเ ลขค่ี โดยใหผใู ชกรอกขอ มูลเปน ตัวเลขจำนวนเต็ม (integer) 5 จำนวน จากนัน้ สงอากวิ เมนตไ ปตรวจสอบทเ่ี มธอด checkNumber(); หากตวั เลขท่ีรับคา มา modulo ดวย 2 แลวไดเศษเทากับ 0 แสดงวาเลขนัน้ จะเปนเลขคู ทำให expression ของคำสั่ง num % 2 == 0 ? true: false เปน true และคืนคาที่เปน boolean ไปยังที่ที่เรียกใชเมธอดน้ี ผลลัพธก ารรันโปรแกรมตามรปู ท่ี 10.6 รูปที่ 10.6 ผลลพั ธการรนั ตัวอยางโปรแกรมเมธอดคืนคา กลบั นอกจากนใ้ี นกรณีทต่ี องการนำคาที่คืนกลบั มาจากเมธอดไปประมวลผลตอ สามารถทำไดโ ดย การประกาศตวั แปรชนิดเดียวกนั เกบ็ คา ที่ถูกคืนกลับมานนั้ ได ดังรปู ท่ี 10.7 รปู ที่ 10.7 โปรแกรมเมธอดคืนคากลับแบบมีตัวแปรมารับ _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ รู ิวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 141 จากตัวอยางมกี ารสรา งเมธอดช่ือวา findMax(); ใชส ำหรบั หาคา ทม่ี ากทีส่ ดุ ของตัวเลขจำนวน เต็ม 2 จำนวน โดยจะคืนคาที่มากกวากลับไปยังที่ที่เรียกใชในที่นี้คือ int max = findMax(x, y); ดังน้ันคา ที่คืนกลับไปจะถูกเกบ็ ไวในตัวแปร max และจะไดผ ลลัพธการรันโปรแกรม ดงั รูปที่ 10.8 รปู ท่ี 10.8 ผลลัพธการรันโปรแกรมเมธอดคืนคา กลับแบบมีตวั แปรมารบั 10.4 เมธอดและอาเรย ในการสงขอมูลแบบอาเรยเขาไปยังเมธอด ทำไดเ ชนเดยี วกนั กบั ตัวแปร โดยสามารถสง อาเรย 1 มติ ิ หรอื หลายมติ ิไปยงั เมธอด ตัวอยา งดังรูปที่ 10.9 รปู ที่ 10.9 โปรแกรมเมธอดกบั อาเรย _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภูริวฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

142 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) ในตวั อยา งเปน การสรางเมธอดช่ือ sort() สำหรบั การเรียงขอ มลู ท่ีอยใู นอาเรย 1 มิติ จะเห็น วา เมธอดน้รี ับพารามเิ ตอรมาเปน อาเรย และเมอ่ื ทำคำสง่ั ในเมธอดเสรจ็ สนิ้ แลวจงึ คนื คากลบั เปน อาเรย เชนเดิม นอกจากนี้ในตัวอยางยังมีการเรียกใชเมธอดชื่อ toString(); ซึ่งเปนเมธอดที่อยูในคลาส Arrays ท่ใี ชส ำหรับแปลงอาเรยใหเปน String ในการแสดงผลทางจอภาพไดผลลัพธด ังรูปท่ี 10.10 รูปท่ี 10.10 ผลลพั ธการรันโปรแกรมเมธอดกบั อาเรย 10.5 โอเวอรโ หลดดง้ิ เมธอด (Overloading Method) Overloading method หรือ method overloading คือ การเขียนหรือสรางเมธอดชื่อเดมิ ที่มีอยูแลวเพิ่มขึ้นมา เพื่อจุดประสงคการทำงานที่หลากหลาย โดยใชชื่อเมธอดเดิม แตมีขอแมวา จะตองสงอากิวเมนต หรือพารามิเตอรไปยังเมธอดแตละตัวไมเหมือนกัน เพื่อใหโปรแกรมเขาใจวา ตอ งการเรยี กใชเ มธอดใด ดังรูปท่ี 10.11 รูปท่ี 10.11 ตัวอยางโปรแกรม method overloading _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภูริวฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 143 จากตัวอยางจะเห็นวามีเมธอดที่ชื่อ findMax(); 2 เมธอด แตละเมธอดจะมีการรับ พารามิเตอรท่ีแตกตางกัน คือ อากิวเมนตที่สงมาเปน double, double โปรแกรมจะไปทำงานที่ findMax(); ที่รับพารามิเตอรตามที่อากิวเมนตสงมา และหากอากิวเมนตที่สงมาเปน int, int โปรแกรมจะไปทำงานทเ่ี มธอด findMax(); ที่รับพารามิเตอรแ บบ int, int _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู วิ ัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

144 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) แบบฝก หดั บทที่ 10 1. จงเขยี นโปรแกรมเพอ่ื รบั คาขอ มลู เปนจำนวนเตม็ 10 จำนวนเก็บไวใ นตวั แปรอาเรย จากน้นั หาคา ขอ มลู ทมี่ คี าสูงสุดและตำ่ สุดทอ่ี ยใู นอาเรยโดยการสรางเมธอด ดงั น้ี  findMax() เพ่อื หาคา สงู สุด  findMin() เพื่อหาคาตำ่ สดุ 2. จงเขยี นโปรแกรมเพอ่ื คำนวณหาพนื้ ทข่ี องรปู ทรงเรขาคณติ คอื ทรงสามเหล่ยี ม ทรงกรวย และทรง กรม โดยตอ งสรา งเมธอดสำหรบั หาพ้ืนทขี่ องแตล ะรปู ทรงเรขาคณติ โดยมชี ือ่ เดยี วกันคอื findArea(); 3. จงเขยี นโปรแกรมเพื่อใชใ นการคำนวณหาคา จอดรถโดยกำหนดขอมูลเขา คือ เวลาเขา, เวลาออก โดยท่ี เวลาท่ใี ชจ อด = เวลาออก – เวลาเขา คิดคา จอดรถใน 3 ชวั่ โมงแรกชัว่ โมงละ 20 บาท ในกรณีทจ่ี อดไมถ ึง 30 นาทใี หปด ทง้ิ ถาเกนิ 30 นาที เศษของช่ัวโมงใหป ดขึ้น หากจอดรถที่เกินจาก 3 ชั่วโมงคิดชั่วโมงละ 30 บาทโดยใชวธิ ีปด เศษเชนเดียวกัน การรับขอมูลเขาควรใชรูปแบบในการจัดการขอมูล เชน การใชคลาส SimapleDateFormat โดยมีรปู แบบ String time = “16:00:00”; _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภูริวฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 145 วธิ กี ารสอนและกิจกรรม 1. สอนแบบบรรยายโดยใชสอื่ ประกอบการสอน 2. ใหนักศึกษามีสว นรวมในกจิ กรรมระหวางการเรียนการสอนโดยใชว ธิ กี ารถาม-ตอบ 3. ปฏบิ ัติการเขยี นโปรแกรมการสรางเมธดและการเรยี กใชเมธอด เอกสารประกอบ เอกสารประกอบการสอน บทท่ี 10 เมธอด สอื่ การสอน สอ่ื ประกอบการสอน ไฟลนำเสนอ power point บทท่ี 10 เมธอด โสตทัศนวสั ดุ เครอื่ งฉายโปรเจคเตอร งานทีม่ อบหมาย 1. ศกึ ษาการสรางเมธอด การเรยี กใชเมธอด การสง อากิวเมนตแ ละพารามิเตอร 2. ศึกษาการสราง method overloading และวธิ ีการเรียกใชง าน 3. แบบฝก หัดวิเคราะหและการเขยี นผงั งานสำหรับการเขียนโปรแกรมคอมพวิ เตอร การวัดผล 1. สังเกตพฤติกรรมการเรียนในหอ งเรยี น 2. สงั เกตพฤติกรรมการมสี วนรวมในกจิ กรรมระหวางการเรียนการสอนในการถาม-ตอบ 3. ตรวจงานทม่ี อบหมาย 4. ทดสอบตามจุดประสงคก ารสอน บันทึกการสอนและขอสังเกต …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… _________________________________________________________________________ เรียบเรียงโดย: อาจารยภรู วิ ัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

146 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู วิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 147 สปั ดาหท ่ี 12 ใบเตรยี มการสอน เวลา 4 ชวั่ โมง บทที่ 11 การเขยี นโปรแกรมเชงิ วัตถุ 11.1 การเขียนโปรแกรมเชงิ วตั ถุ 11.2 คุณสมบัตขิ อง OOP 11.3 คลาสและออบเจค็ 11.4 การสรางคลาสและออบเจค็ 11.5 คอนสตรคั เตอร 11.6 คำส่ัง this และ Static จุดประสงคก ารสอน 11.1 เขา ใจหลักการของการเขียนโปรแกรมเชิงวตั ถุ 11.2 เขา ใจวิธกี ารสรางคลาส และออบเจ็ค 11.3 สามารถแสดงขอมลู ของออบเจ็คทสี่ รางขึน้ มาจากคลาสได _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูรวิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

148 เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพวิ เตอร (11-413-202) บทท่ี 11 การเขียนโปรแกรมเชงิ วัตถุ การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming: OOP) ในภาษา Java เปน รปู แบบหนึง่ ในการเขียนโปรแกรมท่มี คี วามสำคัญ ซึ่งเปน การพฒั นาจากการเขียนโปรแกรมแบบเดมิ ที่ คุนเคยกนั คือ procedural programming ในบทนี้จะกลาวถึงคณุ สมบัติของ OOP การสรางคลาส และออบเจ็ค ดงั ตอไปน้ี 11.1 การเขียนโปรแกรมเชิงวตั ถุ OOP (Object-Oriented Programming) เปนวธิ กี ารเขียนโปรแกรมทอี่ าศยั แนวคิดของวตั ถุ ชิน้ หนึง่ มคี วามสามารถในการปกปองขอมลู และสืบทอดคุณสมบัติ ทำใหแนวคิดน้ีไดรับการยอมรับ และพัฒนาใชในระบบตาง ๆ มากกมาย เชน ระบบปฏิบัติการ window เปนตน แนวคิด OOP เปน การเขยี นโปรแกรมทเ่ี นนถึงปญ หาและองคป ระกอบของปญหา (เพือ่ แกป ญ หา) การเนนที่ปญหาและ องคประกอบของการแกป ญ หา (Problem Space) จะคลา ยกับการแกไ ขปญ หาและชีวติ ความเปนอยู ของมนุษยที่จะตองมี คน สัตว สิ่งของ เพื่อแกปญหา (มีหนาที่แกปญหา) มากกวาจะมองที่วิธีการ แกปญหานั้น ๆ หรือขั้นตอนในการแกปญหา (Solution Space) ซึ่งเปนวิธีการเขียนโปรแกรมแบบ เกา น่นั เอง อาลนั เคย (Alan Kay) เปนผบู กุ เบกิ แนวคิดการเขียนโปรแกรมเชงิ วัตถุ ไดเ สนอกฎ 5 ขอ ท่ี เปน แนวทางของภาษาคอมพวิ เตอรเ ชิงวัตถุ หรือท่เี รียกวา OOP ดงั นี้  ทกุ ๆ ส่ิงเปน วัตถุ (Everything is an Object)  โปรแกรม ก็คือ กลุมของวัตถุท่ีสงขาวสารบอกกันและกันใหทำงาน (A Program is a Bunch of Object Telling Each Other What to do by Sending Messages)  ในวัตถุแตละวัตถุจะตองมีหนวยความจำและประกอบไปดวยวัตถุอื่น ๆ (Each Object has Its Own Memory Made Up of Other Objects)  วตั ถทุ ุกชนดิ จะตอ งจดั อยูใ นประเภทใดประเภทหนึง่ (Every Object has a Type)  วัตถุที่จัดอยูในประเภทเดียวกันยอมไดรับขาวสารเหมือนกัน (All Objects of a Particular Type Can Receive the Same Messages) _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภ รู วิ ัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 149 OOP น้ัน ออบเจค็ จะประกอบไปดว ย 2 องคป ระกอบหลกั คือ ตวั แปรซึง่ เปนขอมลู หรือการ กำหนดคุณลักษณะของออบเจ็ค และเมธอดที่เปนฟงกช ั่นการทำงานที่ออบเจ็คที่สามารถทำได การ สรางออบเจค็ นัน้ จะอยูภ ายใตขอกำหนดของคลาส โดยคลาสจะเปนตัวกำหนดวา ออบเจค็ จะมีขอ มลู หรือคณุ ลกั ษณะอะไรบา งและสามารถทำอะไรไดบา ง ดงั นนั้ ออบเจค็ ท่ีสรางขน้ึ มาจากคลาส จะเรียกวา instances ของคลาส ในปจจุบันมีภาษาที่ใชในการเขียนโปรแกรมทีส่ นับสนุน OOP เชน Java C++ C# Python PHP Ruby และอื่น ๆ การเขียนโปรแกรมแบบ OOP นั้นเปนการพัฒนารูปแบบของการเขียน โปรแกรมไปอีกข้ันจากการเขยี นโปรแกรมแบบเดิมที่เราเคยเขียนคอื Procedural programming 11.2 คณุ สมบตั ขิ อง OOP การเขียนโปรแกรมแบบ OOP มีทั้งขอดีและขอเสียเมื่อเปรียบจากการเขียนโปรแกรมแบบเดิม โดยมคี ุณสมบัตทิ เี่ ปนจุดเดน ดังน้ี  Code reuse: การนำโคดกลับมาใชใหม ไดอยางมีประสทิ ธิภาพ เมื่อผูเขียนโปรแกรมสราง วัตถุมีจำนวนมากพอก็สามารถนำวัตถุที่สรางขึ้นมาประกอบเปนวัตถุใหม หรือที่เรียกวา คอมโพสติ ชน่ั “Composition”  Maintenance: งายตอการบำรุงรักษาและปรับปรุง เพราะแตละคลาสจะมีขอบเขตการ ทำงานและเมธอดของมนั เอง  Classes: คลาสที่สรา งขึน้ นัน้ สามารถนำไปสรางเปน ออบเจ็คไดไมจ ำกัด และแตละออบเจ็ค มสี มาชกิ เปนของมันเอง  Inheritance: คุณสมบัติการสืบทอด คลาสสามารถสืบทอดจากคลาสอื่นได ซึ่งเปนการ reuse code และพฒั นาตอ เดิมความสามารถจากคลาสเดิมท่ีมอี ยู โดยคลาสหลกั จะเรียกวา superclass และคลาสทสี่ บื ทอดคุณสมบตั ิจากคลาสอ่ืนเรยี กวา subclass  Polymorphism: การพองรูป (Polymorphism) ก็คอื การถายทอดคณุ สมบตั ขิ องออบเจ็คที่ มีไดห ลากหลายรปู แบบมาทค่ี ลาสอื่นท่ีรบั คุณสมบตั ินน้ั มา (subclass) ซึ่งสามารถจัดการได จากคลาสตน ฉบบั (superclass) และคลาสท่สี บื ทอดมาน้นั สามารถกำหนดการกระทำท่ีเปน เอกลกั ษณข องตวั เองได _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูริวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

150 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202)  Encapsulation: เปนคุณสมบัตกิ ารหอหมุ เปนแนวคิดแบบนามธรรมที่วาผูใชไมจำเปนตอง ทราบวาเมธอดและตัวแปรในคลาสนั้นทำงานอยางไร แตมันสามารถทำงานไดสำเร็จและ ใหผลลพั ธทีต่ อ งการได ซึ่งคุณสมบัตนิ ้ผี ใู ชจ ะไมสามารถเขา ถงึ สถานะของออบเจ็คไดโดยตรง แตต องกระทำผานเมธอดทคี่ ลาสนั้นอนุญาตใิ หใชง านเทาน้นั  Abstraction: คือการอธบิ ายการทำงานของคลาสและเมธอดในแบบนามธรรม เพื่อนำไปใช สำหรบั ออบเจค็ ทม่ี กี ารทำงานแตกตางกนั เชน ถามีคลาส pet แลว มีออบเจค็ 2 ตัวทีถ่ กู สรา ง ขึน้ มาจากคลาสนี้ คือ cat และ dog หากกำหนดใหความสามารถที่ออบเจ็คนั้นทำไดคือการ ออกเสียง (make noise) ดังนั้นออบเจ็ค cat และ dog จะมีการออกเสียงที่แตกตางกัน แต ทัง้ สองออบเจ็คถูกสรางขน้ึ มาจากคลาสเดยี วกัน 11.3 คลาสและออบเจค็ การเขียนโปรแกรมแบบ OOP มีสวนประกอบสำคัญ คือ คลาส และออบเจ็ค คลาส เปรยี บเสมอื นเปนพมิ พเขยี ว (blue print) ของออบเจ็ค ซึ่งในขั้นตอนการสรางคลาส จะตองประกอบ ไปดวยตัวแปรและเมธอดในการทำงาน จากนัน้ จงึ สรางออบเจค็ ขึ้นมาจากคลาสท่ีสรา งไว ดังนั้นการ สรา งคลาสกค็ ือการออกแบบรูปแบบของวัตถหุ นึง่ ทต่ี อ งการสรา งข้ึนมา เชน ถาตอ งการสรา งรถขึ้นมา 1 คัน ในรปู ท่ี 11.1 รปู ท่ี 11.1 ตัวอยางคลาส Car แหลง ทีม่ า: https://en.wikibooks.org/wiki/A- level_Computing_2009/AQA/Problem_Solving,_Programming,_Operating_Systems,_Databases_an d_Networking/Programming_Concepts/Object-oriented_programming_(OOP) _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู วิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 151 จากตัวอยางเปนรปู ที่แสดงใหเหน็ ถึงรายละเอยี ดของรถที่นำมาสรางเปน คลาส จะเหน็ ไดวา จะมี คุณสมบัติ (attribute) และเมธอด (method) เพอื่ อธบิ ายเก่ียวกับรถ ซง่ึ รถกจ็ ะมีคณุ สมบัติของ มนั เชน จำนวนเชื้อเพลงิ (fuel) ความเรว็ สงู สดุ (maxspeed) และอ่ืน ๆ และสว นของการทำงาน จะ เปนการเติมนำ้ มัน (refuel) การเพิ่มและลดความเร็ว (setSpeed) การขับเคลื่อนรถออกไป (drive) และสตารทหรอื หยุดเครอื่ งยนต เปนตน ซง่ึ สิ่งเหลานจ้ี ะถูกกำหนดไวใ นคลาส สามารถนำขอ มลู เหลาน้ี แปลงเปนคลาสในภาษา Java ไดด ังน้ี รปู ที่ 11.2 ตัวอยางโปรแกรมคลาส Car จากตัวอยา งเปนรูปแบบของการประกาศคลาสในภาษา Java ที่มีช่ือของคลาสคือ Car และ ภายในคลาสจะประกอบไปดวยตัวแปร สำหรับเก็บคาคุณสมบัติตาง ๆ ของรถยนต (attributes) และเมธอด (method) เปน ฟง กการทำงานท่ีรถยนตสามารถทำได แตม ีเพยี งแคค ลาสนนั้ โปรแกรมยัง _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู ิวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

152 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) ไมสามารถทำได ดงั นัน้ ในหัวขอ ตอ ไปจะเปน การสรางออบเจ็คข้นึ มาจากคลาส และนำออบเจ็คนั้นไป มาใชงานเมธอดท่ีอยูใ นคลาส 11.4 การสรา งคลาสและออบเจ็ค  การสรา งคลาส คลาสเปน การกำหนดสว นประกอบตา ง ๆ ท่ีจะนำไปสรางออบเจค็ คลาสจะประกอบ ไปดวยสองสวนหลักคอื ตัวแปร และเมธอด ตวั แปรใชส ำหรบั เกบ็ ขอ มูลตา ง ๆ เก่ยี วกับออบ เจค็ และเมธอดเปนการกำหนดฟง กช ันการทำงานของออบเจค็ ในภาษา Java มีรปู แบบการ สรา งคลาสตอไปนี้ class ClassName { // member variables // member methods } สำหรบั การสรา งคลาสจะใชค ำสง่ั class และตามดวยชอื่ คลาส ชอ่ื คลาสควรเร่ิมตน ดว ยตัวพิมพใ หญและมีหลักการต้งั ชือ่ เชนเดียวกับตวั แปร ภายในบลอ็ กของคลาสจะมสี มาชิก ทเี่ ปนตัวแปรและเมธอด หรืออยางใดอยางหนงึ่ ดงั รปู ท่ี 11.3 _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู ิวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) 153 รูปที่ 11.3 คลาส Person คลาส Person ประกอบดว ย 3 คณุ สมบัติ (attribute) คอื name เปน String สำหรับเกบ็ ชอื่ age เปน integer สำหรับเก็บาอายุ และ nationality เปน String สำหรับเก็บสัญชาติ มีเมธอด 3 เมธอด คือ setNationality() สำหรับกำหนดคาตัวแปร nationality เมธอด getNationality() สำหรับรับคาสัญชาติไปใชงาน และเมธอด showInfo() เปนเมธอดสำหรับแสดงขอมูลทั้งหมดของ ออบเจค็ เปนคาขอมลู ชนิด String ทางจอภาพ  การสรา งและใชง านออบเจค็ เมื่อสรางคลาสเสร็จเรียบรอยแลว ขั้นตอนตอไปเปนการสรางออบเจ็ค โดยจะนำ คลาส Person มาสรางออบเจค็ ดังรปู ที่ 11.4 _________________________________________________________________________ เรียบเรียงโดย: อาจารยภ รู ิวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

154 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) รูปท่ี 11.4 คลาส exPerson จากตวั อยางเปนการสรา งออบเจค็ จากคลาส Person ดวยคำสัง่ Person p1 = new Person(); Person p2 = new Person(); _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภูรวิ ฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 155 โดยที่ p1 และ p2 เปน ตวั แปรประเภทออบเจ็คของคลาส Person และออบเจ็คทั้ง สองน้ันเปนอิสระตอกนั โดยแตล ะออบเจ็คกจ็ ะมตี ัวแปรและเมธอดของมันเอง ในคำสั่งตอไป เปนการกำหนดคา ใหกับออบเจค็ ท้ังสองดวยคำสัง่ ตอ ไปน้ี p1.name = \"Puriwat Lertkrai\"; p1.age = 33; p1.nationality = \"Thai\"; p2.name = \"Captain America\"; p2.age = 34; p2.nationality = \"Americans\"; สำหรับการเขาถึงคุณสมบัติ (attribute) ของออบเจ็คในคลาส Person นั้นจะใช เครื่องหมาย dot (.) แลวตามดวยชื่อตัวแปรที่จะเขาถึง เชน p1.name = “Puriwat Lertkrai”; หมายถึง ออบเจ็ค p1 เขาถึงตัวแปร name และกำหนดคาใหกับตัวแปรเปน “Puriwat Lertkrai” เม่ือกำหนดคาใหกับออบเจ็คแลวสามารถแสดงผลขอมลู ของแออบเจ็ค ไดด ังน้ี p1.showInfo(); p2.showInfo(); p1.setNationality(\"Japanese\"); p1.showInfo(); _________________________________________________________________________ เรียบเรียงโดย: อาจารยภ ูรวิ ัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

156 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) ในตวั อยางออบเจ็คท้งั สองเรยี กใชเ มธอดที่ชือ่ showInfo(); ซึ่งไดมีการสรางเมธอดนี้ ไวในคลาส Person เนื่องจากออบเจค็ ถกู สรา งขึ้นมาจากคลาส ดงั น้นั จึงหมายความวา เมธอด showInfo(); เปนความสามารถหน่ึงท่อี อบเจ็คสามารถทำได หรอื สามารถเรียกใชง านเมธอด ที่อยูใ นคลาส Person ได คำสั่งที่เรียกใชเมธอด setNationality(); เพื่อทำการกำหนดคาตวั แปร nationality ของออบเจ็ค p1 ใหมีคาเปน Japanese ผลลัทธการรันโปรแกรมนี้จะ ไดผ ล ดงั รูปท่ี 11.5 รปู ที่ 11.5 ผลลทั ธการรันโปรแกรม exPerson จะเห็นไดวามีการเรียกใชงานเมธอด showInfor(); ถึง 3 ครั้ง ในแตละครั้งจะเปน การแสดงขอมูลของออบเจ็คท่ีเรียกใชเมธอดนี้ แสดงใหเห็นวาออบเจ็คนั้นเปนอิสระตอกัน และเปนวิธกี ารใชค ุณสมบตั หิ ลกั ของการเขียนโปรแกรมแบบ OOP คือ การ reuse คำส่ังท่ีมี อยูแลว เพื่อลดความซำ้ ซอ นของการเขยี นโปรแกรม 11.5 คอนสตรคั เตอร คอนสตรคั เตอร (constructor) เมื่อกลาวถึงคลาสและเมธอดแลว อีกสิ่งหนึง่ ทขี่ าดไมไ ดเ ลยใน การเขียนโปรแกรมแบบ OOP คือ คอนสตรัคเตอร ซึ่งเปนเมธอดพิเศษที่จะทำงานเมื่อออบเจ็คถกู สรางขึ้น โดยทั่วไปจะใชคอนสตัคเตอรในการกำหนดคาเริม่ ตนใหกับออบเจค็ ในรูปที่ 11.3 ตัวอยาง คลาส Person นั้นไมมีการสรางคอนสตรัคเตอร ในกรณีที่ผูเขียนโปรแกรมไมไดระบุเมธอดนี้ไวใน _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูริวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพวิ เตอร (11-413-202) 157 คลาส ตัวคอมไพเลอรข องภาษา Java จะทำการสรางคอนสตรัคเตอรใหแบบอัตโนมัติ หรือท่ีเรียกวา default constructor ตอไปมาดูตวั อยา งของคลาส Person ในกรณที ี่มกี ารระบคุ อนสตคั เตอรไ ว ดัง รูปท่ี 11.6 รูปที่ 11.6 ตวั อยา ง Constructor คอนสตรัคเตอร คือ เมธอดพเิ ศษทม่ี ีชื่อเดยี วกันกบั ชือ่ คลาส จากรูปท่ี 11.6 ช่ือคลาสคอื Person ดังน้นั คอนสตรคั เตอรจงึ มีช่อื เปน Person เชน เดยี วกันและกำหนดระดับการเขาถงึ เปน public เสมอ คลาสแตล ะคลาสสามารถมไี ดมากกวา 1 คอนสตรัคเตอร วธิ นี ี้เรียกวา overloading constructor ซง่ึ เปน หลักการเดียวกันกบั overloading method ตัวอยางการสรา งออบเจ็ค เชน _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภ ูรวิ ัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

158 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) Person p1 = new Person(); Person p2 = new Person(\"Puriwat\", 33, “Thai”); ในตัวอยางคำส่ังเปนการสรางออบเจ็ค 2 แบบ คอื แบบแรกเรยี กใช default constructor จะไมมีการสงอากวิ เมนตตามรปู แบบการรบั พารามเิ ตอรข องคอนสตรคั เตอรต วั แรก แบบทส่ี องเปน การสรางออบเจบ็ โดยกำหนดคา เรมิ่ ตน ใหก บั ออบเจค็ ทันที โดยการสง อากิวเมนตไ ปยงั คอนสตรัคเตอร ท่สี องตามรปู แบบของพารามิเตอรน นั้ 11.6 คำสง่ั this และ static  คำส่งั this this เปนคำสงั่ สำหรบั การอา งถงึ คุณสมบตั ิ (attribute) ของออบเจ็คปจจบุ นั สำหรบั ตัวอยางคอนสตรัคเตอรจากรูปที่ 11.6 ไดใช this.name นั้นหมายถึง name ของออบเจ็ค ในขณะท่ี name นั้นจะเปนพารามเิ ตอรของเมธอด หากในขอบเขตของโปรแกรมน้ันไมมีช่ือ ของตัวแปรที่ซ้ำกันก็ไมจำเปนตองใชคำสั่ง this ก็ได เชนในเมธอด getNationality () นอกจากนีค้ ำส่ังนยี้ งั ถกู ใชในเรอ่ื งของ Inheritance  คำสงั่ static static เปนคำสั่งที่ใชสำหรับกำหนดใหตัวแปรหรือเมธอด สามารถเขาถึงไดแบบ สาธารณะถาหากประกาศเปน public และถา นำไปใชก บั ออบเจค็ จะทำใหท กุ ออบเจค็ นัน้ อาง ถงึ ตัวแปรเดยี วกัน ตัวอยางการใชคำสง่ั static ดงั รปู ที่ 11.7 _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภ รู ิวฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 159 รูปที่ 11.7 การใชค ำสั่ง static จากตวั อยางไดทำการเปลย่ี นตวั แปร age ในคลาส Person เปน static ดงั น้ันออบเจ็คทุกตัว ที่ถูกสรางขึ้นมาจากคลาสนี้จะใชตัวแปรนี้รวมกัน หรือหมายถึงหากมีออบเจ็คใดทำการกำหนดคา ใหกบั ตวั แปร age จะทำใหอ อบเจ็คอื่นมคี าตัวแปร age เปลีย่ นไปเปนคาเดยี วกัน นอกจากนี้ยังมีการสรางคลาสชื่อ StaticMember โดยมีคุณสมบัติ (attribute) เปน static และระดับการเขาถึงเปน public ทั้งหมด ดังนั้นออบเจ็คของคลาสนี้จะสามารถเขาถึงไดจ ากที่ใด ๆ โดย prefix ของคลาส เชน staticMember.NAME_PREFIX และ staticMember.displayName() และไดผ ลลพั ธก ารรนั โปรแกรมดงั รูปที่ 11.8 _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภรู ิวฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

160 เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) รปู ท่ี 11.8 ผลลัพธตัวอยา งการใชค ำส่งั static ผลจากการรันโปรแกรม จะแสดงใหเห็นวาออบเจ็ค p1 และ p2 นั้นจะมีคาตัวแปร age เทา กนั คอื 70 เพราะตัวแปร age ถูกกำหนดคา ลา สุดท่ีคำส่งั p2.age = 70 _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภูรวิ ัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) 161 แบบฝกหดั บทที่ 11 1. จงสราง class ชือ่ SuperCar เพื่อเปนตัวแทนของ hero โดยที่ super car จะตองประกอบไปดวย ขอ มูลที่เปน Instance variable ของ super car คอื car brand, car color, car engine size, max speed และ country of origin และ SuperCar Class จะตองมี constructor เพื่อใชสำหรับการ กำหนดคา เรมิ่ ตน ใหก ับ 5 ตวั แปรดังกลา ว และมี getter() และ setter() เมธอดสำหรับแตละตัวแปร อกี อยางหนง่ึ SuperCar Class จะมี method ชื่อ getSuperCarInfo() เพ่อื แสดงขอ มลู ของรถแตละ คนั 2. จากขอที่ 1 จงสรางคลาสชื่อ mySuperCar เปนสวนติดตอกับผูใชเพื่อทำการรับขอมูลรถ 5 คัน จากผูใช โดยนำขอมูลของ Object มาเก็บไวใน ArrayList และแสดงผลขอมูลของรถท้ัง 5 คัน ทาง จอภาพ _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภูริวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

162 เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) วธิ กี ารสอนและกจิ กรรม 1. สอนแบบบรรยายโดยใชสือ่ ประกอบการสอน 2. ใหน กั ศึกษามสี ว นรว มในกจิ กรรมระหวางการเรียนการสอนโดยใชว ธิ กี ารถาม-ตอบ 3. ปฏิบตั ิการเขียนโปรแกรมการสรา งคลาสและออบเจค็ เอกสารประกอบ เอกสารประกอบการสอน บทที่ 11 การเขยี นโปรแกรมเชงิ วตั ถุ สอื่ การสอน ส่ือประกอบการสอน ไฟลนำเสนอ power point บทที่ 11 การเขียนโปรแกรม เชิงวัตถุ โสตทศั นวสั ดุ เคร่อื งฉายโปรเจคเตอร งานทม่ี อบหมาย 1. ศกึ ษารูปแบบการเขียนโปรแกรมเชิงวตั ถุ การสรา งคลาส และการสรางออบเจ็ค 2. แบบฝก หดั การเขยี นโปรแกรมเชงิ วตั ถุ การวดั ผล 1. สังเกตพฤตกิ รรมการเรยี นในหอ งเรียน 2. สงั เกตพฤตกิ รรมการมสี วนรว มในกจิ กรรมระหวา งการเรียนการสอนในการถาม-ตอบ 3. ตรวจงานทม่ี อบหมาย 4. ทดสอบตามจุดประสงคก ารสอน บันทึกการสอนและขอสงั เกต …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………….. _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภูริวฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 163 สปั ดาหท ่ี 13 ใบเตรยี มการสอน เวลา 4 ช่วั โมง บทท่ี 12 การจดั การขอผดิ พลาด 12.1 เอ็กเซป็ ชั่น 12.2 คำสง่ั try-catch 12.3 คำสงั่ finally 12.4 คำสงั่ throws จดุ ประสงคก ารสอน 12.1 เขา ใจความแตกตา งระหวาง Error และ Exception 12.2 สามารถจดั การขอ ผิดพลาดโดยใชคำส่ัง try-catch และ finally ได 12.3 สามารถจัดการขอ ผิดพลาดโดยใชค ำสั่ง throw ได _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภูริวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

164 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) บทที่ 12 การจัดการขอผดิ พลาด การเขียนโปรแกรมนั้น ความผิดพลาดคือเรื่องปกติที่จะเกิดขึ้นไดทุกเมื่อ ในภาษา Java มี วธิ ีการจดั การขอ ผดิ พลาดทีอ่ าจจะเกดิ ขนึ้ ในระหวางท่โี ปรแกรมทำงานซึง่ เรยี กวา exception 12.1 เอ็กเซป็ ชั่น เอก็ เซ็ปช่นั (Exception) ในภาษา Java คอื การทโ่ี ปรแกรมพยายามจะทำงานบางอยาง แต เกิดขอ ผิดพลาดขึน้ แลวโปรแกรมไมสามารถจดั การขอผิดพลาดนัน้ ได และทำใหโปรแกรมหยุดทำงาน ยกตัวอยางเชน การหารดวยศูนย, การเปดขอมูลที่ไมม อี ยู หรือการใชชนิดขอมูลไมตรงกับที่กำหนด เปนตน exception สามารถแบงออกเปน 2 ประเภทใหญ ๆ คือ Runtime exception และ IO exception  Runtime Exception Runtime exception เปน ขอ ผดิ พลาดท่ีเกดิ ขน้ึ ในขัน้ ตอนการเขียนโปรแกรม เชน o ArraylndexOutOfBounsException เปนความผิดพลาดที่เกิดจากการอางอิงถึง สมาชิกในอาเรยไมถูกตอง เชน มีการกำหนดขนาดของอาเรยไว 5 ตำแหนง แตมี การอางถงึ สมาชิกในตำแหนง ที่ 6 เปนตน o ArithmeticException เปนขอผิดพลาดที่เกิดจาการดำเนินการทางคณิตศาสตร เชน การหารดว ยศูนย เปน ตน o NullpointerException เปนความผิดพลาดที่เกิดจากการอางอิงถึงคาที่เปน Null เชน การเรียกใช Object ท่ยี งั ไมไ ดถ กู สรางขึน้ เปน ตน _________________________________________________________________________ เรียบเรียงโดย: อาจารยภูริวฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 165  IO Exception เปนขอ ผดิ พลาดท่ีภาษา Java กำหนดใหตอ งมีการจดั การหากมกี ารเรยี กใชเมธอดท่ีอาจเกิด ขอ ผดิ พลาดประเภทนี้ เชน o EOFException เปน ความผดิ พลาดทเี่ กดิ จากการระบจุ ดุ สน้ิ สุดของไฟลไมถกู ตอง o FileNotFoundException เปนความผิดพลาดทเ่ี กิดจากการไมพบ File ที่กำหนด การจัดการความผิดพลาดที่เกิดขึ้นโดยการใช Exception นั้นสามารถทำไดโดยการใชงาน ชดุ คำสง่ั 2 คำสัง่ คือ คำสง่ั try-catch หรอื catch block และคำส่ัง throws 12.2 คำสงั่ try-catch การทำงานที่คลายกับคำส่ัง if โดยที่หากตรวจพบความผิดพลาดในคำสั่งที่อยูหลังคำสั่ง try โปรแกรมจะทำการตรวจสอบที่คำสั่ง catch วาเปนความผิดพลาดประเภทใด และจะทำงานตาม ชุดคำสั่งที่อยูหลงั คำสั่ง catch ทต่ี รงกบั ขอ ผิดพลาด รูปแบบการใชง านคำสง่ั try-catch มีดังน้ี try { // try to do something } catch (Exception1 ex1) { // handle for exception 1 } ... } catch (ExceptionN exN) { // handle for exception N } finally { // Always proceed this block whether // an exception is thrown or not } _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูรวิ ัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

166 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) ในบลอ็ กคำส่งั try เปน สวนของโปรแกรมท่อี าจจะเกดิ exception ขนึ้ ในบล็อกคำสั่ง catch เปน การจัดการกับ exception แตละแบบ และบลอ็ กคำสัง่ finally โปรแกรมจะเขามาทำงานเสมือน ไมวาจะเกดิ exception ในบล็อกคำสง่ั try หรอื ไม สำหรบั ภาษา Java นนั้ มีไลบรารท่ี ่ีใชใ นการจดั การ กับ exception ที่ทำใหผูเขียนโปรแกรมสามารถจัดการกับขอผิดพลาดประเภทตาง ๆ ได สำหรับ ตัวอยางการจัดการขอผิดพลาดในบทนี้จะยกตัวอยางเพยี งบางสวนเทานั้น ตัวอยางเชน การจัดการ ขอผิดพลาดท่ีเกิดจากการรบั คา ขอมูลจากผใู ช ดงั รูปที่ 12.1 รปู ที่ 12.1 ตวั อยางการจดั การขอผิดพลาด จากตัวอยางโปรแกรมเปนการรับขอมูลจากผูใช โดยใหผูใชกรอกขอมูลเปนจำนวนเต็ม จากนั้นโปรแกรมจะอานคาขอมลู นน้ั เก็บไวในตวั แปร x ดวยคำส่งั x = reader.nextInt(); คำส่ังนี้ใช สำหรับอา นคาตัวเลขเทานั้น ซึ่งเปนไปไดวาผูใ ชอาจจะใสขอมลู อยางอื่นมาที่ไมใชตัวเลขซึ่งจะทำให เกิด InputMismacthException ตามผลลพั ธก ารรันในรูปที่ 13.2 รปู ที่ 12.2 ผลการรันท่ีเกิดขอผิดพลาด _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ รู ิวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) 167 จากรูปจะเหน็ ไดวา เม่ือผูใชก รอกขอ มูลเปน ขอความวา “Java” จะทำใหเ กิด exception ข้ึน พรอ มทั้งระบุชอ่ื ไฟลแ ละเลขบรรทดั ของโปรแกรมที่เกดิ ขอ ผิดพลาดขน้ึ เพื่อจัดการ exception ที่อาจเกิดขึ้น ผูเขียนโปรแกรมสามารถใชคำสั่ง try-catch ในการ ตรวจจบั exception โดยการปรับปรุงโปรแกรมใหสามารถจดั การกับ exception ดังรูปที่ 12.3 รูปที่ 12.3 ตวั อยา งการใชคำสั่ง try-catch จากในตัวอยางโปรแกรมขางตนใชคำสั่ง try-catch เพื่อตรวจสอบ excepton InputMismatchExcepton ถาเกิด exception นี้ขึ้น ในบล็อกคำสั่ง try จะทำการโยน (throw) exception มายังคำสั่ง catch แลวทำการแสดงรายละเอียดของออบเจ็ค e ดวยคำสั่ง System.out.println(“Exception occurred: “+ e); จะไดผ ลลัพธ ดังรปู ท่ี 12.4 รูปที่ 12.4 ผลการตรวจสอบ exception _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูริวฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

168 เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) จะเหน็ ไดวา เม่ือผูใชก รอกขอ มลู ทไ่ี มใ ชตัวเลข โปรแกรมก็สามารถจัดการกับ exception น้ัน ไดโดยบอกผูใชวาเกิด exception ขึ้น ในกรณีนี้โปรแกรมจะไมหยุดทำงาน และยังสามารถทำงาน อยา งอืน่ ตอไปได ในตัวอยา งตอไปจะเปน การตรวจจบั exception ท่ีมีความซับซอ นขน้ึ ดังรปู ที่ 12.5 รูปที่ 12.5 ตวั อยา งการใชคำส่ัง try-catch ทีซ่ อ นกัน จากในตัวอยางจะเห็นไดวาอาจจะมีขอผิดพลาดที่เกิดขึ้นได 2 สิ่ง คือ การใสตัวเลขที่ไม ถูกตอง และ index ของอาเรยไมถูกตอง โดยทำการ catch exception เหลานั้น เพื่อใหโปรแกรม สามารถทำงานตอไดหากเกิดขอ ผดิ พลาดขึ้น แสดงใหเห็นวาคำสั่ง try-catch นั้นสามารถซอนกันได เชนเดียวกับคำส่งั if หรือ คำสั่ง for เปนตน ผลลพั ธการรันโปรแกรมจะไดแสดงผล ดังรปู ท่ี 12.6 รปู ที่ 12.6 ผลลัพธการรันตัวอยางการใชคำสง่ั try-catch ทซ่ี อนกัน _________________________________________________________________________ เรียบเรียงโดย: อาจารยภูรวิ ัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพิวเตอร (11-413-202) 169 จากผลลพั ธการรนั โปรแกรมในตัวอยางนีผ้ ใู ชกรอกเลข 8 เขามาในโปรแกรม ซง่ึ จะทำใหเกิด ArrayIndexOutOfBoundsException ขึ้น เน่ืองจากอาเรยท ่ปี ระกาศไวม ี index ตั้งแต 0-4 เม่อื ผูใช กรอกขอมูลท่ไี มอ ยูในชว ง index ของอาเรยจงึ ทำใหเ กดิ exception ดังกลา วข้ึน 12.3 คำสง่ั finally สำหรบั คำสัง่ finally นั้นจะทำงานทุกครั้งไมวาจะเกิด exception ขึ้นหรือไม โดยสวนใหญ จะใชใ นงานสำคัญ เชน การปด ไฟล หรอื การปดการเช่อื มตอ ฐานขอมลู เมอ่ื โปรแกรมทำงานเสร็จส้ิน แลว ในตวั อยา งนี้จะเปนการใชค ำส่งั finally สำหรับการปดไฟล ดงั รปู ที่ 12.7 รูปท่ี 12.7 ตวั อยา งคำสั่ง finally _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภ ูริวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

170 เอกสารประกอบการสอน วชิ าการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) ในตัวอยางเปนการเปด ไฟล Text.txt ในโฟลเดอรโปรเจค (project directory root) โดยมี การตรวจจับ exception 2 อยา งคอื FileNotFounException สำหรบั ในกรณีท่ีโปรแกรมไมพบไฟล ที่ตองการเปด และ IOException สำหรับกรณีที่พบไฟลแลวแตไมสามารถอานไฟลได ไมวาจะเกิด exception ใดข้ึนกต็ ามเมอ่ื ทำการเปดไฟลห รอื อา นไฟลแลว โปรแกรมจะตองทำการปดไฟลน ั้น ดงั นั้น ในคำสงั่ finally จึงมคี ำส่ังเพือ่ ใชใ นการปดไฟลด งั กลาว นอกจากนี้ในตัวอยางยังมีการใชคำสั่ง e.printStrackTrace(); เปนเมธอดที่ใชสำหรับ IDE เพือ่ บอกรายละเอียดเกี่ยวกบั ขอ ผดิ พลาด เชน บรรทดั ท่ีเกิดขอผิดพลาด และคลาสทีร่ นั ใชสำหรับการ debug โปรแกรม 12.4 คำสงั่ throws โดยปกติการเขยี นโปรแกรมจะมกี ารสรางเมธอดไวสำหรบั ทำงานเฉพาะบางอยางเปน จำนวน มากและมีการเรยี กใชกันไปมาระหวา งเมธอดดว ยกัน เชน เมธอด main(); เรียกใช เมธอด A(); และ เมธอด A(); เรียกใชเมธอด B(); ในกรณที ีบ่ างเมธอดอาจมีขอ ผดิ พลาดเกดิ ขึน้ จากเมธอดใดเมธอดหน่ึง ในโปรแกรมแลวไมม กี ารตรวจจับขอผดิ พลาด เมื่อขอ ผิดพลาดกลับไปยังเมธอด main(); โปรแกรมก็ จะไมสามารถทำงานตอได วิธีการที่งายที่สุดสำหรับการแกปญหานี้คือ การโยนความผิดปกติไปให เมธอดอ่นื จดั การกับขอ ผิดพลาดนั้นเอง ดวยการใชคำสง่ั throws ทส่ี ว นของการสรา งเมธอด ดังรูปท่ี 12.8 รปู ที่ 12.8 ตวั อยา งโปรแกรมการหาร _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภรู วิ ัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

เอกสารประกอบการสอน วิชาการเขียนโปรแกรมคอมพวิ เตอร (11-413-202) 171 จากตวั อยางเปนโปรแกรมการหารโดยมีเมธอด divide(); ทที่ ำหนา ทีก่ ารหารเลขจำนวนเต็ม สองจำนวนถกู เรยี กใชจากเมธอด main(); จะสังเกตเหน็ วาอากวิ เมนตทสี่ ง มาคือ 10 และ 0 ตามลำดับ และเมื่อมีการหารเกิดขึ้นจะทำใหเกิดขอผิดพลาดที่เมธอด divide(); เปน ArithmeticException เนื่องจากมีการหารดวย 0 และ exception นี้ไมถูกตรวจสอบเมื่อโปรแกรมกลับไปทำงานที่เมธอด main(); จึงไมสามารถทำงานตอ ไปไดและไดผลลัทธ ดงั รปู ท่ี 12.9 รปู ท่ี 12.9 ผลลพั ธท เ่ี กิดจากการหารดว ยศูนย ในหัวขอนี้จะใชคำสั่ง throws เพื่อทำการโยน exception นี้ไปใหเมธอด main(); เปนคน จดั การกบั ขอ ผดิ พลาด โดยสามารถปรบั ปรงุ โปรแกรมไดตามตัวอยา งในรปู ท่ี 12.10 รูปที่ 12.10 ตัวอยางการใชค ำส่ัง throws _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภรู วิ ฒั น เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจัดการ

172 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) ในเมธอดหน่ึงๆ อาจจะไมมี หรือมี exception ที่อาจจะเกิดขึ้นไดหลายรูปแบบ ดังนั้นการ ระบุคำสั่ง throws อาจจะระบุคลาสของ exception ไดมากกวาหนึ่ง โดยมีเครื่องหมาย (,) แบง ระหวางชอ่ื คลาส เชน ตวั อยา งในรปู ท่ี 12.11 รูปท่ี 12.11 ตัวอยา งการใชค ำสั่ง throws แบบหลายคลาส ในเมธอด divide(); มีการใชคำสงั่ throws ทั้งหมด 3 คลาสดวยกัน ถงึ แมว า เมธอดน้ีอาจจะ เกดิ exception ไดห ลายคลาส แตก ารทำงานจริงจะมเี พียง exception คลาสเดยี วเทา นัน้ ที่สามารถ ถูกโยนออกมาได ขึ้นอยูกับวา เกิด exception คลาสอันไหนกอ น ดังนั้นลำดับของคลาส exception ทีร่ ะบใุ นคำสัง่ throws จะไมม ผี ลตอการทำงาน _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภ รู ิวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) 173 เนื่องจากคลาส exception ประเภทตาง ๆ ในภาษา Java นั้นสืบทอดมาจากคลาส Exception ดังนั้นผูเขยี นโปรแกรมสามารถใชคำสัง่ catch ในการดักจับ exception ทั้งหมดได โดย ใชคำสงั่ ดงั นี้ catch (Exception e) { System.out.println(\"Exception type: \" + e); } ยังมี exception ประเภทอื่น ๆ อีกที่อาจจะเกิดขึ้น รายการ exception ทั้งหมดในภาษา Java สามารถศึกษาเพ่มิ เติมไดจากลิง้ ตอ ไปนี้  https://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html _________________________________________________________________________ เรียบเรียงโดย: อาจารยภ รู วิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

174 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพวิ เตอร (11-413-202) แบบฝกหัดบทที่ 12 1. จากตวั อยา งโปรแกรมจงตอบคำถามตอ ไปนี้ 1.1 Exception ทเ่ี กิดขึน้ คอื คลาสใด และเพราะอะไรถงึ เกิด exception น้ีข้ึน 2.2 ทำการแกไ ขโปรแกรมดงั กลา วดว ยวธิ กี ารจดั การ exception 2. จงเขียนโปรแกรมรับขอมูล String จากผูใช เชน “123” หรือ “MIT” จากนั้นแปลงString เปน ตัวเลข สักเกตขอผิดพลาดที่เกิดขึ้น และแกไขตรวจจับขอผิดพลาดของโปรแกรมโดยใชคำสั่ง try- catch หรือ throws _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ รู ิวฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) 175 วิธกี ารสอนและกิจกรรม 1. สอนแบบบรรยายโดยใชส อ่ื ประกอบการสอน 2. ใหน ักศึกษามีสวนรว มในกจิ กรรมระหวางการเรียนการสอนโดยใชว ธิ กี ารถาม-ตอบ 3. ปฏิบัตกิ ารเขียนโปรแกรมการจัดการขอ ผดิ พลาด การตรวจจบั และการโยนขอผดิ พลาด เอกสารประกอบ เอกสารประกอบการสอน บทที่ 12 การจดั การขอ ผดิ พลาด สอ่ื การสอน สอื่ ประกอบการสอน ไฟลนำเสนอ power point บทท่ี 12 การจดั การ ขอผดิ พลาด โสตทัศนวัสดุ เคร่ืองฉายโปรเจคเตอร งานท่ีมอบหมาย 1. ศึกษาการจดั การขอผดิ พลาดโดยใชค ำสงั่ try-catch finally และคำสั่ง throws 2. แบบฝก หัดการเขยี นโปรแกรมเกีย่ วกบั การจดั การขอ ผดิ พลาดรูปแบบตา ง ๆ การวัดผล 1. สังเกตพฤติกรรมการเรยี นในหอ งเรียน 2. สงั เกตพฤตกิ รรมการมสี ว นรวมในกจิ กรรมระหวางการเรยี นการสอนในการถาม-ตอบ 3. ตรวจงานทม่ี อบหมาย 4. ทดสอบตามจดุ ประสงคก ารสอน บันทกึ การสอนและขอสงั เกต …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภรู ิวัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

176 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) _________________________________________________________________________ เรยี บเรยี งโดย: อาจารยภรู วิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 177 สัปดาหท่ี 14 ใบเตรียมการสอน เวลา 4 ชว่ั โมง บทที่ 13 การทำงานเกี่ยวกบั ไฟล 13.1 คลาส File 13.2 การสรา ง text file 13.3 การอานขอ มูลจาก text file 13.4 การเขียนขอมูลลง text file จดุ ประสงคการสอน 13.1 สามารถสรา งไฟล อานไฟล และเขียนไฟล 13.2 สามารถใชเ มธอดในคลาส File ไดอ ยา งถูกตอ ง _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภูริวัฒน เลศิ ไกร สาขาระบบสารสนเทศ คณะเทคโนโลยกี ารจดั การ

178 เอกสารประกอบการสอน วชิ าการเขียนโปรแกรมคอมพิวเตอร (11-413-202) บทที่ 13 การจัดการไฟล แฟมขอ มูลในเครื่องคอมพวิ เตอรสามารถนำมาใชงานผา นการจดั การดว ยวธิ กี ารทห่ี ลากหลาย ซึ่งภาษา Java มีคลาส File ใหผูเขียนโปรแกรมสามารถดำเนินการกับแฟมขอมูลเหลานั้นไดตาม ตอ งการ เชน ตรวจการมีอยขู องแฟม ตรวจวาเปนแฟม หรอื โฟลเดอร ขอขอมูลขนาดแฟม เปนตน ใน บทนีจ้ ะเปน การใชภาษา Java เพอ่ื จัดการกับ text file ซ่งึ เปนไฟลพนื้ ฐาน ดังน้ี 13.1 คลาส File คลาส File เปนคลาสที่อยูในไลบรารี่ของ Java ซึ่งจะมีเมธอดที่จะชวยใหผูเขียนโปรแกรม สามารถทำงานกบั ไฟลไ ด ตามตารางท่ี 13.1 ตารางที่ 13.1 เมธอดในคลาส File เมธอด คำอธิบาย canRead() ตรวจสอบวา ไฟลอ านไดห รือไม canWrite() ตรวจสอบวา ไฟลเ ขียนไดห รือไม exist() ตรวจสอบวา ไฟลท่อี างถึงมีอยูหรือไม getName() อานช่อื ของไฟล getPath() อานทีอ่ ยขู องไฟล isFile() ตรวจสอบวา ไฟลท อี่ างถึงเปนไฟลจ รงิ หรือไม length() ตรวจสอบขนาดของไฟล delete() สำหรบั ลบไฟล renameTo() สำหรบั เปลยี่ นชื่อไฟล นอกจากตวั อยา งเมธอดเหลานแ้ี ลว คลาส File ยังมีเมธอดอกี มากมายสามารถศึกษาเพม่ิ เติม ไดจ ากลง้ิ ตอ ไปนี้  https://docs.oracle.com/javase/8/docs/api/ _________________________________________________________________________ เรียบเรียงโดย: อาจารยภรู วิ ัฒน เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพิวเตอร (11-413-202) 179 13.2 การสราง text file การสราง text file ในภาษา Java จะเปนวิธีการสรางออบเจ็คของคลาส File โดยการใช คำส่งั new โดยมรี ปู แบบดงั น้ี File filename = new File (path); โดยท่ี filename คือ ชือ่ ของออบเจค็ คลาส File path คือ ท่อี ยแู ละชอ่ื ไฟล รูปที่ 13.1 ตวั อยางโปรแกรมสรา ง text file จากรปู ที่ 13.1 ตัวอยางโปรแกรมการสรา ง text file ชอ่ื text.txt โดยการใชค ลาส File และ ประกาศออบเจค็ ช่ือ file สำหรับคำสั่ง if เปน คำสัง่ สรางไฟล file.createNewFile() หาก expression ของคำสั่ง if เปน true จะทำการสรางไฟลใหมตามชื่อขางตนและแสดงขอความ “New File is created.” ทางหนาจอภาพ แตห าก expression ของ if เปน false แสดงวาไมสามารถสรา งไฟลใหม ได ซึ่งอาจเกิดจากไฟลนัน้ มีอยูแลว เปนตน นอกจากนี้ในการใชคำสั่งในการสรางไฟลจะตองมีการ ตรวจจับขอผิดพลาดสำหรับในกรณีที่ไมสามารถสรางไฟลได ก็ใหโปรแกรมแจง exception ที่อยูใ น _________________________________________________________________________ เรียบเรยี งโดย: อาจารยภ รู วิ ฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจดั การ

180 เอกสารประกอบการสอน วิชาการเขยี นโปรแกรมคอมพวิ เตอร (11-413-202) คลาส IOException ใหผ ูเขียนโปรแกรม ซ่งึ จะทำใหโปรแกรมสามารถทำงานในคำส่ังอน่ื ตอไปได ผล ลทั ธการรันตัวอยา งน้จี ะไดผล ดงั รปู ที่ 13.2 รปู ท่ี 13.2 ผลลการรนั โปรแกรมตวั อยางการสราง text file จากผลลัพธแสดงวาโปรแกรมสามารถสรา งไฟลชือ่ Text.txt ไดส ำเรจ็ ในตวั อยางโปรแกรม ไมไดระบุตำแหนง ที่อยู (path) ของไฟล Text.txt ไว ดังน้ันไฟลด ังกลา วจะถูกเก็บไวในโปรเจค โฟลเดอร ดงั รูปท่ี 13.3 รูปท่ี 13.3 ท่อี ยูไ ฟล Test.txt IntelliJ IDEA ทใ่ี ชส ำหรับเขยี นโปรแกรมภาษา Java แลว ยังสามารถเขียนขอ มลู ใน text file ไดอกี ดว ย ในรูปท่ี 13.4 ทดลองเพม่ิ ขอความเขาไปใน Test.txt ตวั อยาง ดังรปู ท่ี 13.4 รปู ท่ี 13.4 เพ่มิ ขอความใน Test.txt _________________________________________________________________________ เรยี บเรียงโดย: อาจารยภ ูริวฒั น เลิศไกร สาขาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook