24
8 Introduction to Java Programming 8.1 ภาษาจาวา ภาษาจาวาพัฒนาขึ้นโดยบริษัทซันไมโครซิสเต็มท ชื่อของจาวามาจากชื่อของกาแฟที่ทีมวิศวกรของ ซันดื่มตอนที่รวมพัฒนาจาวาตนแบบดวยกัน จาวาเปนเทคโนโลยีเปดที่มีซันเปนผูกํากับทิศทางและคอยระวังไม ใหใครเอาจาวาไปดัดแปลงประยุกตใชในทางที่เบี่ยงเบนออกจากจุดประสงคเดิมของมัน และเพื่อใหเกิดความชัด เจนในการพัฒนา ภาษาจาวามีคําสั่งพื้นฐานคลายภาษาซีพลัสพลัสเปนอยางมาก นักเขียนโปรแกรมที่ใชภาษาซีพลัส พลัสสามารถเรียนรูภาษาจาวาไดในเวลาอันรวดเร็ว เหตุผลที่ทีมวิศวกรของซันไมเลือกใชภาษาซีพลัสพลัสใน การพัฒนาภาษาสําหรับโปรแกรมขนาดจิ๋วบนเครื่องใชอิเล็กทรอนิกสเปนเพราะเครื่องใชอิเล็กทรอนิกสมีเนื้อทีสําหรับเก็บโปรแกรมจํากัด พวกเขาจึงสรางภาษาคอมพิวเตอรภาษาใหมขึ้นมาใหชื่อวา โอค ซึ่งตั้งชื่อตามตน ไมใหญที่อยูในสวนของบานที่ทีมวิศวกรใชเปนสถานที่สําหรับทํางาน ภาษาใหมนี้มีความกระชับมากกวาเดิม แตมีคําสั่งพื้นฐานเหมือนภาษาซีพลัสพลัส เนื่องจากตองการใหนักเขียนโปรแกรมภาษาซีพลัสพลัสซึ่งมีอยูมาก ที่สุดในขณะนั้นสรางความคุนเคยไดอยางรวดเร็วตอมาพวกเขาไดเปลี่ยนชื่อภาษาใหมนี้เปน จาวา ตามชื่อชนิด กาแฟที่พวกเขาดื่ม ภาษาจาวาจัดเปนภาษาคอมพิวเตอรเชิงวัตถุเชนเดียวกับภาษาซีพลัสพลัส แตสิ่งที่ภาษาจาวาตางกับ ภาษาซีพลัสพลัสเปนอยางมากคือ โปรแกรมภาษาจาวาตองเขียนเปนแบบเชิงวัตถุเทานั้น ในขณะที่ภาษาซี พลัสพลัสสามารถเขียนแบบเชิงวัตถุ หรือเขียนแบบโครงสรางก็ไดที่เปนเชนนี้เนื่องจากภาษาซีพลัสพลัสมีตน กําเนิดมาจากภาษาซีซึ่งเปนภาษาแบบโครงสราง ดังนั้นภาษาซีพลัสพลัสจึงตองสนับสนุนการเขียนโปรแกรม แบบโครงสรางดวยเพื่อใหเขากันไดกับภาษาซี อยางไรก็ตามภาษาแบบโครงสรางเปนเทคโนโลยีที่ลาสมัย โปรแกรมประยุกตในทองตลาดปจจุบันนี้ลวนแตเขียนดวยภาษาเชิงวัตถุทั้งสิ้น จาวาจึงไมสนับสนุนภาษาโครง สราง 8.2 จาวาแฟลตฟอรม นิยามที่เหมาะสมอันหนึ่งของจาวาคือ จาวาเปนแฟลตฟอรม คําวา แฟลตฟอรม โดยทั่วไปมีความ หมายใกลเคียงกับคําวา ระบบปฏิบัติการ ตัวอยางเชน ระบบปฏิบัติวินโดว บางทีเราก็เรียกวา แฟลตฟอรม วินโดว ความหมายตรงตัวของคําวา แฟลตฟอรม ในพจนานุกรมหมายถึง สถานี เชน ชานชาลาสถานีรถไฟ สาเหตุที่เราเรียกระบบปฏิบัติการวาเปนแฟลตฟอรมเปนเพราะเวลาเราเขียนโปรแกรมประยุกตอะไรก็ตามขึ้นมา กอนที่เราจะใชงานมันไดเราจะตองรันมันบนระบบปฏิบัติการ ตัวอยางเชน ไมโครซอฟตเวิรดจะใชงานไดตองรัน บนระบบปฏิบัติการวินโดว ระบบปฏิบัติการวินโดวจึงเปนเสมือนสถานีปฏิบัติการสําหรับโปรแกรมไมโครซอฟต เวิรด

Introduction to Java Programming

Embed Size (px)

DESCRIPTION

แนะนำโปรแกรมจาวา

Citation preview

Page 1: Introduction to Java Programming

8 Introduction to Java Programming

8.1 ภาษาจาวา

ภาษาจาวาพัฒนาขึ้นโดยบริษัทซันไมโครซิสเต็มท ชื่อของจาวามาจากชื่อของกาแฟที่ทีมวิศวกรของซันดื่มตอนที่รวมพัฒนาจาวาตนแบบดวยกัน จาวาเปนเทคโนโลยีเปดที่มีซันเปนผูกํากับทิศทางและคอยระวังไมใหใครเอาจาวาไปดัดแปลงประยุกตใชในทางที่เบี่ยงเบนออกจากจุดประสงคเดิมของมัน และเพื่อใหเกิดความชัดเจนในการพัฒนา

ภาษาจาวามีคําส่ังพื้นฐานคลายภาษาซีพลัสพลัสเปนอยางมาก นักเขียนโปรแกรมที่ใชภาษาซีพลัส พลัสสามารถเรียนรูภาษาจาวาไดในเวลาอันรวดเร็ว เหตุผลที่ทีมวิศวกรของซันไมเลือกใชภาษาซีพลัสพลัสในการพัฒนาภาษาสําหรับโปรแกรมขนาดจิ๋วบนเครื่องใชอิเล็กทรอนิกสเปนเพราะเครื่องใชอิเล็กทรอนิกสมีเนื้อที่สําหรับเก็บโปรแกรมจํากัด พวกเขาจึงสรางภาษาคอมพิวเตอรภาษาใหมขึ้นมาใหชื่อวา โอค ซึ่งตั้งชื่อตามตนไมใหญที่อยูในสวนของบานที่ทีมวิศวกรใชเปนสถานที่สําหรับทํางาน ภาษาใหมนี้มีความกระชับมากกวาเดิม แตมีคําส่ังพื้นฐานเหมือนภาษาซีพลัสพลัส เนื่องจากตองการใหนักเขียนโปรแกรมภาษาซีพลัสพลัสซึ่งมีอยูมากที่สุดในขณะนั้นสรางความคุนเคยไดอยางรวดเร็วตอมาพวกเขาไดเปล่ียนชื่อภาษาใหมนี้เปน จาวา ตามชื่อชนิดกาแฟที่พวกเขาดื่ม ภาษาจาวาจัดเปนภาษาคอมพิวเตอรเชิงวัตถุเชนเดียวกับภาษาซีพลัสพลัส แตส่ิงที่ภาษาจาวาตางกับภาษาซีพลัสพลัสเปนอยางมากคือ โปรแกรมภาษาจาวาตองเขียนเปนแบบเชิงวัตถุเทานั้น ในขณะที่ภาษาซี พลัสพลัสสามารถเขียนแบบเชิงวัตถุ หรือเขียนแบบโครงสรางก็ไดที่เปนเชนนี้เนื่องจากภาษาซีพลัสพลัสมีตนกําเนิดมาจากภาษาซีซึ่งเปนภาษาแบบโครงสราง ดังนั้นภาษาซีพลัสพลัสจึงตองสนับสนุนการเขียนโปรแกรมแบบโครงสรางดวยเพื่อใหเขากันไดกับภาษาซี อยางไรก็ตามภาษาแบบโครงสรางเปนเทคโนโลยีที่ลาสมัยโปรแกรมประยุกตในทองตลาดปจจุบันนี้ลวนแตเขียนดวยภาษาเชิงวัตถุทั้งส้ิน จาวาจึงไมสนับสนุนภาษาโครงสราง 8.2 จาวาแฟลตฟอรม นิยามที่เหมาะสมอันหนึ่งของจาวาคือ จาวาเปนแฟลตฟอรม คําวา แฟลตฟอรม โดยทั่วไปมีความหมายใกลเคียงกับคําวา ระบบปฏิบัติการ ตัวอยางเชน ระบบปฏบิัติวินโดว บางทีเราก็เรียกวา แฟลตฟอรมวินโดว ความหมายตรงตัวของคําวา แฟลตฟอรม ในพจนานุกรมหมายถึง สถานี เชน ชานชาลาสถานีรถไฟ สาเหตุที่เราเรียกระบบปฏิบัติการวาเปนแฟลตฟอรมเปนเพราะเวลาเราเขียนโปรแกรมประยุกตอะไรก็ตามขึ้นมา กอนที่เราจะใชงานมันไดเราจะตองรันมันบนระบบปฏิบัติการ ตัวอยางเชน ไมโครซอฟตเวิรดจะใชงานไดตองรันบนระบบปฏิบัติการวินโดว ระบบปฏิบัติการวินโดวจึงเปนเสมือนสถานีปฏิบัติการสําหรับโปรแกรมไมโครซอฟตเวิรด

Page 2: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 2 / 24 โปรแกรมภาษาจาวาไมเหมือนโปรแกรมที่เขียนขึ้นดวยภาษาคอมพิวเตอรภาษาอื่น โปรแกรมภาษา จาวาไมไดรันบนระบบปฏิบัติการ แตรันบนแฟลตฟอรมเสมือนซึ่งเราเรียกวา จาวาแฟลตฟอรม หรือ จาวาเวอรชัวนแมทชีน ดวยเหตุนี้เราจึงกลาววา จาวาเปนแฟลตฟอรม จาวาเวอรชัวนแมทชีนเปนส่ิงที่ซอนโปรแกรมภาษาจาวาจากระบบปฏิบัติการของเครื่องคอมพิวเตอร ดังนั้นโปรแกรมที่เขียนดวยภาษาจาวาไมวาจะนําไปรันบนระบบปฏิบัติการใดมันจะมองไมเห็นความแตกตางของระบบปฏิบัติการที่มันรันอยู เนื่องจากมันไมไดติดตอกับระบบปฏิบัติการของเครื่องคอมพิวเตอรโดยตรง แตมันจะติดตอกับจาวาเวอรชัวนแมทชีนแทน และจาวาเวอรชัวนแมทชีนจะติดตอกับระบบปฏิบัติการอีกที จาวาเวอรชัวนแมทชีนในทุกๆ ระบบปฏิบัติการมีหนาตาเหมือนกันหมด ดังนั้นโปรแกรมที่เขียนขึ้นดวยภาษาจาวาสามารถนําไปรันบนระบบปฏิบัติการใดก็ได หรือกลาวอีกนัยหนึ่งก็คือ จาวาเวอรชัวนแมทชีนก็คือระบบปฏิบัติการสําหรับโปรแกรมภาษาจาวา

จาวาเวอรชัวนแมทชีน

ระบบวินโดว ระบบลีนุกซ ระบบแมคอินทอช

โปรแกรมจาวา โปรแกรมจาวา โปรแกรมจาวา

รูปแสดงจาวาแฟลตฟอรม

ปกติแลวโปรแกรมประยุกตที่เขียนดวยภาษาอื่น ถาพัฒนาขึ้นมาเพื่อระบบปฏิบัติการใดจําเปนที่จะตองรันบนระบบปฏิบัติการนั้น เชน ไมโครซอฟตเวิรดสําหรับระบบปฏิบัติการวินโดวจะตองรันบนระบบปฏิบัติการวินโดวเทานั้น ไมสามารถนําไปใชงานบนระบบปฏิบัติการอื่น เชน ลีนุกซหรือแมคอินทอชได เนื่องจากระบบปฏิบัติการแตละอันมีความแตกตางกันอยู นี่เปนความไดเปรียบของการเขียนโปรแกรมดวยภาษาจาวา เพราะไมวาจะเขียนขึ้นบนระบบปฏิบัติการใด เมื่อเขียนเสร็จแลวจะสามารถนําไปรันไดบนระบบปฏิบัติการอื่นทุกระบบที่มีจาวาเวอรชัวนแมทชีน เราเรียกคุณสมบัตินี้ของโปแกรมภาษาจาวาวา Write Once, Run Anywhere 8.3 นักเขียนโปรแกรมภาษาจาวา จาวาเวอรชัวนแมทชีนไมไดอยูแตในเฉพาะโลกของคอมพิวเตอรตั้งโตะเทานั้น แตยังมีอยูบนทุกๆ ส่ิงทุกอยางตั้งแตสมารทการด โทรศัพทมือถือ ปาลมออแกนไนเซอร พีซี บราวเซอร หรือเครื่องคอมพิวเตอร แมขาย การเรียนรูภาษาจาวาจึงเปนการลงทุนที่คุมคาสําหรับนักเขียนโปรแกรม เพราะรูภาษาเดียวแตสามารถนําไปใชพัฒนาโปรแกรมบนอะไรก็ได

----- Chapter 8: Introduction to Java Programming -----

Page 3: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 3 / 24 ขั้นตอนการเขียนโปรแกรมภาษาจาวานั้นไมตางกับการพัฒนาโปรแกรมภาษาอื่นมากนัก การเขียนโปรแกรมเริ่มตนจากการเขียนคําส่ังภาษาจาวาลงบนเท็กซไฟล เราเรียกไฟลเหลานี้วา ซอรสโคด ซึ่งซอรสโคดภาษาจาวาจะตองมีนามสกุลเปน .java เสมอ เมื่อเขียนโปรแกรมเสร็จแลว เราจะทําการคอมไพลซอรสโคด การคอมไพลซอรสโคดก็คือ การเปลี่ยนคําส่ังภาษาจาวาเปนภาษาเฉพาะอยางหนึ่งซึ่งจาวาเวอรชัวนแมทชีนเขาใจ ตัวที่ทําหนาที่ในการคอมไพล ซอรสโคดเรียกวา จาวาคอมไพลเลอร ซึ่งเปนซอฟตแวรที่สามารถอานคําส่ังในไฟล .java แลวแปลเปนภาษาเฉพาะที่จาวาเวอรชัวนแมทชีนเขาใจ ภาษาเฉพาะที่จาวาเวอรชัวนแมทชีนเขาใจนี้เรียกวา จาวาไบตโคด ซึ่งคอมไพลเลอรจะเก็บจาวาไบตโคดที่ไดไวในไฟลนามสกุล .class ไฟลนามสกุล .class ที่ไดจาก จาวาคอมไพลเลอรนี่เองคือตัวโปรแกรมที่แทจริง เมื่อใดที่ตองการรันโปรแกรมที่เขียนขึ้น เพียงแตนําไฟล .class ไปรันบนจาวาเวอรชัวนแมทชีน จาวาเวอรชัวนแมทชีนเขาใจจาวาไบตโคดและจะทํางานตามคําส่ังในโปรแกรมที่เขียนขึ้นโดยการอานไฟลจากจาวาไบตโคด ซึ่งเราสามารถสรุปขั้นตอนการพัฒนาโปรแกรมดวยภาษาจาวาไดดังรูป

เขียนโปรแกรมภาษาจาวาลงบนเท็กซไฟล

ไดซอรสโคดนามสกุล .java

คอมไพล ซอรสโคด ดวยจาวาคอมไพลเลอร

ไดจาวาไบตโคดนามสกุล .class

นําจาวาไบตโคดไปรันบน จาวาเวอรชัวนแมทชีน

รูปแสดงขั้นตอนการพัฒนาโปรแกรมดวยภาษาจาวา

เราอาจะเขาใจภาษาจาวาแตจาวาเวอรชัวนแมทชีนไมเขาใจ จาวาเวอรชัวนแมทชีนเขาใจจาวาไบตโคดซึ่งเราอานไมรูเรื่อง คอมไพลเลอรก็คือตัวกลางที่จะแปลภาษาจาวาที่เราเขียนใหกลายเปนจาวาไบตโคดนั้นเอง 8.4 โปรแกรมเชิงวัตถุ การเขียนโปรแกรมคอมพิวเตอรมี 2 แบบคือ การเขียนโปรแกรมแบบโครงสราง และการเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมแบบโครงสรางเปนการเขียนโปรแกรมแบบที่มนุษยคุนเคย คือ การเขียนคําส่ังเรียงตอกันไปเรื่อยๆ ทีละบรรทัด โปรแกรมจะเริ่มทํางานจากคําส่ังแรกสุดเรื่อยไปจนถึงคําส่ังทายสุดเปนอันจบโปรแกรม อาจมีการสรางเปนโปรแกรมยอยๆ ในโปรแกรมใหญบาง เพื่อลดคําส่ังที่ซ้ําซอน แตหลักการกวางๆ

----- Chapter 8: Introduction to Java Programming -----

Page 4: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 4 / 24 ยังคงเหมือนเดิม ตัวอยางของภาษาที่มีวิธีการเขียนโปรแกรมเปนแบบโครงสรางไดแก ภาษาเบสิก ภาษาโคบอล ภาษาฟอรแทรน ภาษาปาสคาล และภาษาซี การเขียนโปรแกรมเชิงวัตถุ มีการสรางวัตถุสมมุติขึ้นมากอนแลวเขียนคําส่ังนิยามวัตถุนั้นจนสามารถทําใหวัตถุนั้นทํางานตามที่เราตองการได ซอรสโคดของโปรแกรมเชิงวัตถุแทนที่จะเปนคําส่ังเขียนเรียงตอกันไปเรื่อยๆ ก็จะเปนการนิยามขึ้นอยางเหมาะสม การเขียนโปรแกรมเชิงวัตถุตองใชเวลาในการศึกษาพอสมควร โดยเฉพาะอยางยิ่งนักเขียนโปรแกรมตองมีความชํานาญในการสรางวัตถุใหมีคุณสมบัติที่ทํางานตามที่เราตองการได ตัวอยางของภาษาที่มีการเขียนโปรแกรมแบบเชิงวัตถุ คือ ภาษาจาวา และภาษาซีพลัสพลัส (ภาษาซีพลัสพลัสเขียนไดทั้งแบบโครงสรางและวัตถุ) การที่โปรแกรมภาษาจาวาตองเขียนแบบเชิงวัตถุเสมอจัดวาเปนทั้งจุดเดนและดอยของภาษาจาวา การที่ภาษาจาวาไมสนับสนุนการเขียนโปรแกรมแบบโครงสรางซึ่งเปนวิธีการเขียนโปรแกรมที่ลาสมัย ทําใหภาษามีความกะทัดรัดมากกวาภาษาซีพลัสพลัส แตในเวลาเดียวกันก็ทําใหตองใชเวลาศกึษานานโดยเฉพาะอยางยิ่งที่ไมใชนักเขียนโปรแกรมมืออาชีพ เพราะการเขียนโปรแกรมเชิงวัตถุไมใชเรื่องที่จะเรียนรูไดในเวลาอันรวดเร็ว 8.5 จาวา 2

ภาษาจาวามีการพัฒนาอยางตอเนื่อง โดยที่ซันเปนผูกําหนดโครงสรางและคําส่ังตางๆ ของภาษา ภาษาจาวาตั้งแตเวอรชัน 1.2 ขึ้นไป มีชื่อเรียกใหมวา จาวา 2 สามารถสืบคนขอมูลเพิ่มเติมเกี่ยวกับจาวา โดยเฉพาะจาวาเวอรชันใหมลาสุดไดจาก http:/java.sun.com ซึ่งมีการเปลี่ยนแปลงอยูอยางสม่ําเสมอ

รูปแสดงเว็บไซต http://java.sun.com/

----- Chapter 8: Introduction to Java Programming -----

Page 5: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 5 / 24 8.6 จาวาเวอรชัวนแมทชีนและจาวาคอมไพลเลอร โปรแกรมที่เขียนดวยภาษาจาวาตองรันบน จาวาเวอรชัวนแมทชีน ดังนั้นจะตองมีจาวาเวอรชัวน แมทชีนบนเครื่องคอมพิวเตอร โปรแกรมจาวากอนจะนําไปรันไดตองผานการคอมไพลดวย จาวาคอมไพลเลอร กอน สรุปแลวถาเราตองการเขียนโปรแกรมดวยภาษาจาวาเราจะตองมีทั้ง จาวาคอมไพลเลอร และ จาวาเวอรชัวนแมทชีน เนื่องจากจาวาเปนเทคโนโลยีเปด ดังนั้นคุณอาจจะเลือกใชจาวาเวอรชัวนแมทชีนและจาวาคอมไพลเลอรของบริษัทใดก็ได แตในเอกสารฉบับนี้ใชจาวาเวอรชัวนแมทชีนและจาวาคอมไพลเลอรที่ดาวนโหลดไดจากเว็บไซตจาวาของซันเนื่องจากเปนที่รูจักดีและที่สําคัญคือฟรี อีกส่ิงที่ตองมีก็คือเครื่องคอมพิวเตอรสวนบุคคลซึ่งอาจใชระบบปฏิบัติการใดก็ได เพราะจาวาสามารถรันไดทุกระบบปฏิบัติการ ในเอกสารฉบับนี้จะใชระบบปฏิบัติการวินโดว (95/98/ME/2000/XP) เพราะเปนระบบปฏิบัติการที่หาไดงายที่สุด

จาวาเวอรชัวนแมทชีนบนคอมพิวเตอรสวนบุคคลของบริษัทซันมีชื่อวา JRE หรือ จาวารันไทมเอ็นไวรอนเมนท สวนจาวาคอมไพลเลอรของซันมีชื่อวา SDK ทั้งสองสามารถดาวนโหลดไดจากเว็บไซต http://java.sun.com/j2se 8.7 การติดตั้ง SDK สามารถดาวนโหลดโดยเขาไปที่เว็บไซต http://java.sun.com/j2se แลวเลือกดาวนโหลดซอฟตแวรที่มีชื่อวา Java 2 SDK ซึ่งมีการเปลี่ยนเวอรชันใหมอยางสม่ําเสมอ สามารถใชเวอรชันใดก็ไดที่สูงกวาเวอรชัน 1.2 แตขอแนะนําใหใชเวอรชันที่ใหมที่สุดที่ไมเวอรชันทดสอบ (Beta version) การเลือกระบบปฏิบัติการวินโดว ในขั้นตอนการดาวนโหลดผูดาวนโหลดจะตองทําการเลือก ระบบปฏิบัติการถึงแมวาโปรแกรมจาวาจะไมขึ้นกับระบบปฏิบัติการ แตตัวจาวาคอมไพลเลอรและจาวาเวอรชัวนแมทชีนขึ้นกับระบบปฏิบัติการ เมื่อดาวนโหลดเสร็จแลวก็ใหทําการติดตั้งโดยการดับเบิลคลิกที่ไอคอนของไฟลที่ดาวนโหลดมา โปรแกรมจะเขาสูการติดตั้ง SDK ซึ่งเปนวิซซารดเหมือนกันการติดตั้งโปรแกรมบนวินโดวทั่วไปซึ่งคุณควรติดตั้งไดดวยตนเอง ในขั้นตอนของการเลือกโฟลเดอรที่จะติดตั้งโปรแกรม ขอแนะนําใหเลือกติดตั้งบนโฟลเดอรชื่อวา C:\java (อาจจะใชชื่ออื่นก็ได แตถาใชชื่อนี้เวลาเรียกใชจะสะดวกกวา)

----- Chapter 8: Introduction to Java Programming -----

Page 6: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 6 / 24

----- Chapter 8: Introduction to Java Programming -----

Page 7: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 7 / 24 เมื่อติดตั้ง SDK เสร็จแลว ทุกส่ิงทุกอยางจะอยูในโฟลเดอร c:\java ทั้งหมดรวมทั้ง JRE ที่พวงติดมาดวย แตขั้นตอนการติดตั้งยังไมสมบูรณกอนจะใชงานไดคุณตองระบุ PATH ใหกับระบบปฏิบัติการของคุณเสียกอน ในระบบปฏิบัติการวินโดวทําไดโดยการคลิกเมาสขวาที่ไอคอน My Computer บนเดสกท็อป แลวเลือก Properties เพื่อเซตคาตัวแปรระบบใหแกระบบปฏิบัติการวินโดว ในสวนนี้วินโดวแตละเวอรชันจะมีหนาจอและขั้นตอนที่ไมเหมือนกัน (แตแตกตางกันเล็กนอย) ในเอกสารฉบับนี้จะแสดงการเซตคาตัวแปรสําหรับ Windows XP หลังจากที่เลือกแท็บ Properties แลวใหเลือกที่แท็บ Advance แลวคลิกที่ปุมที่ชื่อวา Environment Variables

เลือกตัวแปรชื่อ PATH ในสวนของ System variables แลวกดปุม Edit เพื่อเปล่ียนแปลงคา จากนั้นพิมพขอความ ;C:\java\bin ตอทายดังภาพ เพื่อเปนการเซตคาตัวแปรระบบ Path ใหมบน Windows XP สังเกต :C:\java\bin ที่ทายสุดของชอง Variable Value เทานี้ การติด SDK ของเราก็เปนอันเสร็จเรียบรอย

----- Chapter 8: Introduction to Java Programming -----

Page 8: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 8 / 24

คําส่ังและโปรแกรมที่ใชในการพัฒนาโปรแกรมภาษาจาวาซึ่งเปนคําส่ังเบื้องตนและมีการเรียกใชงานบอยจะถูกเก็บอยูในไดเร็คทอรี c:\java\bin คําส่ังและโปรแกรมดังกลาวมีรายการดังนี้คือ

• javac.exe เปนโปรแกรมสําหรับใชแปล(Compile) Source code ไฟล.java • java.exe เปนโปรแกรมสําหรับใชรันไฟล.class ซึ่งไดจากการ Compile • appletviewer.exe เปนโปรแกรมสําหรับแสดงผล applet ซึ่งใชกับเครื่องที่ไมมี โปรแกรม

Browser 8.8 ชนิดของโปรแกรมของโปรแกรมจาวา

ปจจุบันโปรแกรมจาวาแบงออกเปน 2 ชนิดคือ Java Application (หรือ เรียกสั้นๆ วา “Applications”) และ Java Applets (หรือเรียกสั้นๆ วา “Applets”) ทั้ง 2 ชนิด นําไปใชงานแตกตางกันดังนี้

• Java Application มีการทํางานทั้งใน Graphics Mode และ Text Mode เปนการนําจาวามาเขียนเปนโปรแกรมที่สามารถนํามาใชงานไดอยางอิสระ (Stand Alone Program) เหมือนกับการเขียนโปรแกรมภาษาระดับสูงอื่นๆ เชน C++, Pascal, COBOL ทั้งนี้สามารถนํา Application ไปใชงานที่คอมพิวเตอรตางแฟลตฟอรม (Platform) ไมวาจะเปน PC, Macintosh หรืออื่นๆ

• Java Applets จะทํางานภายใตโปรแกรม Browser หรือ Appletviewer เปนการนําจาวามาเขียนเปนโปรแกรมเชนเดียวกัน แตไมสามารถเรยีกใชตามลําพังเหมือนกัน Applications แตจะตองนําไปใสไวในเอกสาร HTML (เพื่อทําให Web Page ทํางานไดดียิ่งขึ้น) แลวใชโปรแกรม Web Browser (เชน Netscape, Internet Explorer) หรือใช Utilities ของจาวา ชื่อ AppletViewer เพื่อเรียกผลลัพธก็ได

8.8.1 Java Application

ขั้นตอนในการสรางโดยเริ่มจากใชโปรแกรมประเภท Text-Editor (เชน notepad, Word Pad หรือ Editplus) เขียนโปรแกรม Java โดยจะตองบันทึก extension (นามสกุลของไฟล) นั้นเปน .java เชน Hello.java เมื่อเราไดทําการเขียนโปรแกรมเสร็จเรียบรอยแลว ขั้นตอนตอไปก็คือการ compile โดยใช javac.exe ในการ compile และจะไดไฟล Hello.class มา เราสามารถสั่ง run ไฟล Hello.class โดยใช java.exe ดังแสดงขั้นตอนการสรางโปรแกรมตามรูปดานลางนี้

ในโปรแกรม Java application จะมีเมทอด main() ไดเพียงเมทอดเดียวเทานั้น โดยภายใน class ที่มีเมทอด main() จะตองมีชื่อ class เปนชื่อเดียวกันเดียวกับไฟล .java และไฟล .java สามารถมี class ที่สรางขึ้นไดมากกวาหนึ่งคลาส

----- Chapter 8: Introduction to Java Programming -----

Page 9: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 9 / 24 ตัวอยาง 8.1 โปรแกรมแสดงขอความ "Hello" ออกทางหนาจอ

1. ใหทําการสรางโฟลเดอร MyJava ไวใน C:\ (Drive C) 2. ใชโปรแกรม Notepad พิมพโคด ตามรูปดานลาง แลวบันทึกไวใน C:\MyJava โดยกําหนดชื่อเปน

Hello.java

3. เปด MS-DOS Prompt window แลวเปลี่ยน Directory เปน C:\Myjava 4. Compile โปรแกรม Hello.java โดยใชคําส่ัง Javac Hello.java เราจะไดไฟล Hello.class จากการ

Compile 5. ส่ัง run ไฟล Hello.class โดยใชคําส่ัง Java Hello โปรแกรมก็จะ run โดยจะแสดงคําวา "Hello" ออก

มา

8.8.2 Java Appletการสราง Java Applet ชวงขั้นตอนแรกๆ จะมีวิธีการสรางไฟล .java และไฟล .class เหมือนกับ Java

Application แตจะแตกตางกันที่ Java Applet ตองอาศัย ไฟล .html ในการแสดงผล โดยจะใชแท็ก <applet></applet> ของภาษา HTML ในการเชื่อมโยงไฟล .class ซึ่งเปน Java Applet มาแสดงผลเปน Browser หรือ appletviewer ซึ่งมีรูปแบบของการเชื่อมโยงดังนี้

<applet code=” HelloApplet.class” width=100 height=100></applet>

คา width และ height คือ attribute ที่เปนตัวกําหนดขนาดพื้นที่ของ Java Applet ซึ่งจะแสดงผลบน Browser สวน code คือการระบุไฟล.class ที่ตองการใหแสดงผล

----- Chapter 8: Introduction to Java Programming -----

Page 10: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 10 / 24 ตัวอยาง 8.2 การสราง Applet เพื่อแสดงขอความ "Hello Applet"

1. ใหทําการสรางโฟลเดอร MyJava ไวใน C:\ (Drive C) 2. ใชโปรแกรม Notepad พิมพโคด ตามรูปดานลาง แลวบันทึกไวใน C:\MyJava โดยกําหนดชื่อเปน

HelloApplet.java

3. เปด MS-DOS Prompt window แลวเปลี่ยน Directory เปน C:\Myjava 4. Compile โปรแกรม HelloApplet.java โดยใชคําส่ัง Javac HelloApplet.java เราจะไดไฟล

HelloApplet.class จากการ Compile 5. ใชโปรแกรม Notepad พิมพโคด ตามรูปดานลาง แลวบันทึกไวใน C:\MyJava โดยกําหนดชื่อเปน

HelloApplet.html

6. ใช Web Browser เปดไฟล HelloApplet.html เพื่อทดสอบการทํางานของ HelloApplet.class ผล จะแสดงดังรูปดานลาง

----- Chapter 8: Introduction to Java Programming -----

Page 11: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 11 / 24

ยังมีอีกวิธีที่ใชในการทดสอบการทํางานของ HelloApplet.class ก็คือการใชคําส่ัง appletviewer.exe โดยเรียกผาน MS-DOS Prompt window โดยพิมพคําส่ัง appletviewer HelloApplet.html ผลที่ได จะแสดงดังรูปดานลาง

โดยสวนมากแลวขอแนะนําใหใช Appletviewer ในการพัฒนา เพราะวามีขนาดเล็ก ,มีการทํางานที่เร็ว กวา Web Browser และ โปรแกรม Web Browser จะมีการจํา class ที่ไดทําการโหลดมากอนหนา ทําใหเมื่อทําการเรียกใช class นั้นอีกครับ Web Browser จะนํา class เกาที่ไดโหลดมาครั้งกอนมาใช ทําใหเกิดปญหาในการพัฒนา applet ของเรา

8.9 การใช Editplus ชวยในการเขียน แปล และประมวลผล โปรแกรม Editplus เปนเพียง Editor มิใช Compiler แต Editplus เปนโปรแกรมที่สามารถเรียกตัว

Compiler มาแปลโปรแกรมที่กําลังเขียนอยู พรอมกับ Run และแสดงผลในสวนของ Output windows ทําใหสามารถเรียกโปรแกรมอื่นมาทํางานไดและสามารถทราบถึงผลการ Compile หรือ Run วาเปนอยางไร

ในสวนนี้จะแสดงถึงขั้นตอนในการสรางปุมเพื่อเรียกใชคําส่ังในการ Compile และ Run โปรแกรมที่เขียนดวยภาษาจาวา ซึ่งขั้นตอนตางๆ ไดแสดงไวในรูปดานลางนี้

เลือก Program เพื่อเพิ่ม Tool

แกไขชื่อ Group 1 เปน Java

----- Chapter 8: Introduction to Java Programming -----

Page 12: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 12 / 24

ส่ัง New -

Set คาในการ Compile และ Run

----- Chapter 8: Introduction to Java Programming -----

เมื่อตองการเขียนโปรแกรมดวยภาษาจาวา โดยใชโปรแกรม Editplus ใหเขาไปที่เมนู File แลวเลือกคํา>Java หรือเลือกที่ จะปรากฏเมนูยอยออกมาจากนั้นเลือกที่รายการ Java

Page 13: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 13 / 24

เมื่อตองการ Compile หรือ Run โปรแกรมก็ใหเปดหนาจอโปรแกรมที่เราตองการ Compile หรือ Run หลังจากนั้นเขาไปที่เมนู Tools แลวเลือกคําส่ังที่เราตองการเชน Compile, Run หรือ CallAppletViwer ที่เราไดสรางไวจากภาพขางตน

รูปแสดงขั้นตอนการ Compile และผลลัพธที่ไดจากการ Compile

รูปแสดงขั้นตอนการ Run และผลลัพธที่ไดจากการ Run

----- Chapter 8: Introduction to Java Programming -----

Page 14: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 14 / 24 8.10 การสรางและเรียกใชโปรแกรมภาษาจาวา

ขั้นตอนในการสราง Java Application ไดแก 1. ปอนรายละเอียดตางๆ ของโปรแกรม หรือที่เรียกวา “Source code” ลงไป จากนั้น Save

ไฟลนี้เก็บไว โดยกําหนดนามสกุลเปน .java ไฟลนี้เรียกวา “Source File” 2. นํา Source File มา Compile โดยใชคําส่ัง “javac” ซึ่งเปน Compiler ของภาษาจาวา แลว

ตามดวยชื่อ Source File ที่กําหนดไวในขอ 1 ถาไมมีขอผิดพลาดใดๆ เกิดขึ้นในโปรแกรม (Syntax Error) จะไดผลลัพธเปนไฟลใหมเพิ่มมาอีก 1 ไฟล โดยจะมีนามสกุลเปน .class ทั้งนี้ไฟลที่ไดจะอยูในรูปของ “Bytecodes” ไบตโคด

3. เรียกใชผลลัพธที่ไดจากในขอ 2 โดยใชคําส่ัง “java” ซึ่งเปน Interpreter ของภาษาจาวา แลวตามดวยชื่อไฟลผลลัพธในขอ 2 แตไมตองใสนามสกุล .class ลงไปดวย มิฉะนั้นจะเกิด Error ขึ้น

ตัวอยางที่ 8.3 ปอนขอมูลแลวกําหนดชื่อโปรแกรมเปน “HelloApp” จากนั้นใหทําการ Compile และเรียกใช

โปรแกรมนี้ดวย import java.lang.*; public class HelloApp { public void Run( ) { char c[] = {‘J’,’a’,’v’,’a’}; String S1 = new String©; System.out.println(S1); } public static void main (String args[ ]) { HelloApp theApp = new HelloApp( ); theApp.Run( ); } ผลลัพธ C:\Myjava>javac HelloApp.java C:\Myjava>java HelloApp Java คําอธิบาย เมื่อเรียกใชโปรแกรม โปรแกรมจะแสดงขอความวา “Java” ออกมาทางจอภาพ

----- Chapter 8: Introduction to Java Programming -----

Page 15: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 15 / 24 ลักษณะทั่วไปของโปรแกรมจาวา จะเปนดังนี้

1. มี Class อยางนอย 1 Class ใน 1 โปรแกรม (1 โปรแกรม สามารถมีไดมากกวา 1 Class แตวิธีการเรียกใช Method ในแตละ Class ก็จะแตกตางกันไป ซึ่งจะไดกลาวในลําดับตอไป)

2. ภายใน 1 โปรแกรม จะมี Class ที่เปนชนิด “public” ไดเพียง Class เดียวเทานั้น ทั้งนี้ ชื่อ Class ที่เปน public จะตองเปนชื่อเดียวกันกับช่ือโปรแกรมเสมอ

การทํางานของโปรแกรมขางตน จะเปนดังนี้ 1. ภายในโปรแกรมจะตองมี Method ที่ชื่อ “main” เสมอ โดย Method “main” จะเปน Method แรกที่

โปรแกรมจะเรียกใชเปนลําดับแรก จากตัวอยางโปรแกรมจะไปเรียกใช Method “main” จากนั้นภายใน “main” จะไปเรียกใช Method อื่นๆ ตอไป

2. กอนการเรียกใช Method ใดๆ จะตองทําการสราง Object ของ Class ขึ้นมากอนเสมอ เชน จากตัวอยางโปรแกรมจะเรียกใช Method “main” โดยอัตโนมัติ ดังนั้นจึงไมตองสราง Object ใดๆ ขึ้นมา แตเมื่อ “main” ตองการจะเรียกใช Method “Run” จะตองสราง Object ขึ้นมากอน ดวยคําส่ัง

HelloApp theApp = new HelloApp( );

โปรแกรมจะสราง Object (หรือตัวแปร) ชื่อ “theApp” ขึ้นมาโดยมีโครงสรางตาม Class

“HelloApp” จากนั้นจึงเรียกใช Method “Run” ดวยคําส่ัง

theApp.Run( ); หมายเหต ุ รูปแบบการทํางานดังกลาวขางตน อาจจะแตกตางกันไปแลวแตความชํานาญของ

โปรแกรมเมอรแตละคน ซึ่งจะไดพิจารณากันอีกครั้งในหัวขอตอไปนี้ 8.11 โครงสรางของ Class (Class Structure)

ในการเขียนโปรแกรมแบบ Object นั้น ผูเขียนโปรแกรมหรือที่เรียกวา โปรแกรมเมอรนั้น ก็สามารถกําหนดรูปแบบการเขียนไดอยางเปนอิสระ ซึ่งแตละคนก็อาจเขียนแตกตางกันไป ทั้งนี้เพื่อใหเปนแบบสําหรับแตละหนวยงาน แตก็จะยังคงมีโครงสรางพื้นฐานของ Class ที่คลายกัน โดยเราสามารถแบงโครงสรางได 2 รูปแบบตอไปนี้ในการอธิบาย รูปแบบที่ 1 แยกเปน Method ชื่อ “main” และ “Run” ทั้งนี้โปรแกรมจะเริ่มทํางานที่ “main” โดย

อัตโนมัติ จากนั้นภายใน “main” จะมีการเรียกใช Method ชื่อ “Run” อีกทีหนึ่ง (จะตองมีการสราง Object ใหมขึ้นมากอนดวย ดังที่กลาวไวในตัวอยางที่ 8.3) การเขียนในลักษณะเชนนี้ จะทําใหโปรแกรมดูเปนระเบียบและเปนรูปแบบของ OOP มากขึ้น

----- Chapter 8: Introduction to Java Programming -----

Page 16: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 16 / 24 public class someApp { private variable declaration; private variable declaration; public someApp( ) { //constructor; } public void Run( ) { //a method; } public int someMethod (int value1, int value2) { //another method; } public static void main(String args[ ]) { someApp theApp = new someApp( ); theApp.Run( ); } } รูปแบบที่ 2 รวม Method ชื่อ “Run” มาอยูใน Method ชื่อ “main” โดยโปรแกรมจะเริ่มตนทํางานที่

“main” ทันที ไมตองเรียกใช Method “Run” อีกตอหนึ่ง เปนการเขียนที่งายและรวดเร็ว public class someApp { private variable declaration; private variable declaration; public someApp( ) { //constructor;

----- Chapter 8: Introduction to Java Programming -----

Page 17: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 17 / 24 } public int someMethod (int value1, int value2) { //another method; } public static void main(String args[ ]) { // a method (ยุบ Method “Run” มาไวใน Method) นี้; } } คําอธิบายของทั้ง 2 รูปแบบ

1. จากโครงสรางขางตน จะแสดง class จํานวน 1 Class ภายใน Class จะมี Method ยอยๆ จากตัวอยาง class นี้ มีชื่อวา “SomeApp” โดยมี Method ยอยชื่อ someApp, someMethod และ main (รูปแบบที่ 1 มี Method ชื่อ “run” เพิ่มมาดวย) ทั้งนี้ทายชื่อของ Method จะตองตามดวยเครื่องหมาย วงเล็บเปดและปดเสมอ (ในกรณีที่ไมไดมีการสงคา Parameter ใดๆ ไปดวย)

2. ชื่อของ Class หรือ Method ใดๆ ที่ตั้งไว จะตองระมัดระวังในเรื่องตวัอักษรพิมพเล็ก และพิมพใหญดวยเนื่องจาก Compiler ของจาวา จะแปลเปนคนละชื่อกัน เชน someApp จะไมเหมือนกับ Some_App เพื่อความเขาใจอาจใชตัวอักษรตัวใหญเปนตัวขึ้นคําใหม เชน someApp ก็ได

3. ภายใน Class หนึ่งๆ จะตองมีเครื่องหมายปกกาเปด { เพื่อแสดงจุดเริ่มตน และมีเครื่องหมายปกกาปด } เพื่อแสดงจุดส้ินสุดของ Class นั้น เชนเดียวกันกับแตละ Method ก็จะมีเครื่องหมายปกกาเปดและปดมาแสดงจุดเริ่มตนและจุดส้ินสุดเชนเดียวกัน

4. แตละคําส่ังที่ใชภายใน Class (ยกเวนบรรทัด Header ของ Class และ Method) จะตองปดทายดวยเครื่องหมาย Semicolon (;) เสมอ เชน theApp.Run( );

5. บรรทัดที่แสดงชื่อ Class จะตองมี Keyword วา “class” เสมอ และไมตองปดทายดวย Semicolon (;) เชน

public class someApp; 6. หนาชื่อของตัวแปร, Method หรือ Class จะมี Keyword เพื่อระบุขอบเขต (Accessibility) ของการ

เรียกใชชื่อ (Accessibility) เหลานี้ได โดยแบงเปน static, public, private, protected และ void 7. จาวาไมไดกําหนดรูปแบบการจัดเรียง Method ใน Class ไว ดังนั้นจึงสามารถวาง Method ตางๆ ได

ตามอิสระแตทั้งนี้เพื่อความสะดวก เรานิยมวาง main Method ไวที่ดานบนหรือดานลางสุดของโปรแกรม เพื่อใหสังเกตไดงายขึ้น (ทุกโปรแกรมจะเริ่มตนทํางานที่ main Method กอนเสมอ) “main”

----- Chapter 8: Introduction to Java Programming -----

Page 18: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 18 / 24

เปน Method แรกที่โปรแกรมเรียกใช ดังนั้นทุกโปรแกรมจะตองมี Method ชื่อนี้เสมอ และจะตองเขียนในรูปแบบ อยางใดอยางหนึ่งคือ

public static void main(String args[]) หรือ

public static void main(String[] args) 8. ตัวแปรตางๆ ควรกําหนดรวมไวในที่เดียวกัน เพื่อใหมีระเบียบและแกไขไดงายขึ้น 9. สามารถมี Class ไดมากกวา 1 class ใน 1 โปรแกรม และโปรแกรมใดๆ ก็สามารถเรียกใช class และ

method ในโปรแกรมอื่นๆ ได (ถาโปรแกรมนั้นกําหนดใหสามารถเรียกใชได) สําหรับ Class ที่ใชเปนชื่อโปรแกรมนั้นจะตองมี Keyword วา “public” ดวยเสมอ (ดังนั้นมีเพียง 1 public class ใน 1 โปรแกรมเทานั้น)

ตัวอยางที่ 8.4 นําตัวอยางที่ 8.4 มาดัดแปลงใหเขียนตามรูปแบบที่ 2 ไดดังนี้ import java.lang.*; public class HelloApp { public static void main (String args[]) { char c[] = {‘J’,’a’,’v’,a’}; String S1 = new String(c) ; System.out.println(S1); } } 8.12 โครงสรางของ Method (Method Structure)

โดยทั่วไปรูปแบบ Method จะเปนดังนี้ (ยกเวน main Method, Constructor และ Destructor) accessibility return_data_type methodName (parameter_list) { // เนื้อหาของ method }

คําอธิบาย

1. บรรทัดแรกของ Method เรียกวา “Header” ใชแสดงชื่อของ Method รวมทั้งคาตางๆ ดังนี้ • accessibility

กําหนดชนิดของการเรียกใช สําหรับแตละ Method นี้ แบงเปน private, public, protect, static และ void

----- Chapter 8: Introduction to Java Programming -----

Page 19: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 19 / 24

• return_data_type กําหนดชนิดของผลลัพธที่ Method นั้นจะสงคากลับ ใน 1 Method จะตองสงผลลัพธอยางนอยที่สุด 1 คากลับไปยัง Method ที่เรียกใชมา (ยกเวนกําหนด Accessibility ไวเปน “void”) ทั้งนี้ชนิดของ Return_data_type อาจเปนชนิดทั่วไป (เชน Integer, Character) หรือเปนชนิดซับซอน (เชน Array หรือ Object) ก็ได

• parameter_list เปนชื่อของตัวแปรที่ใชรับขอมูลที่สงมาจาก Method ที่เรียกใชงาน method นี้ ถาไมมีการสงคามาให ก็ไมจําเปนตองมี parameter_list ก็ได กรณีที่มี parameter_list มากกวา 1 ตัว ใหคั่นแตละตัวดวยเครื่องหมาย comma (,)

2. บรรทัดที่เปน Header ของ Method ไมตองปดทายดวยเครื่องหมาย semicolon (;) 3. Body of Method ก็คือ คําส่ังตางๆ ที่จะใชในการทํางานงานของ Method นี้ 4. Body of Method จะตองอยูภายในเครื่องหมาย { และ } ดวย

8.13 Accessibility

คาขอบเขตของการใชงาน ตัวแปร, Method หรือ Class นั้นเรียกวา “Accessibility” แบงออกเปน • static ใชนิยามตัวแปรและ Method ที่ตองการใหมีคาคงที่ สามารถนําไปใชได

กับทุกๆ สวนของ Class โดยคานั้นจะไมมีการเปลี่ยนแปลงไมวากรณีใดๆ • public ใชนิยามตัวแปร , Method และ Class ใดๆ เพื่อใหสามารถนําไปใชกับ

Class หรือโปรแกรมอื่นๆ ได • private ใชนิยามตัวแปรหรือ Method เพื่อใหเรียกใชไดเฉพาะภายใน Class ที่

สรางตัวแปร หรือ Method นั้นๆ ขึ้นมาเทานั้น • protected ใชนิยามตัวแปรหรือ Method ที่ใชไดเฉพาะ Class ที่สรางขึ้นมาดวยวิธี

การสืบทอด (Inheritance) เทานั้น โดยปกติจะใช Protected กับ Class ที่เปน Class ตนฉบับ (Base Class)

• void ใชนิยาม Method โดยเปนการกําหนดใหไมมีการสงคาใดๆ กลับมาใหกับ Method นี้ (ดังนั้นจึงไมตองใชคําส่ัง Return)

ถาไมมีการระบุคา Accessibility ไว จะหมายถึง • ตัวแปร ใชไดเฉพาะใน Method ที่นิยามตัวแปรนั้นไว • Method ใชไดเฉพาะภายใน Class นั้นเทานั้น Class อื่นจะมาเรียกใชไมได • Class ใชไดเฉพาะภายในโปรแกรม (File) นี้เทานั้น โปรแกรมอื่นจะมาเรียกใช

Method หรือตัวแปรตางๆ ใน Class นี้ไมไดเลย

----- Chapter 8: Introduction to Java Programming -----

Page 20: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 20 / 24 8.14 Overloading

งานบางงานอาจตองการใหมีการแยกแยะดวยวา สงคาตัวแปรชนิดใดมา เชน ถาสงคาตัวแปรมาเปน Integer ก็ใหทํางานใน Method ที่ 1 ถาสงมาเปน String ก็ใหทํางานใน Method ที่ 2 โดยทั้ง 2 Method จะทํางานเหมือนกัน เพียงแตรับคา Input มาตางกัน ลักษณะเชนนี้เรียกวา “Overloading” ขอจํากัดของ Overloading คือ ชื่อ Method ที่ใช (เชน Method1, Method2) จะตองเปนชื่อเดียวกัน เพียงแต parameter_list ตางกัน

รูปแบบของ Overloading แสดงไดดังนี้ public String find (int ID-numb) { // เนื้อหาของ method } public String find (String name) { // เนื้อหาของ method }

คําอธิบาย

1. ทั้ง 2 Methods มีชื่อเดียวกันคือ “find” และมีชนิดของ Return_data_type เปน “String” เหมือนกัน 2. ถา Method ที่เรียกใชงาน สงคา Parameter มาเปนชนิด Integer (ตัวเลข) โปรแกรมจะเลือกทํางาน

ตาม “Method บน” แตถาสง Parameter มาเปนชนิด String (ขอความ) โปรแกรมก็จะทํางานตาม “Method ลาง” แตไมวาจะทํางานตาม Method ใด ก็ตาม ผลลัพธที่สงกลับไปให Method ที่เรียกใชงาน จะตองเปน “String” เสมอ

8.15 Constructors

เมื่อ Object ใดๆ ถูกสรางขึ้นมาจะตองไปเรียกใช Method ที่ระบุนี้ขึ้นมาใชงานทันที การกําหนดการทํางานลักษณะเชนนี้เรียกวา “Constructor” ดังนั้น Constructor ก็คือ Method ทั่วๆ ไป ของจาวา แตมีขอจํากัดดังนี้

1. ชื่อของ Constructor จะตองเปนชื่อเดียวกันกับช่ือ Class ที่ใชสราง Object 2. Header ของ Constructor จะตองไมมีคา Return_data_type

ดังนั้น ถาชื่อ Method ใดๆ ใน Class เปนชื่อเดียวกันกับ Class ดวย แสดงวา Method นั้นเปน “Constructor” Method

ตัวอยางของการสราง Constructor เชน ในโปรแกรมสําหรับเกมสบางอยางจําเปนตองเรียกใชตัวเลขสุมทุกครั้งที่เริ่มตนเกมสใหม แตทั้งนี้ไมจําเปนที่ทุกโปรแกรมจะตองมีการกําหนด Constructor ไวดวย แตเพื่อใหมีมาตรฐานเดียวกัน จึงนิยมเขียน Constructor เอาไวในโปรแกรมเสมอ ถึงแมจะไมมีการทํางานใดๆ ใน Constructor ก็ตาม โดยจะกําหนดเปนบรรทัดวางไว เชน สมมติชื่อของ Class คอื “HelloApp” ดังนั้นจะสราง Method ชื่อ “HelloApp” เอาไวดวย โดยกําหนดเครื่องหมายปกกาเปดและปดเอาไวเทานั้น (ไมมีการทํางานใดๆ)

----- Chapter 8: Introduction to Java Programming -----

Page 21: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 21 / 24

public HelloApp ( ) { }

โดยทั่วไปสําหรับโปรแกรมสวนใหญๆ ใน Class หนึ่งๆ มักจะมีการกําหนด Constructor ไวมากกวา 1

Constructor โดยจะขึ้นอยูกับคาของ Parameter ที่สงมา ดังนั้นจึงสามารถนําลักษณะที่เรียกวา “Overloading” มาใชงานรวมกับ Constructor ได (อยาลืมวา Constructor ก็คือ Method นั่นเอง)

8.16 Public Class

Class ที่มีคา Accessibility เปน “public” จะมีไดเพียง Class เดียวใน 1 โปรแกรมเทานั้น และชื่อ Class จะตองเปนชื่อเดียวกันกับช่ือโปรแกรมดวย

8.17 main Method

main Method จะแตกตางจาก Method อื่นๆ ไดแก • มีเพียง 1 main Method ใน 1 โปรแกรมเทานั้น • จะตองมีคา Accessibility เปน “static” เสมอ • จะไมมีการสงคากลับคืน ดังนั้นจึงใช Accessibility “void” รวมดวยเสมอ • Parameter_list จะตองเปนรูปแบบใดรูปแบบหนึ่งเสมอคือ

(String args[ ]) หรือ (String[ ] args) หมายเหต ุ มี Keyword 2 คํา ที่ใชในการอธิบายไดแก

• Parameter เปนชื่อตัวแปรที่ Method ที่ถูกเรียกใช ใชในการรับคาที่สงมาจาก Method ที่เรียกใช

• Argument เปนชื่อตัวแปรที่ Method ที่เรียกใช ใชในการสงคาไปใหกับ Method ที่ถูกเรียกใช กลาวงายๆ ก็คือ Argument เปนตัวสง และ Parameter เปนตัวรับ นั่นเอง

8.18 การเรียกใช Class Libraries

Class Libraries คือโปรแกรมยอยๆ ที่เขียนขึ้นมาพรอมใหใชไดเลย เรียกโปรแกรมยอยๆ วา “Package” การเรียกใชนั้น จะกําหนดคําส่ังไวดานบนสุดของโปรแกรม โดยใชคําส่ัง Import แลว

import java.lang เปนการเรียกใช Class ชื่อ lang ใน Package ชื่อ java

----- Chapter 8: Introduction to Java Programming -----

Page 22: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 22 / 24

import java.*; เรียกใชทุก Class ของ Package ชื่อ “java” เปนการสะดวกกวาการเรียกใชทีละ Class แตจะส้ิน

เปลืองหนวยความจําไปสวนหนึ่ง

8.19 การสราง Object Class เปรียบเสมือนตนแบบ (Template) สําหรับสราง Object ใดๆ ขึ้นมา Object ใดถูกสรางใน

Class ใด ก็จะมีโครงสรางเหมือนกันที่ระบุใน Class นั้น (ถามีแต Class แตไมมี Object ก็จะไมมีการทํางานใดๆ เกิดขึ้น เปรียบเสมือนกับหองเรียนที่ไมมีครูและนักเรียน ก็จะไมมีการเรียนการสอนเกิดขึ้น ดังนั้นเมื่อสราง Class ขึ้นมา ก็จะตองสราง Object ขึ้นมาดวยเสมอ)

เมื่อมีการสราง Object ใดๆ ขึ้นมา โปรแกรมจะทํางานตามขั้นตอนดังนี้ • จัดสรรที่วางใน Main Memory (หนวยความจําหลัก) ใหกับตัวแปรตางๆ ของ Object • เชื่อม Object นั้นกับ Method ตางๆ ใน Class • ถา Class นั้นมีการใช “Constructor” ใหทํางานตาม Constructor กอน • สงคาของที่อยู (Address) ของจุดเริ่มตนของ Object ไปใหกับโปรแกรม เพื่อใหโปรแกรม

ทราบวา Object เชน ใชคําส่ัง 1 และคําส่ังที่ 2 ในการสราง Object ใหมดังนี้ คําส่ังที่ 1 HelloApp theApp;

• HelloApp เปนชื่อ Class ที่จะใชสราง Object • theApp เปนชื่อตัวแปรที่ใชเก็บ Address ของ Object ที่สรางขึ้น (สรางตัวแปรขึ้น

มาเทานั้น ยังไมไดสราง Object) เรียกตัวแปรนี้วา “ตัวแปร Object” สรุป เปนคําส่ังที่ใชสรางตัวแปรชื่อ theApp เพื่อเตรียมไวสําหรับสราง Object ไวใน Class ชื่อ

HelloApp คําส่ังที่ 2 theApp = new HelloApp( )

• new เปนคําส่ังที่ใชในการสราง Object ใหม • theApp เปนชื่อตัวแปร (หรือ Object ) ที่สรางมาไวแลวจากขอ 1 • HelloApp เปนชื่อ Class ที่ใชสราง Object ใหม โดยจะตามดวยคา Parameter ที่

จะสงมาใชในการสราง Object ใหม (จากตัวอยางจะไมมีคา Parameter ใดๆ ดังนั้นจึงกําหนดเปนเพียงวงเล็บเปดและปดเทานั้น)

สรุป เปนคําส่ังที่ใชสราง Object ใหมภายใต Class ชื่อ HelloApp และเก็บที่อยูของ Object ไวใน ตัวแปรชื่อ theApp ทั้ง 2 คําส่ัง สามารถเขียนรวมกันเปนคําส่ังเดียวได โดยมีรูปแบบดังนี้

----- Chapter 8: Introduction to Java Programming -----

Page 23: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 23 / 24 8.20 การเรียกใช Method

การเรียกใช Method ใดๆ นั้นจะตองอางอิงถึง Object ใน Method นั้นๆ ดวยเสมอ โดยการเรียกใช Method ใดๆ มีรูปแบบดังนี้

Object_variable.Method_name(argument_list) Object_variable คือชื่อ Object (หรือตัวแปร) ที่สรางขึ้นมาดวยคําส่ัง new Method_name คือชื่อ Method ที่ Class นั้นๆ มีอยู Argument_list คือรายชื่อตัวแปรที่ใชสงไปให Method ที่เรียกใช (Method_name)

System.out.println(“กรุณาใสชื่อของคุณ”); คําอธิบาย เปนการเรียกใช Method ชื่อ “println” ซึ่งเปน Method หนึ่งใน Class ชื่อ “System.out” ของ Package ชื่อ “lang” ที่เรา import เขามา (import java.lang.*) ทั้งนี้จะสงขอความวา “กรุณาใสชื่อของคุณ: “ ไปใหกับ Method นี้ดวย เพื่อใชในการแสดงผลทางจอภาพ หมายเหต ุ อยาลืมเครื่องหมายจุด (.) คั่นระหวางชื่อตัวแปร Object และชื่อ Method ดวย 8.21 การใสหมายเหตุ (Comment)

เปนสวนของโปรแกรมที่ตองการใชอธิบายสิ่งใดๆ ก็ตามใหโปรแกรม โดย Compile จะขามการแปลขอความของบรรทัดที่กําหนดเปนหมายเหตุไว

การสรางหมายเหตุ ทําได 2 รูปแบบคือ 1. ใช /* และ */

เหมาะสําหรับกําหนดขอความที่ยาวเทากับ 1 บรรทัด โดยโปรแกรมจะถือวาขอความที่ตามหลัง /* จะเปนหมายเหตุ ไปจนกวาจะพบเครื่องหมาย */ จึงจะแสดงวาจบหมายเหตุแลว

2. ใช // เหมาะสาํหรับขอความสั้นๆ 1 บรรทัด โดยถาบรรทัดใดขึ้นตนดวย // บรรทัดนั้นจะถือเปน หมายเหตุ

และ Compiler จะขามบรรทัดนั้นไป ไมวาจะใชหมายเหตุรูปแบบใดก็ตาม ไมตองมีเครื่องหมาย ; ปดทาย เหมือนกับคําส่ังอื่นๆ เชน

// This line is comment1 // This line is comment2 /* This line is comment3 This line is comment4 */

----- Chapter 8: Introduction to Java Programming -----

Page 24: Introduction to Java Programming

1204101 : ความรูพื้นฐานทางวิทยาการคอมพิวเตอร (Fundamentals of Computer Science) หนา 24 / 24 8.22 ตรวจสอบการทํางานของโปรแกรมทีละขั้นตอน (Program Tracking)

ลองตรวจสอบการทํางานของโปรแกรม HelloApp ในตัวอยางที่ 8.3 ทีละขั้นตอน ดังนี้ • เริ่มตนทํางานโดยมาที่ main Method

ถาเปนรูปแบบที่ 1 จะทํางานตอไปนี้กอน • ใน main Method จะสราง Object ใหมชื่อ “theApp” ภายใต Class ชื่อ “HelloApp”

(โปรแกรมนี้มีเพียง Class เดียวและเปน Application Class ดวย) • เรียกใช Method ชื่อ “Run” จากคําส่ัง theApp.Run( )

ทั้ง 2 รูปแบบ จะทํางานเดียวกันคือ • เรียกใช Method “println” ของ Object ชื่อ “out” ซึ่งอยูใน Class ชื่อ “System” โดย

Method นี้จะทําหนาที่แสดงขอความที่ปอนเขามาทางจอภาพ • จบการทํางานของโปรแกรม

หมายเหต ุ1. คําส่ัง System.out.println เปน Package ตัวหนึ่งที่สามารถเรียกใชงานไดทันที โดยจะใชแสดง

ผลขอความ หรือ ตัวอักษรมากกวา 1 ตัวบนจอภาพ 2. เครื่องหมายเพิ่มเติมที่อาจพบไดใน Method “println” ไดแก 3. ใส Sting Quote (‘) ไวใน Double Quote (“) ในกรณีที่ตองการกําหนดเปนขอความซอนกัน เชน

System.out.println(“\n\n สวัสดีครับ “ คุณ “+theName+” ‘ ! \n\n”);

รายการเอกสารอางอิง [1] กิตติ ภักดีวัฒนะกุล. Java ฉบับโปรแกรมเมอร. พิมพครั้งที่ 1. สถานที่พิมพ: ไทยเจริญการพิมพ, 2542. [2] สาธิต ชัยวิวัฒนตระกูล. เกง JSP ใหครบสูตร. พิมพครั้งที่ 1. 2545. [3] นรินทร โอฬารกิจอนันต. จาวาสําหรับผูเริ่มตน [4] http://www.thaiall.com/class/indexr.htm

----- Chapter 8: Introduction to Java Programming -----