45
ดงั น้นั ความสัมพนั ธ์แบบเรียลไลเซชนั จะเป็ นความสัมพนั ธ์มีการกาหนดคุณลกั ษณะของ
เมธอดของอินเทอร์เฟสไวใ้ ชส้ าหรับแสดงความสัมพนั ธ์การนาเอาอินเทอร์เฟสมาอิมพลีเมนตซ์ ่ึงใน
คลาสหน่ึงๆ สามารถใชส้ ัญลกั ษณ์เพื่อแสดงการอิมพลีเมนตไ์ ดห้ ลายๆ คลาส โดยท่ีส่ิงท่ีสาคญั น้นั
คือคลาสท่ีอิมพลีเมนต์จะตอ้ งเขียนรายละเอียดในเมธอดต่างๆ ที่กาหนดไวใ้ นอินเทอร์เฟสให้
สามารถใชง้ านไดจ้ ริง ตวั อยา่ งการอิมพลีเมนตเ์ พยี งอินเทอร์เฟสเดียว แสดงดงั ภาพท่ี 2.35
ภาพท่ี 2.35 แสดงตวั อยา่ งการใชส้ ญั ลกั ษณ์ของการอิมพลีเมนต์
จากภาพท่ี 2.35 อธิบายไดว้ า่ การใชง้ านเรียลไลเซชนั น้ีเป็นการนาเอาเมธอดที่กาหนดไวใ้ น
อินเทอร์เฟสดา้ นบน (myInterface) ที่ในเชิงการเขียนโปรแกรมจะระบุเพียงหนา้ ที่ พารามิเตอร์และ
รี เทิร์นไทป์ เท่าน้ัน โดยไม่มีการเขียนโปรแกรมใดๆ ในส่วนของเมธอดเลย ส่วนคลาส
myImplement จะตอ้ งทาการ เรียกใชโ้ ดยใชค้ ียเ์ วิร์ด implement เพ่ือทาการเขียนรายละเอียดเน้ือหา
ของคาส่ังภายในเมธอดเองเพื่อให้ไดง้ านตามท่ีตอ้ งการโดยมีหนา้ ท่ี พารามิเตอร์และค่ารีเทิร์นไทป์
ใหเ้ ป็นไปตามที่อินเทอร์เฟสกาหนดไว้
ความสัมพนั ธ์แบบแอสโสสิเอชัน
กิติพงษ์ กลมกล่อม (2552, หน้า 28) กล่าวว่าความสัมพนั ธ์แบบแอสโสสิเอชัน เป็ น
ความสมั พนั ธ์พ้ืนฐานท่ีสุดท่ีส่ิงต่างๆ ในโลกจะมีต่อกนั ไดค้ ือความเท่าเทียมกนั ไม่ใช่องคป์ ระกอบ
ของกนั ตวั อยา่ งความสมั พนั ธ์ที่พบบอ่ ยเช่น คนเป็นเจา้ ของรถยนต์ แม่มีลูก สามีรักภรรยา ดินสออยู่
ในกระเป๋ า ประธานบริษทั บริหารกิจการ เป็ นตน้ ถา้ กล่าวตามแนวทางเชิงวตั ถุเรียกความสัมพนั ธ์
แบบน้ีวา่ แอสโสสิเอชนั (Association Relationship)
46
พนิดา พานิชกุล (2548, หนา้ 87) กล่าววา่ การท่ีวตั ถุหน่ึงๆ ประกอบข้ึนจากวตั ถุอ่ืนหลาย
วตั ถุน้นั กค็ ือการท่ีวตั ถุต่างๆ มาทางานร่วมกนั นนั่ เอง ซ่ึงหากการทางานร่วมกนั ดงั กล่าวน้ีทุกวตั ถุมี
ความสาคญั เทา่ เทียมกนั (ไมม่ ีการข้ึนแก่กนั ของวตั ถุ) จะถูกเรียกวา่ แอสโสสิเอชนั
ดงั น้นั ความสัมพนั ธ์แบบแอสโสสิเอชนั เป็นความสมั พนั ธ์ที่ใชแ้ สดงการทางานร่วมกนั ของ
คลาสต่างๆ ท่ีไม่ข้ึนต่อกนั ซ่ึงกล่าวไดว้ ่าเป็ นความสัมพนั ธ์แบบทว่ั ไปซ่ึงไม่ไดม้ ีส่วนข้ึนต่อกนั
ในทางใดโดยตรง แต่อาจพิจารณาในความสัมพนั ธ์ลกั ษณะทางจานวนของวตั ถุท่ีสามารถมีไดใ้ น
ระบบของแต่ละคลาส ตวั อยา่ งการใชส้ ญั ลกั ษณ์ดงั น้ี
1…* 1
ภาพท่ี 2.36 แสดงความสมั พนั ธ์ของคลาสครูกบั โรงเรียน
จากภาพที่ 2.36 อธิบายไดว้ า่ คลาส Teacher และคลาส School ไม่ไดข้ ้ึนต่อกนั ในเชิง
ประกอบเพราะต่างกม็ ีแอตทริบิวตแ์ ละเมธอดตา่ งกนั ท่ีสามารถทางานไดอ้ ยา่ งเป็ นอิสระ ไม่มีคลาส
ใดสาคญั กว่ากนั แต่หากเมื่อนามาใชร้ ่วมกนั ในการเขียนโปรแกรมระบบแล้ว จะพบว่าท้งั คู่อาจ
เกี่ยวพนั กนั ในลกั ษณะของจานวนของวตั ถุต่างๆ ที่จะเกิดข้ึนในระบบ เช่น หากพิจารณาแลว้ จะ
พบว่าโรงเรียนหน่ึงโรงเรียน (School) หน่ึงโรงเรียนอาจมีครู (Teacher) ได้ต้งั แต่หน่ึงคนจนถึง
หลายๆ คน เป็นตน้
ความสัมพนั ธ์แบบคอมโพสสิชัน
กิติพงษ์ กลมกล่อม (2552, หนา้ 87) กลาววา่ คอมโพสสิชนั ซ่ึงมีคุณสมบตั ิที่พิเศษกว่า
แอคกรีเกชนั ทว่ั ไป กล่าวคือการดารงอยขู่ องคลาสท้งั หมด (Whole class) จะมีผลโดยตรงต่อการมี
อยขู่ องส่วนคลาส (Part class) ตวั อยา่ ง เช่น โปรแกรมประยุกต์ (Application) บนระบบปฏิบตั ิการ
วนิ โดว์ (Window) มี ApplicationForm จะมีอยไู่ มไ่ ด้ ถา้ ไม่มีโปรแกรมประยุกตอ์ ยู่ AppicationForm
ก็จะถูกทาลายไปลงดว้ ย
พนิดา พานิชกลุ (2548, หนา้ 117) ไดก้ ล่าววา่ แอคกรีเกชนั ชนิดพิเศษคือคอมโพสสิชนั ซ่ึง
กล่าววา่ เป็นการทางานร่วมกนั ระหวา่ งคลาสท่ีมีระดบั การข้ึนแก่กนั ของคลาสสูงสุดหากคลาสหลกั
(Whole) ไมม่ ีอยหู่ รือถูกทาลายไปคลาสยอ่ ย (Part) ก็จะถูกทาลายไปดว้ ย
47
ดงั น้นั คอมโพสสิชันเป็ นความสัมพนั ธ์แบบที่ใช้แสดงความสัมพนั ธ์ของคลาสแบบเป็ น
องคป์ ระกอบท่ีสาคญั ที่ขาดไม่ได้ และมุ่งเนน้ ในการพิจารณาในเร่ืองของการใชง้ านวตั ถุท่ีผลต่อกนั
เมื่อมีการสร้างและทาลายวตั ถุเมื่อวตั ถุแม่สร้างวตั ถุลูกและหากวตั ถุของแม่ถูกทาลายจะทาให้ลูกถูก
ทาลายดว้ ย ตวั อยา่ งการใชง้ านสญั ลกั ษณ์น้ีดงั น้ี
ภาพที่ 2.37 แสดงตวั อยา่ งการใชส้ ญั ลกั ษณ์คอมโพสสิชนั
จากภาพท่ี 2.37 อธิบายไดว้ า่ ตวั อย่างของความสัมพนั ธ์ให้ความสาคญั กบั ส่วนประกอบ
ต่างที่จะรวมกนั เขา้ เป็ นคลาสหลกั เช่น Computer ที่จะตอ้ งมี CPU Mainboard Case และ Display
ซ่ึงในความหมายน้ีแมห้ ากขาดส่วนใดส่วนหน่ึงก็จะทาให้คลาส Computer มีปัญหาไม่สามารถ
ทางานได้ หรือหากคลาส Computer เสียหายหรือถูกทาลายไป คลาสองค์ประกอบต่างๆ ก็ไม่
สามารถทางานประสานกนั ไดเ้ ปรียบเสมือนถูกทาลายไปดว้ ย เป็นตน้
ความสัมพนั ธ์แบบแอคกรีเกชัน
กิติพงษ์ กลมกล่อม (2552, หนา้ 86) กล่าวถึง แอคกรีเกชนั คือ สิ่งท่ีกาหนดความสัมพนั ธ์
ระหว่างคลาสในลกั ษณะของการเป็ นองค์ประกอบโดยคลาสท่ีเป็ นองค์ประกอบเรียกว่า “Part
class” ส่วนคลาสท่ีเกิดจากการรวมกนั ขององคป์ ระกอบต่างๆ เรียกวา่ “Whole class” ในภาษายเู อ็ม
แอล จะเรียกว่าแอคกรีเกชนั ไดเ้ ช่นเดียวกบั แอสโสสิเอชนั ส่วนพนิดา พานิชกุล (2548, หนา้ 32)
กล่าววา่ การท่ีวตั ถุยอ่ ยหลายๆ วตั ถุถูกนามาประกอบกนั เขา้ กบั วตั ถุหลกั 1 ตวั เพื่อใหส้ ามารถทางาน
บางอย่างได้ แสดงว่าวตั ถุหลกั น้นั มีความสาคญั กว่าวตั ถุย่อยอ่ืนๆ ดงั น้นั จะเรียกว่าแอคกรีเกชัน
อยา่ งไรก็ตามวตั ถุยอ่ ยอื่นๆ และวตั ถุหลกั ต่างมีอิสระ ต่อกนั (หากวตั ถุหลกั เกิดความเสียหายจะไม่
ส่งผลกระทบตอ่ วตั ถุยอ่ ยท้งั หมด)
ดงั น้นั แอคกรีเกชนั คือความสัมพนั ธ์แบบการเรียกใชเ้ ป็ นแบบเชิงประกอบเช่นเดียวกนั กบั
คอมโพสสิชนั แต่ไมไ่ ดใ้ หค้ วามสาคญั กบั การสร้างและการทาลายวตั ถุ ซ่ึงเมื่อตวั สร้างถูกทาลายตวั
วตั ถุลูกอาจยงั ไมถ่ ูกทาลายก็ได้ ตวั อยา่ งของการสัญลกั ษณ์น้ีดงั น้ี
48
ภาพที่ 2.38 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของแอคกรีเกชนั
จากภาพ 2.38 มีคลาส Account ท่ีประกอบดว้ ยส่วนประกอบ PrintReport ShowBalance
และคลาส Customer ซ่ึงหากพิจารณาแล้วพบว่าบญั ชี (Account) น้ันมีส่วนอื่นๆ ท่ีอยู่กนั แบบ
หลวมๆ ไม่ตอ้ งกาหนดตายตวั วา่ จะตอ้ งบงั คบั เหมือนความสัมพนั ธ์แบบคอมโพสสิชนั กล่าวคือ
หากคลาส PrintReport ถูกทาลายหรือเสียหายไปก็อาจส่งผลเสียต่อคลาส Account นอ้ ยมากหรือ
หากคลาส Account ถูกทาลายไป คลาสลูกคา้ (Customer) ก็มิไดส้ ่งผลใหถ้ ูกทาลายไปดว้ ย เป็นตน้
ยูสเคสไดอะแกรม
ยสู เคสเป็นแผนภาพท่ีใชแ้ สดงถึงข้นั ตอนการทางานที่สาคญั ของระบบ อาจกล่าวไดว้ า่ เป็ น
หน้าท่ีหรืองานท่ีระบบตอ้ งปฏิบตั ิเพ่ือตอบสนองต่อผูก้ ระทาต่อระบบ โดยยูสเคสไดอะแกรมจะ
แสดงความสัมพนั ธ์ระหวา่ งยูสเคส แอคเตอร์ ดว้ ย ซ่ึงยูสเคสและแอคเตอร์จดั ว่าเป็ นคลาสชนิด
พเิ ศษ (พนิดา พานิชกลุ , 2548, หนา้ 213)
ส่วนวิกิพีเดีย (Wikipedea, 2011, J) ระบุวา่ ยสู เคสเป็ นชนิดของไดอะแกรมประเภทแสดง
พฤติกรรมซ่ึงถูกกาหนดและสร้างจากการวิเคราะห์ยูเคสเป้ าหมายเพ่ือแสดงฟังกช์ นั งานของระบบ
ดว้ ยกราฟิ กท่ีจดั เตรียมไวใ้ นแง่มุมของแอคเตอร์ โดยใชร้ ูปคนแทนตวั กระทาน้นั และส่ิงที่กระทาต่อ
กนั ระหวา่ งยสู เคสท้งั หมด ท้งั น้ีบทบาทของผกู้ ระทาตอ้ งสามารถทานายได้ ส่วนเวบ็ ไซด์ของติว
เตอร์เรียลพอยต์ (“UML Use Case Diagram”, 2011) ไดก้ ล่าวถึงเป้ าหมายของยสู เคสไวด้ งั น้ี
1. ใชเ้ ป็นท่ีรายงานความตอ้ งการของระบบ
2. ใชเ้ ก็บมุมมองภายนอกของระบบ
3. ใชก้ าหนดปัจจยั ภายในและภายนอกของระบบ
4. ใชแ้ สดงปฏิสัมพนั ธ์ระหวา่ งความตอ้ งการของระบบและผกู้ ระทา (Actor)
49
จากที่กล่าวมาสรุปไดว้ า่ ยสู เคสเป็นไดอะแกรมที่แทนดว้ ยแผนภาพของยเู อม็ แอลชนิดหน่ึง
มีหนา้ ที่แสดงพฤติกรรมของระบบ ปัจจยั ท้งั ภายในและภายนอก ที่มีปฏิสัมพนั ธ์กนั ซ่ึงถือไดว้ า่ ยสู
เคสเป็ นคลาสพิเศษอีกประเภทหน่ึงได้ ยูสเคสใช้แผนภาพแสดงปฏิสัมพนั ธ์ระหว่างแอคเตอร์
(Actor) หรือผูก้ ระทา กบั ยูสเคสซ่ึงเป็ นฟังก์ชันงานของระบบที่ได้จากความตอ้ งการของระบบ
โดยทวั่ ไปยูสเคสจะประกอบดว้ ย ยสู เคส ที่ใชว้ งรีเป็ นสัญลกั ษณ์และเขียนกระบวนการทางานไว้
ภายใน แอคเตอร์ ใชร้ ูปคนแทนการกระทาต่อระบบ และนอกจากน้นั ยงั มีเส้นความสัมพนั ธ์แบบอิน
คลูด (Include) เอกซ์เทนด์ (Extend) และเส้นแสดงการรับทอดแบบเจนเนอรอลไลเซชันและ
ความสัมพนั ธ์แบบแอสโสสิเอชนั รายละเอียดงั หัวขอ้ ส่วนประกอบของยสู เคส ข้นั ตอนของการ
เขียนยสู เคสของระบบสรุปไดด้ งั น้ี
1. กาหนดแต่กระบวนการของฟังกช์ นั งานดว้ ยวงรียสู เคสพร้อมเขียนชื่อใหเ้ หมาะสม
2. เขียนแอคเตอร์และกาหนดชื่อที่เหมาะสมใหก้ บั แอคเตอร์ท่ีมีส่วนเก่ียวของกบั ระบบ
3. แสดงความสมั พนั ธ์ท่ีข้ึนตอ่ กนั ตามท่ีระบบควรจะเป็น
4. ต้องไม่พยายามเพ่ิมความสัมพนั ธ์ให้ครบ กล่าวคือต้องใช้เท่าที่จาเป็ นและเป็ นจริง
เท่าน้นั
5. เขียนโนต้ เม่ือมีจุดสาคญั เช่นกระบวนการหรือยสู เคสที่สาคญั
ส่ วนประกอบของยูสเคส
พนิดา พานิชกุล (2548, หน้า 214) ระบุไวว้ ่า ส่วนประกอบของยูสเคสไดแ้ ก่ ยูสเคส
ใช้สัญลกั ษณ์วงรี ซ่ึงคือส่วนที่ทาหนา้ ท่ีรายงานส่ิงท่ีท่ีตอ้ งปฏิบตั ิ แอคเตอร์ คือ ผกู้ ระทาต่อระบบ
ใชส้ ญั ลกั ษณ์เป็ นรูปคน ขอบเขตของระบบ (System Boundary) คือเส้นแบ่งขอบเขตระหวา่ งระบบ
กับผูก้ ระทาต่อระบบ ใช้สี่เหล่ียมเป็ นสัญลักษณ์และองค์ประกอบสุดท้ายคือ ความสัมพนั ธ์
(Relationship) ได้แก่ความสัมพนั ธ์ระหว่างยูเคส เส้นลูกศรและเขียนสเตอริโอไทป์ (<<....>>)
ที่บอกให้ทราบถึงชนิดของความสัมพนั ธ์ตรงก่ึงกลางเส้นลูกศร โดยความสัมพนั ธ์ระหวา่ งยสู เคส
มีสองลกั ษณะคือ include และ use
สญั ลกั ษณ์ต่างๆ ท่ีมีใชส้ าหรับการเขียนยสู เคสมีดงั ตารางท่ี 2.1 น้ี
50
ตารางท่ี 2.1 แสดงสญั ลกั ษณ์ตา่ งๆ ของการเขียนยสู เคส
สัญลกั ษณ์ การใชง้ าน
ใชแ้ ทนผกู้ ระทาต่อระบบซ่ึงอาจเป็ นคน โปรแกรม
หรือระบบ
ใชแ้ ทนกระบวนการของกิจกรรมของระบบ
ใชแ้ ทนการรวมเม่ือมีการดาเนินกิจกรรมที่เรียก
ใชข้ ยายความสามารถของยสู เคสที่ช้ีไปเพ่อื นามาใช้
งานในยสู เคสของตนเอง
แสดงการรับทอดคุณสมบตั ิ
ใชแ้ สดงความสัมพนั ธ์แบบปกติ
ตวั อยา่ งยสู เคส แสดงความสัมพนั ธ์แบบตา่ งๆ และการใชง้ านสัญลกั ษณ์ต่างในตารางที่ 2.1
เพื่อแสดงจุดและวธิ ีการใชง้ าน
ภาพท่ี 2.39 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของยสู เคส
51
ซีเคว้นไดอะแกรม (Sequence Diagram)
พนิดา พานิชกุล (2548, หน้า 217) กล่าววา่ ซีเควน้ ไดอะแกรมเป็ นแผนท่ีแสดงให้เห็น
ปฏิสัมพนั ธ์ (Interaction) ระหว่างวตั ถุโดยเฉพาะการส่งเมจเซจ ระหว่างวตั ถุตามลาดบั ของเวลา
(Sequence) ท่ีเกิดเหตุการณ์ข้ึนจากนอ้ ยไปมาก
ซีเควน้ ไดอะแกรมจะแสดงลาดบั การทางานโดยวตั ถุและเวลาเป็ นตวั กาหนดลาดบั ของงาน
และเน้นไปที่ตวั อย่างของวตั ถุ (Instant) ของวตั ถุ ซีเควน้ ไดอะแกรมเป็ นไดอะแกรมซ่ึงแสดง
ปฏิสัมพนั ธ์ (Interaction) ระหว่างวตั ถุ ตามลาดบั ของเหตุการณ์ที่เกิดข้ึน ณ เวลาท่ีกาหนดเมสเซจ
(Message) ท่ีเกิดข้ึนระหวา่ งคลาสจะสามารถนาไปสู่การสร้างเมธอดในคลาสที่เกี่ยวขอ้ งได้ (“การ
เขียนโปรแกรมเชิงวตั ถุและยเู อม็ แอล”, 2011)
ดงั น้ันซีเควน้ ไดอะแกรมคือแผนภาพท่ีแสดงการเกิดและการติดต่อกันระหว่างวตั ถุท่ี
เกิดข้ึนในระบบตามลาดบั ของเวลาทีเกิดข้ึน โดยมีส่วนประกอบดงั ตารางที่ 2.2
ข้นั ตอนการเขียนซีเควน้ ไดอะแกรมมีดงั น้ี
1. พจิ ารณายสู เคสที่ตอ้ งการเขียนซีเควน้ ไดอะแกรม โดยทวั่ ไปแลว้ จานวนของซีเควน้
ไดอะแกรมจะเทา่ กบั จานวนของยสู เคสหลกั ของระบบ
2. เขียนวตั ถุของคลาส หรือหากไม่ทราบช่ือของวตั ถุกส็ ามารถเขียนเพียงชื่อคลาสกไ็ ด้
3. เขียนเส้นชีวติ ของแต่ละวตั ถุ
4. เขียนการส่ือสารแบบตา่ งๆ ระหวา่ งวตั ถุเหล่าน้นั
ตวั อยา่ งการใชง้ านสัญลกั ษณ์ตา่ งๆ ในการเขียนซีเควน้ ไดอะแกรม
ภาพท่ี 2.40 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของซีเควน้ ไดอะแกรม
52
ตารางท่ี 2.2 แสดงสัญลกั ษณ์ท่ีใชส้ ร้างซีเควน้ ไดอะแกรม
สัญลกั ษณ์ การใชง้ าน
การแสดงการถูกสร้างเป็ นวตั ถุของแอคเตอร์
Actor และ Object การนาคลาสใดๆ มาสร้างเป็ นวตั ถุ โดยระบุ ชื่อ
Object วตั ถุ : ชื่อคลาส
ใชแ้ สดงเส้นชีวติ ของวตั ถุท่ีสร้างข้ึน
Life Line ใชแ้ สดงจุดจบหรือการถูกทาลายของวตั ถุที่
Object Terminate สร้างข้ึน
ใชแ้ สดงการส่งเมจเซจไปยงั วตั ถุดว้ ยการ
Message กระตุน้ เมธอดหรือการผา่ นค่าพารามิเตอร์
ใชส้ าหรับการเรียกใชง้ านเมธอดปกติ
Call Method
ใชส้ าหรับการเรียกใชง้ านตนเองหรือเรียกใช้
งานเมธอดในวตั ถุของตนเอง
Callback/Self Delegation ใชส้ าหรับการเรียกใชง้ านและคืนคา่ กลบั ไปยงั
Return วตั ถุที่มีการเรียก
Messag
คอลแลบบอเรชันไดอะแกรม
พนิดา พานิชกุล (2548, หนา้ 219) กล่าวไวว้ า่ คอลแลบบอเรชนั ไดอะแกรมเป็ นแผนภาพ
แสดงถึงปฏิสัมพนั ธ์เช่นเดียวกบั ซีเควน้ ไดอะแกรมแต่ต่างกนั ตรงท่ีการเรียก จะไม่แสดงถึงลาดบั
การส่งเมสเซจอยา่ งชดั เจน แต่จะเนน้ ส่วนการแสดงถึงความสัมพนั ธ์ระหวา่ งวตั ถุตามลกั ษณะการ
ทางาน
53
ส่วนกิติพงษ์ กลมกล่อม (2552, หน้า 219) กล่าวว่า คอลแลบบอเรชนั ไดอะแกรมมุ่งเนน้
แสดงกิจกรรมความสัมพนั ธ์ท่ีเกิดข้ึนในระบบพร้อมๆ กนั กบั การแสดงความสัมพนั ธ์ระหวา่ งวตั ถุ
ต่างๆ ที่มีส่วนร่วมอยใู่ นกิจกรรมเหล่าน้นั ดว้ ย ซ่ึงภายในไดอะแกรมจะประกอบดว้ ยกลุ่มของวตั ถุ
กลุ่มของเมสเซจ ซ่ึงถูกกากบั ดว้ ยลาดบั ของกิจกรรมและลิงค์ (Link) ซ่ึงแสดงความสัมพนั ธ์ระหวา่ ง
วตั ถุ
ส่วนในเรื่องการเขียนโปรแกรมเชิงวตั ถุและยเู อ็มแอล (“การเขียนโปรแกรมเชิงวตั ถุและ
ยูเอ็มแอล”, 2011) ได้กล่าวถึงคอลแลบบอเรชนั ไดอะแกรมไวว้ ่า คอลแลบบอเรชันไดอะแกรม
แสดงลาดบั การทางานของวตั ถุ ผเู้ ก่ียวขอ้ ง และกิจกรรมโดยลาดบั การทางานไม่ข้ึนกบั เวลา เพราะ
การแสดงความสัมพนั ธ์ของวตั ถุกบั เวลาเป็ นหน้าท่ีของซีเควน้ ไดอะแกรม ส่วนคอลแลบบอเรชนั
ไดอะแกรมจะแสดงเหตุการณ์เกี่ยวกบั การแสดงผลของเคร่ืองคอมพวิ เตอร์
ดงั น้ันคอลแลบบอเรชันไดอะแกรม คือ แผนภาพท่ีแสดงความสัมพนั ธ์ของวตั ถุ ตาม
กิจกรรมท่ีดาเนินการ โดยมุ่งเน้นแสดงให้เห็นถึงการส่งเมสเซจมากกวา่ ลาดบั ของเหตุการณ์ โดย
สญั ลกั ษณ์ท่ีสาคญั ที่จะถูกนามาใชง้ านเป็นดงั ตารางที่ 2.3
ตารางท่ี 2.3 แสดงสัญลกั ษณ์ที่สาคญั ของคอลแลบบอเรชนั ไดอะแกรม
สญั ลกั ษณ์ การใชง้ าน
กาหนดวตั ถุเพ่ือแสดงความสัมพนั ธ์
ใชเ้ ชื่อมโยงเพื่อแสดงการส่งเมสเซจ
การส่งเมสเซจของวตั ถุ
ตวั อยา่ งการใชง้ านสัญลกั ษณ์ของคอลแลบบอเรชนั ไดอะแกรมแสดงดงั ภาพที่ 2.41
54
ภาพท่ี 2.41 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของคอลแลบบอเรชนั
สเตทชาร์ตไดอะแกรม
วิกิพีเดีย (Wikipedia, 2011, I) กล่าวว่าสเตทชาร์ตไดอะแกรม คือแนวคิดของ
ออโตเมตนั แมชชีน (Automaton Machine) ที่มีความสาคญั และนาไปใชง้ านจริงซ่ึงนามาประยุกตใ์ ช้
ในสญั ลกั ษณ์ของยเู อม็ แอล โดยแนวคิดทวั่ ไปจะเกี่ยวกบั สถานะของการประมวลผลซ่ึงไม่ไดม้ ีเพียง
สถานะเดียว อาจประกอบดว้ ย เหตุการณ์ (Event) สถานะ (State) เง่ือนไข (Condition) การกระทา
(Action) และเส้นทางเช่ือมตอ่ (Transition) เป็นตน้
กิติพงษ์ กลมกล่อม (2552, หน้า 252-253) ไดก้ ล่าววา่ สเตทชาร์ตไดอะแกรมคือเง่ือนไข
หรือสถานการณ์ที่เป็ นอยู่ในขณะใดขณะหน่ึงที่วัตถุหน่ึงๆ มีตัวตนอยู่ ซ่ึงจะประกอบด้วย
องคป์ ระกอบดงั น้ี
- การเปลี่ยนสถานะ (Transition) คือ ความสัมพนั ธ์ระหวา่ งสเตทสองสเตทซ่ึงเป็ นส่ิงท่ี
บ่งช้ีวา่ วตั ถุท่ีอยใู่ นสถานะหน่ึงจะเปล่ียนไปสู่อีกสถานะหน่ึง
- สถานะตน้ ทาง (Source State) คือสถานะของวตั ถุก่อนท่ีจะไดร้ ับผลจากการเปล่ียน
สถานะ
- สถานะเป้ าหมาย (Target State) คือ สถานะของวตั ถุหลงั เกิดการเปลี่ยนสถานะข้ึนแลว้
- เหตุการณ์กระตุน้ (Event Trigger) คือ ส่ิงท่ีทาหนา้ ท่ีกระตุน้ ใหเ้ กิดการเปล่ียนสถานะ
- เงื่อนไขปกป้ อง (Guard Condition) คือ เงื่อนไขที่ระบุวา่ เมื่อใดหรือดว้ ยเงื่อนไขใดที่
เหตุการณ์กระตุน้ หน่ึงๆ จะเกิด
- การกระทา (Action) คือ การประมวลผลที่เกิดข้ึนกบั วตั ถุซ่ึงเป็นผลมาจากเส้นทางหน่ึงๆ
พนิดา พานิชกุล (2548, หนา้ 220-221) กล่าวว่า สเตทชาร์ตไดอะแกรมเป็ นแผนภาพที่
แสดงให้เห็นพฤติกรรมของวตั ถุเช่นเดียวกนั กบั แผนภาพกลุ่มพฤติกรรม (Behavioral Diagram)
55
อื่นๆ ไดแ้ ก่สเตทชาร์ต จะเนน้ ท่ีการแสดงใหเ้ ห็นถึงสถานะ(State) การเปลี่ยนสถานะ(Transition) ท่ี
มีต่อเหตุการณ์ (Event) ที่เกิดข้ึนในช่วงชีวติ ของวตั ถุหน่ึงช่วง (1 Sequence) สัญลกั ษณ์ที่ใชใ้ นสเตท
ชาร์ตมีดงั น้ี สถานะเร่ิม (Initial State) คือ จุดเริ่มตน้ ของการเปล่ียนสถานะ สถานะสุดทา้ ยหรือจบ
(Final State) คือสิ้นสุดของการเปลี่ยนสถานะ เส้นกระตุน้ ให้เปลี่ยนสถานะ (Transition) สถานะ
(State) คือ สถานะของวตั ถุ
จากที่กล่าวมาสรุปไดว้ า่ สเตทชาร์ตไดอะแกรม คือ แผนภาพที่แสดงถึงพฤติกรรมของวตั ถุ
ท่ีบอกเกี่ยวกบั สถานะ การเปล่ียนสถานะของวตั ถุเหล่าน้นั โดยอาศยั การกระตุน้ กนั ไปอยา่ งต่อเนื่อง
จากสถานะเริ่มตน้ จนถึงสถานะจบ สัญลกั ษณ์ที่ใช้ในการเขียนสเตทชาร์ตไดอะแกรมแสดงดงั
ตารางท่ี 2.4
ตารางที่ 2.4 แสดงสัญลกั ษณ์ของสเตทชาร์ตไดอะแกรม
สัญลกั ษณ์ การใชง้ าน
ส ถ านะ เริ่ มต้นใ ช้ส า หรั บก ารเร่ิ มต้นขอ ง
ไดอะแกรม
สถานะสาหรับอธิบายพฤติกรรมของการเป็ นอยู่
หรือเปลี่ยนแปลงไป
สถานะสิ้นสุดหรือจบกระบวนการ
เส้นแสดงการเปลี่ยนสถานะ
กาหนดเง่ือนไขเพ่ือเป็ นทางเลือกของการเปลี่ยน
สถานะ
ตวั อยา่ งการใชง้ านสัญลกั ษณ์ต่างๆ ดงั กล่าวแสดงดงั ภาพท่ี 2.42
ภาพที่ 2.42 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของสเตทชาร์ตไดอะแกรม
56
แอคติวติ ีไดอะแกรม
แอคติวิตีไดอะแกรม เป็ นแผนภาพท่ีแสดงใหเ้ ห็นลาดบั การดาเนินกิจกรรม (Activity) จาก
กิจกรรมหน่ึงไปยงั กิจกรรมหน่ึงในระบบท่ีเกิดจากการทางานของวตั ถุลกั ษณะของแผนภาพคลา้ ย
กบั โฟลชาร์ต (Flowchart) (พนิดา พานิชกลุ , 2548, หนา้ 221)
ส่วนใน “การเขียนโปรแกรมเชิงวตั ถุและยูเอ็มแอล” (2011) ระบุว่าแอคติวิตีไดอะแกรม
แสดงลาดบั กจิกรรมของการทางาน (Work Flow) สามารถแสดงทางเลือกที่เกิดข้ึนได้ โดยแสดงข้นั
การทางานในการปฏิบตั ิการ โดยประกอบไปดว้ ยสถานะต่างๆ ท่ีเกิดข้ึนระหวา่ งการทางานและผล
จากการทางานในข้นั ตอนต่างๆ
ในเวบ็ ของติวเตอร์เรียลพ้อยต์ (“Activity Diagram”, 2011) กล่าววา่ แอคติวิตีไดอะแกรม
คือไดอะแกรมอีกอย่างที่สาคญั ในยูเอ็มแอลเพ่ืออธิบายมุมมองของระบบ ซ่ึงก็คือผงั การทางาน
(Flowchart) พ้ืนฐานที่แสดงการไหลจากกิจกรรมหน่ึงไปยงั อีกกิจกรรมหน่ึง ดงั น้นั การควบคุมคือ
การเขียนจากตวั ดาเนินการหน่ึงไปยงั ตวั อ่ืนๆ การไหลน้ีสามารถแสดงตามลาดบั (Sequential) แบบ
กิ่งกา้ น (Branched) หรือกระทาพร้อมๆ กนั (Concurrent) ได้ แอคติวติ ีไดอะแกรมสามารถใชง้ านได้
โดยอิลิเมนต์ท่ีแตกต่างกนั ดงั เช่น ฟอร์ก (Fork) จอย (Join) ฯลฯ เป้ าหมายของแอคติวิตีคือการจบั
พฤติกรรมของระบบโดยสรุปไดด้ งั น้ี
1. เขียนการไหลของกิจกรรมของระบบ
2. อธิบายลาดบั จากกิจกรรมหน่ึงไปยงั กิจกรรมหน่ึง
3. อธิบายการไหลแบบคูข่ นาน (Parallel) ก่ิงกา้ นและการทาพร้อมกนั (Branched and
Concurrent) ของระบบ
นอกจากน้ีเวบ็ ไซดน์ ้ียงั กล่าวถึงรายละเอียดสัญลกั ษณ์ท่ีเก่ียวขอ้ งไวด้ งั น้ี
1. กิจกรรม (Activity)
2. ความสัมพนั ธ์ (Association)
3. ขอ้ บงั คบั (Constrains)
4. เงื่อนไข (Conditions)
ดงั น้นั จากที่กล่าวมา สรุปไดว้ า่ แอคติวิตีไดอะแกรม เป็ นแผนภาพที่อธิบายพฤติกรรมของ
ระบบในแง่ของการดาเนินไปของกิจกรรมต่างๆ ของระบบท่ีมีท้งั ตามลาดบั เง่ือนไข และแบบ
ขนานกนั ซ่ึงสัญลกั ษณ์ที่ใชม้ ีดงั ตารางที่ 2.5
57
ตารางท่ี 2.5 แสดงสัญลกั ษณ์ท่ีใชใ้ นแอคติวิตีไดอะแกรม
สญั ลกั ษณ์ การใชง้ าน
ใช้สาหรับแสดงกิจกรรมท่ีดาเนินไป
ของแอคติวติ ีไดอะแกรม
Innovation โหนดเร่ิมตน้ ของกระบวนการ
Initial Node โหนดสุดทา้ ย
Activity Final Node จุดสิ้นสุดของการไหล
Flow Final
Horizontal Fork Vertical Fork การประมวลผลแบบขนานในแนวนอน
และแนวต้งั
ใชเ้ ป็นเง่ือนไขเพ่ือเลือกตดั สินใจ
Condition
ตวั อยา่ งการใชง้ านสัญลกั ษณ์ของแอคติวติ ีไดอะแกรม แสดงดงั ภาพที่ 2.43
ภาพท่ี 2.43 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของแอคติวติ ีไดอะแกรม
58
คอมโพเนนต์ไดอะแกรม
กิติพงษ์ กลมกล่อม (2552, หน้า 277-280) กล่าววา่ ในยูเอ็มแอลจะใช้คอมโพเนนต์
ไดอะแกรมเป็ นเคร่ื องมือในการออกแบบคอมโพเนนต์และแสดงความสัมพันธ์ระหว่าง
คอมโพเนนตโ์ ดยมีองคป์ ระกอบ 3 สิ่งคือ คอมโพเนนต์ อินเทอร์เฟส และลิงค์
คอมโพเนนต์ถูกนามาใช้สร้ างแบบจาลองของระบบท่ีใช้งานได้จริ ง (Static
ImplementationView) ซ่ึงแบบจาลองน้ีจะมีบทบาทในการวางแผนผงั ซอฟตแ์ วร์ของระบบเพื่อการ
สร้างตัวระบบที่ใช้งานจริงและมีประสิทธิภาพข้นั สูงสุด โดยปกติแล้วจะใช้คอมโพเนนต์ทา
ซอร์สโคด้ (Source Code) เช่นแฟ้ ม .java, .cpp, .exe, .dll และการเก็บขอ้ มูลเชิงกายภาพ (Physical
Data Store)
พนิดา พานิชกลุ (2548, หนา้ 226-227) อธิบายไวว้ า่ คอมโพเนนตไ์ ดอะแกรมเป็ นแผนภาพ
ท่ีแสดงถึงโครงสร้างทางกายภาพของโปรแกรม ประกอบด้วยส่วนประกอบต่างๆ ท่ีเรียกว่า
“Component” ซ่ึงหมายถึง ส่วนประกอบของซอฟต์แวร์ของระบบท้งั หมด ส่วนใหญ่มกั จะแสดง
ไฟลท์ ่ีเป็นซอร์สโคด้ ไฟลไ์ บนารี ซ่ึงเป็นไฟลท์ ี่สามารถรันได้ (Executable Program)
จากท่ีกล่าวมา สรุปไดว้ า่ คอมโพเนนตไ์ ดอะแกรม เป็ นแผนภาพท่ีแสดงความสัมพนั ธ์ของ
คอมโพเนนตซ์ ่ึงคือโปรแกรมท่ีอยใู่ นรูปแบบของซอร์สโคด้ หรือไฟลท์ ี่สามารถทางานได้ หรืออาจ
เป็ นแฟ้ มทางฐานขอ้ มูล โดยสัญลกั ษณ์ของการใช้งานแสดงดงั ภาพที่ 2.7 และแสดงตวั อยา่ งของ
คอมโพเนนตไ์ ดอะแกรมที่สร้างโดยโปรแกรมเน็ตบีน ดงั ภาพที่ 2.44
ภาพท่ี 2.44 แสดงตวั อยา่ งการใชส้ ัญลกั ษณ์ของคอมโพเนนตไ์ ดอะแกรม
59
เดพพลอยเมนต์ไดอะแกรม
ติวเตอร์เรียลพอ้ ยต์ (“Deployment Diagram”, 2011) กล่าววา่ เดพพลอยเมนตถ์ ูกใชส้ าหรับ
การสร้างโครงสร้างการออกแบบของคอมโพเนนตใ์ นเชิงกายภาพเม่ือซอฟตแ์ วร์ถูกติดต้งั โดยเดพ
พลอยเมนต์จะอธิบายมุมมองการติดต้งั แบบถาวร โดยใช้สัญลักษณ์ของโหนด (Node) และ
ความสมั พนั ธ์ของมนั
พนิดา พานิชกุล (2548, หนา้ 229) กล่าวไวว้ า่ เดพพลอยเมนต์ไดอะแกรมเป็ นแผนภาพ
แสดงโครงสร้างทางฮาร์ดแวร์ของระบบงานส่วนใหญ่จะใช้ร่วมกบั คอมโพเนนต์ไดอะแกรมโดย
การมองอุปกรณ์ฮาร์ดแวร์ท้งั หมดเป็นวตั ถุหรือคลาสอยา่ งหน่ึง
จากท่ีกล่าวมาสรุปไดว้ า่ เดพพลอยเมนตไ์ ดอะแกรม หมายถึง ระบบที่ใชแ้ สดงโครงสร้าง
เชิงสถาปัตยกรรมท้งั ดา้ นฮาร์ดแวร์และซอฟตแ์ วร์ ของระบบโดยแทนสิ่งต่างๆ เหล่าน้ีดว้ ยโหนด
และเขียนความสัมพนั ธ์ระหวา่ งโหนดเหล่าน้นั เพื่อใหเ้ ห็นวา่ เมื่อนาไปติดต้งั แลว้ จะมีโครงสร้างเป็ น
อยา่ งไร สัญลกั ษณ์ของโหนดดงั แสดงในภาพท่ี 2.8 ตวั อยา่ งการใชง้ านของไดอะแกรมน้ีดงั ภาพที่
2.45
ภาพที่ 2.45 แสดงตวั อยา่ งการใชเ้ ดพพลอยเมนไดอะแกรม
ไวยากรณ์ของยูเอม็ แอล
ไซมอล เคนดลั (Simol Kendal, 2009, p. 29) ไดอ้ ธิบายไวยากรณ์ของยเู อม็ แอลไวว้ า่
แอตทริบิวต์ (Attribute) ควรแสดงส่วนการมองเห็น (Visibility) เป็ น Visibility name : type
multiplicity โดยที่ ส่วนการมองเห็นตอ้ งเป็นหน่ึงใน
- ‘+’ หมายถึง public
- ‘-’ หมายถึง private
60
- ‘#’ หมายถึง protected
- ‘~’ หมายถึง package
และมลั ติพลิซิตี (Multiplicity) เป็นหน่ึงใน
- ‘n’ หมายถึง n คา่
- ‘*’ หมายถึง 0 หรือมากกวา่ น้นั
- ‘m..n’ หมายถึง ระหวา่ ง m และ n คา่
นอกจากน้นั ไซมอล ยงั ไดย้ กตวั อยา่ งแอตทริบิวตไ์ วด้ งั น้ี
-curRef:int[1] เป็นแอตทริบิวตแ์ บบ private ที่เป็นตวั เลขจานวนเตม็ หน่ึงคา่
#itemCode:String[1…*] เป็ นสตริงแบบ protected ที่มีความยาวอยา่ งนอ้ ยหน่ึง
ตวั อกั ษร
validCard:boolean เป็นคา่ บูลีนแบบ public
กิติพงษ์ กลมกล่อม (2552, หนา้ 14-15) กล่าววา่ ไวยากรณ์ของยเู อม็ แอล มีหน้าท่ีในการ
สร้างข้อกาหนดต่างๆ เพื่อให้แบบจาลอง (Model) ที่สร้างข้ึนมีการจดั วางท่ีดี เข้าใจง่ายเรียก
แบบจาลองที่มีคุณลักษณะดังกล่าวว่า เวลฟอร์มโมเดล (Well-formed Model) ไวยากรณ์
ประกอบดว้ ยกฎ 2 ชุดคือ กฎการใหค้ วามหมาย (Semantic Rules) และกฎของเวลฟอร์มโมเดล
ส่วนพนิดา พานิชกุล (2548, หน้า 231-232) กล่าวว่า ในยูเอ็มแอลเราไม่สามารถนา
องคป์ ระกอบท้งั 3 ส่วน (Things, Relationships และ Diagram) มาผสมผสานตามความตอ้ งการได้
เนื่องจากยมู าผสมผสานตามความตอ้ งการได้ เนื่องจากยเู อ็มแอลมีลกั ษณะเหมือนกบั ภาษาทว่ั ไป
คือ จะตอ้ งมีขอ้ กาหนดของการผสมผสานคาและการให้ความหมายของคา (ส่วนประกอบต่างๆ)
ท้งั น้ีเพื่อทาให้แบบจาลองที่มีโครงสร้างในการจดั วางที่ดี เขา้ ใจง่ายถูกตอ้ งและเป็ นมาตรฐาน
ขอ้ กาหนดดงั กล่าว เรียกวา่ “ไวยากรณ์ (Syntax)” ซ่ึงแบ่งกฎออกเป็ น 2 ชุดไดแ้ ก่ กฎแห่งการให้
ความหมาย (Semantic Rule) และเวลฟอร์มโมเดล (Well-formed Model)
จากที่กล่าวมาแลว้ สรุปไดว้ า่ ไวยากรณ์ของยเู อม็ แอลหมายถึง กฎขอ้ บงั คบั เพื่อใหแ้ ผนภาพ
ท่ีเขียนออกมามีโครงสร้างท่ีดี เขา้ ใจง่าย ถูกตอ้ งเป็ นไปตามมาตรฐาน โดยทวั่ ไปแลว้ ไวยากรณ์ถูก
แบ่งออกเป็ น 2 ชุดคือกฎท่ีว่าดว้ ยความหมาย (Semantic Rule) และการจดั แบบจาลองที่ดี (Well-
formed Model)
ต่อไปน้ีจะนาเสนอรายละเอียดเก่ียวกบั กฎของการให้ความหมายและรูปแบบของการ
กาหนดใหอ้ ยใู่ นแบบจาลองที่ดี
61
กฎของการให้ความหมาย
ท้งั พนิดา พานิชกลุ (2548, หนา้ 232) และ กิติพงษ์ กลมกล่อม (2548, หนา้ 14) ไดก้ ล่าวไว้
ตรงกนั วา่ กฎของการใหค้ วามหมายไวด้ งั น้ี
- Name สาหรับทุกๆ Things, Relationships และ Diagram ตอ้ งมีช่ือและตอ้ งถูกตอ้ งตาม
ส่ิงที่ใชส้ าหรับเรียกขานส่ิงตา่ งๆ ใน Problem Domain เดียวกนั
- Visibility หมายถึง ทุกๆ ชื่อตอ้ งไดร้ ับการอธิบายว่าตนเองถูกมองเห็นหรือเขา้ ถึงได้
อยา่ งไร มีขอ้ จากดั อยา่ งไร
- Integrity คือ Things หน่ึงๆ จะมีความสัมพนั ธ์กับ Thing อ่ืนได้โดยผ่านทาง
Relationship เทา่ น้นั และตอ้ งเป็น Relationship ที่สามารถอธิบายได้ ไม่ซ้าซอ้ น กากวม และเป็ นไป
อยา่ งมีระเบียบแบบแผน
- Execution คือ Things ต่างๆ ท่ีถูกนาไปใช้เพื่ออธิบายการประมวลผลตอ้ งมีแบบแผน
และสามารถอธิบายได้
นอกจากน้นั กิติพงษ์ ยงั ไดเ้ สนอ Rule ของ Stereotype เพ่ิมเติมเอาไวด้ งั น้ี
- Stereotype คือ สาหรับทุกๆ Things, Relationship แมจ้ ะเป็ นคนละตวั กนั แต่อาจมีชื่อซ้า
กนั ได้ เนื่องจากมีความหมายเหมือนกนั ในยเู อม็ แอลจะยินยอมให้ Things หรือ Relationship คนละ
ตวั มีช่ือซ้ากนั ไดโ้ ดย Stereotype ซ่ึงหมายถึง Name ที่สามารถมี Things มากกวา่ หน่ึงตวั สามารถ
เขียน Stereotype ในรูปแบบ <<stereotype>>
กฎของแบบจาลองทอี่ ยู่ในรูปแบบทด่ี ี
แบบจาลองท่ีอยใู่ นรูปแบบที่ดี (Well-formed Model) คือกฎท่ีจะทาใหแ้ บบจาลองท่ีสร้าง
เป็ นแบบจาลองที่ดีและสมบูรณ์ หากแบบจาลองท่ีไดไ้ ม่เป็ นเป็ นแบบจาลองท่ีดี (Non-well formed
Model) (พนิดา พานิชกลุ , 2548, หนา้ 232) โดยท่ีกฎของแบบจาลองท่ีดีไวด้ งั น้ี
1.แบบจาลองท่ีอยู่ในรูปแบบที่ดี (Well-formed Model) คือแบบจาลองท่ีมีคุณสมบัติ
ครบถว้ นตามกฎของการใหค้ วามหมายทุกขอ้ (กิติพงษ์ กลมกล่อม, 2552 หนา้ 15)
2.แบบจาลองท่ีไม่อยใู่ นรูปแบบจาลองท่ีดี (Non-well formed Model) คือแบบจาลองที่ยงั
ขาดคุณสมบตั ิบางประการของกฎการให้ความหมาย ซ่ึงกิติพงษ์ กลมกล่อม (2552, หน้า 15) และ
พนิดา พานิชกุล (2548, หนา้ 232) ไดก้ ล่าวไวด้ งั น้ี
- อิไลด์ (Elide) บางองคป์ ระกอบของแบบจาลองอาจถูกซ่อนไวเ้ พ่ือให้ง่ายต่อการทาความ
เขา้ ใจของผเู้ ก่ียวขอ้ งทุกฝ่ าย
62
- อินคอมพลีท (Incomplete) บางองค์ประกอบของแบบจาลองอาจขาดหายไปยงั ไม่
ครบถว้ น (ซ่ึงเกิดข้ึนไดเ้ สมอ เม่ือการวิเคราะห์และออกแบบยงั ไม่สมบูรณ์หรือในกรณีที่มีความ
ตอ้ งการของระบบยงั ไม่ชดั เจน)
- อินคอนซิสเทนท์ (Inconsistent) ความสอดคลอ้ งของแต่ละไดอะแกรมในแบบจาลองยงั
ไม่สมบรู ณ์ท้งั หมด
สรุป
ยูเอ็มแอล คือ ภาษาภาพที่ใช้แทนแนวคิดเชิงวตั ถุ เพื่อใช้ส่ือสารสาหรับนักวิเคราะห์
สู่โปรแกรมเมอร์ และผทู้ ่ีมีส่วนในการเขียนโปรแกรมซ่ึงประกอบไปดว้ ยธิง(Things) ความสัมพนั ธ์
(Relationships) และไดอะแกรม (Diagram) คลาสไดอะแกรมเป็ นส่วนของยูเอ็มแอลท่ีถือว่า
เป็ นส่วนที่ย่อยที่สุดที่ช่วยให้เกิดการวิเคราะห์ออกแบบโปรแกรมและเขียนโปรแกรมต่อไป
คลาสไดอะแกรมประกอบด้วยสามส่วนหลกั คือ ส่วนของชื่อคลาส ส่วนของแอททริบิวต์ และ
ส่วนของเมธอด ในการเขียนคลาสไดอะแกรมต้องระบุส่วนการเขา้ ถึงแอททริบิวต์และเมธอด
ใหเ้ ป็ นแบบใดแบบหน่ึงคือ public private หรือ protected ให้กบั แอททริบิวตแ์ ละเมธอดท้งั หมด
วตั ถุสามารถสื่อสารกนั ไดด้ ว้ ยเมสเซจ ที่ข้ึนอยูก่ บั ความสัมพนั ธ์ของคลาสต่างๆ ที่มีอยหู่ ลายแบบ
ได้แก่แอสโสสิเอชันได้แก่ ความสัมพนั ธ์ในเชิงของวตั ถุที่สร้างจากคลาสที่มีความสัมพนั ธ์กนั
แอคกรีเกชัน ที่ประกอบดว้ ยแบบเชิงประกอบ ในขณะท่ี ความสัมพนั ธ์แบบการรับทอดมีการ
สืบทอด และอินเทอร์เฟสที่สนบั สนุนการแม่แบบของเมธอดเพ่ือให้คลาสที่อิมพลีเมนตไ์ ดเ้ ขียน
ส่วนที่ทางานจริง
63
แบบฝึ กหดั ท้ายบท
1. ยเู อม็ แอล คืออะไร มีความสมั พนั ธ์อยา่ งไรกบั การเขียนโปรแกรมเชิงวตั ถุ
2. องคป์ ระกอบของยเู อม็ แอลมีอะไรบา้ งจงอธิบาย
3. จงอธิบายความหมายของ Class, Attribute Method มีความสัมพนั ธ์กบั คลาสไดอะแกรม
อยา่ งไร
4. จงบอกส่วนประกอบและความสาคญั ของคลาสไดอะแกรม
5. จงวเิ คราะห์แอททริบิวต์ และเมธอดของโทรทศั น์ พร้อมท้งั เขียนคลาสไดอะแกรม
6. หากท่านได้รับมอบหมายให้ออกแบบโปรแกรมคิด ค่าน้า ค่าไฟฟ้ า จงวิเคราะห์และ
ออกแบบคลาสไดอะแกรมของระบบน้ี
7. กาหนดให้มีคลาส ผูจ้ ดั การ คลาสพนกั งานขาย คลาสสินคา้ จงอธิบายการส่งเมสเซจกนั
ระหวา่ งคลาสท้งั สาม
8. จงบอกความสัมพนั ธ์ของคลาสมีกี่ประเภท จงอธิบาย
9. กาหนดใหม้ ี คลาสมะพร้าว คลาสมะมว่ ง คลาสส้มโอ คลาสพชื สวน จงเขียนความสัมพนั ธ์
ของคลาสดงั กล่าว
10. กาหนดคลาส พืชสวน คลาสเครื่องบิน จงอธิบายวา่ คลาสใดควรมีความสัมพนั ธ์แบบใด
เพราะเหตุใด
11. จงอธิบายวา่ ไวยากรณ์ของยเู อม็ แอลมีอะไรบา้ ง
12. Things, Relationship และ Diagram มีความสัมพนั ธ์กนั อยา่ งไร
13. จงอธิบายหนา้ ที่ของไดอะแกรมท่ีเป็นอธิบายเชิงพฤติกรรม
14. จงเปรียบเทียบลกั ษณะการทางานของ Activity Diagram และ Sequence Diagram วา่ มี
ความเหมือนหรือแตกต่างกนั อยา่ งไร
15. หากตอ้ งการออกแบบโปรแกรมข้ึนลงลิฟตท์ ่ีมีสถานะต่างๆ ท่านจะเลือกไดอะแกรมแบบ
ใดอธิบายการทางานดงั กล่าว
64
เอกสารอ้างองิ
“การโปรแกรมเชิงวตั ถุ และยูเอ็มแอล (UML - Unified Modeling Language)”. (2011). [Online].
Available: http://www.thaiall.com/uml/indexo.html
กิตติ ภกั ดีวฒั นะกุล และกิตติพงษ์ กลมกล่อม. (2548). คัมภีร์ การวิเคราห์และออกแบบเชิงวัตถุ
ด้วย UML. กรุเทพฯ: เคทีพี แอนด์ คอนซลั ท.์
กิตติ ภกั ดีวฒั นะกุล และ ศิริวรรณ อมั พรดนยั . (2544). Oject-Oriented ฉบับพนื้ ฐาน. กรุงเทพฯ:
KTP Comp&Consult.
กิตติพงษ์ กลมกล่อม. (2552). การวเิ คราะห์และออกแบบระบบเชิงวัตถุด้วย UML. กรุเทพฯ: เคทีพี
แอนด์ คอนซลั ท.์
พนิดา พานิชกลุ . (2548). Object-Oriented ฉบับพนื้ ฐาน. กรุงเทพฯ: เคทีพี แอนด์ คอนซลั ท.์
Cay Horstmann. (2002). Object-Oriented Design & Patterns. USA: John Wiley & Sons.
David Etheridge. (2009). Java:The Fundamentals of Objects and Classes-An Introduction to
Java Programming. Ventus Publishing Aps. [Online]. Available:
http://www.BookBoon.com.
Object Management Group. (2011 A). “Unified Modeling Language”. [Online]. Available:
http://www.uml.org/.
_______. (2011 B). “Introduction to OMG's Unified Modeling Language™ (UML®)”. [Online].
Available: http://www.omg.org/gettingstarted/what_is_uml.htm.
_______. (2011 C). “Catalog of UML Profile Specifications”. [Online]. Available:
http://www.omg.org/technology/documents/profile_catalog.htm.
_______. (2011 D). “UML Vendor Directory Listing”. [Online]. Available: http://uml-
directory.omg.org/vendor/list.htm.
Simol Kendal. (2009). Object Orientted Programming using Java. Ventus Publishing Aps.
[Online]. Available: http://www.BookBoon.com.
Sparx Systems. (2011 A). “UML 2.3 Tutorial”. [Online]. Available: http://www.sparx
systems.com.au/resources /uml2_tutorial/
_______. (2011 B). “UML Tutorial”. [Online]. Available: http://www.sparx
systems.com.au/uml-tutorial.html.
65
"UML Basic Notations". (2011). [Online]. Available: http://www.tutorialspoint.com/
uml/uml_basic_notations.htm
Wikipedia. (2007). “Object-oriented programming”. [Online]. Available:
http://en.wikipedia.org/wiki/Object-oriented_programming.
_______. (2011 A). “Unified Modeling Language”. [Online]. Available: http://en.wikipedia.org
/wiki/Unified_Modeling_Language.
_______. (2011 B). “Class diagram”. [Online]. Available: http://en.wikipedia.org/wiki
/Class_diagram.
_______. (2011 C). “Component diagram”. [Online]. Available: http://en.wikipedia.org/wiki
/Component_diagram.
_______. (2011 D). “Composite structure diagram”. [Online]. Available: http://en.wikipedia.org
/wiki/Composite_structure_diagram
_______. (2011 E). “Deployment diagram” . [Online]. Available: http://en.wikipedia.org
/wiki/Deployment_diagram.
_______. (2011 F). “Object diagram”. [Online]. Available: http://en.wikipedia.org
/wiki/Object_diagram.
_______. (2011 G). “Package diagram”. [Online]. Available:
http://en.wikipedia.org/wiki/Package_diagram.
_______. (2011 H). “Activity diagram”. [Online]. Available: http://en.wikipedia.org
/wiki/Activity_diagram.
_______. (2011 I). “UML state machine”. [Online]. Available: http://en.wikipedia.org
/wiki/UML_state_machine.
_______. (2011 J). “Use case diagram”. [Online]. Available: http://en.wikipedia.org/
wiki/Use_case_diagram.
Y. Daniel Liang. (2007). Introduction to Java Programming. USA: Pearson Prentice Hall
Pearson Education, Inc.
บทที่ 3
ภาษาจาวาเบือ้ งต้น
ภาษาจาวาไดร้ ับความนิยมแพร่หลายในปัจจุบนั เนื่องจากเป็ นโปรแกรมภาษาท่ี สามารถ
พฒั นาโปรแกรมได้หลายแพลตฟอร์ม (Platform) การเขียนโปรแกรมเพียงคร้ังเดียว สามารถ
นาไปใชง้ านได้บนระบบปฏิบตั ิการท่ีแตกต่างกนั ไดโ้ ดยไม่ตอ้ งเขียนโปรแกรมใหม่ และที่สาคญั
เป็นโปรแกรมที่ใหใ้ ชโ้ ดยไมม่ ีค่าใชจ้ า่ ย ในการนาเสนอเน้ือตา่ งๆ ที่เก่ียวขอ้ งกบั การเขียนโปรแกรม
เชิงวตั ถุ ตอ้ งอาศยั โปรแกรมภาษาจาวาเป็ นเครื่องมือสาหรับศึกษาเน้ือหาท้งั หมด ดังน้ัน บทน้ี
นาเสนอเน้ือหาทวั่ ไปเก่ียวกบั โปรแกรมภาษาจาวาในปัจจุบนั แนวทางการดาวน์โหลดตวั แปลภาษา
การติดต้งั การใชง้ านเบ้ืองตน้ แนวทางการพฒั นารหสั โปรแกรมดว้ ยคลาส การคอมไพล์และการรัน
โปรแกรม นอกจากน้นั ยงั ทบทวนเกี่ยวกบั โครงสร้างขอ้ มูล ตวั ดาเนินการ คาส่ังเง่ือนไขและคาสั่ง
วนซ้า ซ่ึงเป็นการทบทวนใหผ้ อู้ ่านมีเขา้ ใจหลกั การเบ้ืองตน้ ของการใชง้ านโปรแกรมภาษาจาวา
ความรู้ท่ัวไปเกย่ี วกบั ภาษาจาวา
วกี ีพีเดีย (Wikipedia, 2007) กล่าวไวว้ า่ “จาวาคือโปรแกรมภาษาคอมพิวเตอร์ท่ีสร้างข้ึน
เริ่มแรกดว้ ยบริษทั ซนั ไมโครซิสเตม็ (Sun Microsystems) เวอร์ชนั ตน้ ฉบบั (Original) ไดใ้ ชง้ านคร้ัง
แรกใน ปี ค.ศ. 1995 กล่าวได้ว่าเป็ นจาวาท่ีเป็ นแก่นคอมโนเนนต์ของซันโดยแท้ รูปแบบของ
โปรแกรมภาษาจะมีคุณสมบตั ิเฉพาะท่ีเป็นของตนเอง สืบทอดมาจากภาษาซี และซีพลสั พลสั โดยมี
ความง่ายและใชล้ กั ษณะของโมเดลเชิงวตั ถุและมีการใชย้ ดึ ติดกบั ความสามารถระดบั ต่านอ้ ยกวา่ ”
เบรต (Brett Spell, 2000, p. 5) ไดอ้ า้ งถึงนิยามของบริษทั ซนั ไวว้ า่ จาวาคือ “ความง่าย มี
ความคงทน ความเป็ นเชิงวตั ถุ มีความอิสระต่อแพลตฟอร์ม มลั ติเทรด ยืดหยุ่น มีความง่ายใน
สภาวะแวดลอ้ ม ของการเขียนโปรแกรม”
พิเชษฐ์ ศิริรัตนไพศาลกุล (2553, หน้า 33) กล่าวว่า จาวาเป็ นภาษาที่สามารถเขียน
โปรแกรมเพียงคร้ังเดียว แล้วนาไปใช้กับเครื่ องคอมพิวเตอร์ชนิดต่างๆ ได้ไม่ว่าจะเป็ น
ไมโครคอมพวิ เตอร์ เมนเฟรม หรือแมก้ ระทงั่ บนโทรศพั ทม์ ือถือกส็ ามารถใชภ้ าษาจาวาในการเขียน
โปรแกรม อยา่ งเช่น เกมไดด้ ว้ ย ที่สาคญั อีกประการหน่ึงคือจาวาเป็ นภาษาฟรีไม่มีค่าใชจ้ ่ายในเร่ือง
ลิขสิทธ์ิ สามารถดาวน์โหลดโปรแกรมมาติดต้งั บนเครื่องคอมพวิ เตอร์ของเราไดเ้ ลย
67
ดงั น้นั โปรแกรมแกรมภาษาจาวา คือ โปรแกรมภาษาคอมพิวเตอร์แนวใหม่ที่สนบั สนุน
แนวคิดเชิงวตั ถุ มีความง่ายในการใชง้ าน โดยไมย่ ดึ ติดกบั แพลตฟอร์ม สามารถเขียนโปรแกรมเพียง
คร้ังเดียวแลว้ นาไปใชง้ านไดห้ ลายรูปแบบ
ภาษาจาวา พฒั นามาจากภาษาโอก๊ (Oak) ในราวปี ค.ศ. 1990 โดยทีมพฒั นาจากบริษทั ซนั
ไมโครซิสเต็ม (Sun Microsystems) เพื่อใช้ฝังตวั กบั อุปกรณ์อิเล็กทรอนิกส์ ต่อมามีการใช้
อินเตอร์เน็ตอยา่ งแพร่หลาย ทีมพฒั นาจึงมีแนวคิดในการพฒั นาโปรแกรมใหส้ ามารถใชง้ านไดก้ บั
ทุกๆ แพลตฟอร์มโดยไม่ตอ้ งเขียนโปรแกรมใหม่ และแนวคิดน้ีไดพ้ ฒั นาจนสาเร็จใชง้ านไดจ้ ริง
ในราวปี ค.ศ. 1995 จึงเปล่ียนชื่อจาก Oak เป็ น Java พร้อมกนั น้ีบริษทั อนุญาตให้ดาวน์โหลด
เครื่องมือที่ใชใ้ นการพฒั นา เรียกวา่ จาวาดีเวลล็อบเมนตค์ ิด (Java Development Kit) หรือเจดีเค
(JDK) ซ่ึงในปัจจุบนั พฒั นาถึงเวอร์ชนั 1.6 หรือเรียกวา่ จาวา 6 การทางานของภาษาจาวาจะพฒั นา
รหสั โปรแกรม (Source code) เหมือนกบั โปรแกรมภาษาอ่ืนๆ หลงั จากน้นั คอมไพล์ (Compile) เป็ น
แฟ้ มไบต์โค้ด (Byte Code) สาหรับใช้กับทุกแพลตฟอร์ม เมื่อต้องการจะใช้สาหรับแต่ละ
แพลตฟอร์มจะใช้จาวาเวอร์ชวลแมชชีน (Java Virtual Machine) ทาหนา้ ที่แปลไบต์โคด้ เพื่อใชง้ าน
ซ่ึงคุณสมบตั ิดงั กล่าว ทาใหภ้ าษาจาวาไดช้ ่ือวา่ เป็นภาษาท่ีเขียนเพยี งคร้ังเดียวแลว้ สามารถไปใชง้ าน
ไดท้ ุกๆ แพลตฟอร์ม (Write Once Run Anywhere) ภาษาจาวามีอยหู่ ลากแพลตฟอร์ม เช่น จาวา
แอพพลิเคชนั (Java Application) สาหรับเขียนโปรแกรมแบบแอพพลิเคชนั จาวาแอบ็ เพล็ต (Java
Applet) สาหรับพฒั นาโปรแกรมแอพพลิเคชนั ท่ีใชง้ านบนเวบ็ , จาวาเซิร์ฟเล็ต (Java Servlet)
สาหรับพฒั นาโปรแกรมบนเวบ็ จาวาเซิร์ฟเวอร์เพจ (Java Server Page) เป็ นภาษาสคริปตข์ องจาวา
สาหรับพฒั นางานบนเวบ็ และเจทูเอ็มอี (J2ME) เป็ นภาษาจาวาสาหรับพฒั นาโปรแกรมบนระบบ
มือถือ เป็นตน้ แตป่ ัจจุบนั น้ีบริษทั โอราเคิล (Oracle) ไดซ้ ้ือกิจการของบริษทั ซนั ไมโครซิสเต็ม ซ่ึงก็
ทาใหภ้ าษาจาวาตกไปอยใู่ นการดูแลของโอราเคิลดว้ ย โปรแกรมภาษาจาวาในปัจจุบนั มีดงั น้ี
วกี ีพเี พยี (Wikipedia , 2007) แบ่งเวอร์ชนั ของภาษาจาวาไวด้ งั น้ี
- JDK 1.0 (January 23, 1996)
- JDK 1.1 (February 19, 1997)
- J2SE 1.2 (December 8, 1998)
- J2SE 1.3 (May 8, 2000)
- J2SE 1.4 (February 6, 2002)
- J2SE 5.0 (September 30, 2004)
- Java SE 6 (December 11, 2006) และ
- Java SE 7
68
ปัจจุบนั ภาษาจาวาพฒั นาถึงเวอร์ชนั 7 ซ่ึงอยใู่ นช่วงการพฒั นา หนงั สือเล่มน้ี จะเนน้ ใชง้ าน
ท่ีเวอร์ชนั 6 ซ่ึงจะใชง้ านร่วมกบั โปรแกรมเน็ตบีน 6.0 รายละเอียดของโปรแกรมภาษาจาวาสามารถ
เขา้ ไปศึกษารายละเอียดต่าง ๆ ไดท้ ่ี http://www.oracle.com/technetwork/java/index.html
การเตรียมสภาวะแวดล้อมสาหรับเขยี นโปรแกรมด้วยภาษาจาวา
พิเชษฐ์ ศิริรัตนไพศาลกุล(2553, หนา้ 33) กล่าว่า การที่จะเขียนโปรแกรมจะตอ้ งมีเท็กซ์
อิดิเตอร์ เพ่ือใชใ้ นการเขียนโคด้ ของโปรแกรม โปรแกรมภาษาจาวา JDK เพ่ือใชใ้ นการคอมไพล์
และจาวา JVM ซ่ึงเป็นตวั กลางในการเปลี่ยนโคด้ ของโปรแกรมใหเ้ ป็ นไบตโ์ คด้ ที่อยใู่ นรูปแบบของ
ภาษาจาวาเขา้ ใจ
วาย. ยาคอบ (Yacov Fain, 2007, p.1-6) กล่าวา่ การเริ่มตน้ ใชง้ านภาษาจาวาน้นั ตอ้ งดาวน์
โหลดด้วยการเขา้ ไปท่ีเว็บไซด์ท่ีให้บริการ ซ่ึงเป็ นผสู้ ร้างโปรแกรมภาษา แลว้ ดาวน์โหลด เพ่ือ
ติดต้งั โปรแกรมในส่วนของ Java 2 Softdware Devlopment Kit (J2SDK) แล้วกาหนด
CLASSPATH และกาหนด SET PATH ใหก้ บั โปรแกรมจึงจะเร่ิมใชง้ านภาษาได้
ดงั น้นั การที่จะใช้งานโปรแกรมภาษาจาวาไดจ้ ะตอ้ งเร่ิมจากการดาวน์โหลดโปรแกรมที่
เป็ น JDK หรือในเวอร์ชนั ใหม่เรียกวา่ Java SE (JSE) หลงั จากน้นั ติดต้งั โปรแกรมและกาหนด
เส้นทาง (PATH) ใหส้ ามารถเรียกใชง้ านโปรแกรมสาหรับคอมไพลแ์ ละรันได้ ต่อไปน้ีนาเสนอแนว
ทางการพฒั นาโปรแกรมดว้ ยภาษาจาวา และดาวนโ์ หลดและติดต้งั เบ้ืองตน้
1. แนวทางการพฒั นารหสั ต้นฉบับของภาษาจาวา
แนวทางการพฒั นาแบ่งออกเป็น 2 แนวทางดงั น้ี
1. ใช้โปรแกรมอิดิตเตอร์(Editor) เป็ นเคร่ืองมือในการเขียน ซ่ึงเป็ นโปรแกรมท่ีมีขีด
ความสามารถไม่สูงนกั แนวทางน้ีจะใชอ้ ิดิตเตอร์ในการเขียนรหสั ตน้ ฉบบั และรันโปรแกรมผา่ น
อิดิตเตอร์หรือออกไปรันท่ีคอมมานไลน์ (Command Line) ของระบบปฏิบตั ิการ หากเคร่ืองมือใด
สามารถเชื่อมกบั เจเอสอี (JSE) ไดโ้ ดยตรงก็สามารถรันผา่ นอิดิตเตอร์ไดเ้ ลย หากโปรแกรมน้นั ไม่
สามารถติดต่อกบั เจเอสอี ไดก้ ต็ อ้ งรันจากคอมมานไลน์เท่าน้นั สิ่งท่ีสาคญั คือตอ้ งเขียนรหสั ตน้ ฉบบั
น้นั เองเกือบท้งั หมด หลงั จากน้นั ใช้คาสั่ง javac เพื่อคอมไพล์โปรแกรม และรันโดยใชค้ าส่ัง java
เป็ นตน้
การใชง้ านแบบน้ีตอ้ งติดต้งั โปรแกรมภาษาจาวาลงในเครื่องก่อน หลงั จากน้นั กาหนด
พาทและคลาสพาทให้ข้ึนกบั สภาวะแวดลอ้ มของระบบปฏิบตั ิการแต่ละประเภทเพ่ือที่จะเรียกใช้
คาสั่งต่าง ๆ ของภาษาจาวาไดถ้ ูกตอ้ ง โปรแกรมท่ีใชใ้ นการพฒั นารหัสตน้ ฉบบั ได้ เช่น Notepad,
69
EditPlus, jCreater และโปรแกรมอิดิตเตอร์อ่ืน ๆ ที่สามารถบนั ทึกเป็ นแฟ้ มให้เป็ นนามสกุลแฟ้ ม
เป็น .java ได้
ขอ้ ดีของการพฒั นาแบบน้ี คือ ผูเ้ ขียนโปรแกรมไม่ตอ้ งใชเ้ คร่ืองที่มีประสิทธิภาพสูง
นกั ก็สามารถใชง้ านได้ แต่ขอ้ เสีย คือ ถา้ พฒั นาแอพพลิเคชัน (Application) ขนาดใหญ่จะทาไดช้ า้
และตอ้ งเขียนรหสั ตน้ ฉบบั จานวนมาก
2. พฒั นาโดยใช้ GUI tools ซ่ึงเป็ นเครื่องมือที่ใชง้ านในแนว 4GL ดว้ ยการคลิกและ
ดรอปลงบนฟอร์ม แลว้ เขียนรหสั ตน้ ฉบบั เหมือนภาษาช้นั สูงที่เป็ นค่ายปิ ดทวั่ ไป เครื่องมือเหล่าน้ี
มีท้งั ฟรีและตอ้ งซ้ือ ตวั อย่างโปรแกรมสาหรับแจกฟรี เช่น NetBeans, Sun studio, Eclipse และ
โปรแกรมสาหรับขาย เช่น Visual Paradigm, JBuilder, Forte เป็นตน้
ขอ้ ดีของแนวการพฒั นาแบบน้ีคือสามารถทางานไดเ้ ร็วเหมาะแก่การพฒั นาโปรแกรมท่ีมี
ขนาดใหญ่ แต่ขอ้ เสียคือตอ้ งใชเ้ ครื่องคอมพิวเตอร์ท่ีประสิทธิภาพสูง ๆ โดยเฉพาะแรมควรมีขนาด
ต้งั แต่ 1-2 กิกะไบตข์ ้ึนไป
2. แหล่งการดาวน์โหลด
แหล่งการดาวน์โหลดส่ิ งที่เกี่ยวข้องกับการใช้งานภาษาจาวาอยู่ที่เว็บไซด์
http://www.oracle.com/technetwork/java/index.html ข้นั ตอนการดาวน์โหลด คอมไพล์เลอร์ของ
ภาษาจาวามีดงั น้ี
1. เขา้ ไปท่ีเวบ็ ไซต์ http://www.oracle.com/technetwork/java/index.html แลว้ เลือกใน
ส่วนของ Software Downloads ดงั ภาพที่ 3.1 แลว้ คลิกเลือกท่ี Java SE
จุดคลิกเลือกสาหรับการ
ดาวนโ์ หลด
ภาพที่ 3.1 การเขา้ ไปดาวนโ์ หลดโปรแกรมภาษาจาวา
70
2. เม่ือเลือกคลิก Java SE จะปรากฏหนา้ ตา่ งส่วนของ JDK 6u1 ข้ึนเป็ นลาดบั แรกของ
รายการเลือก ใหค้ ลิกส่วนการดาวน์โหลดดงั ภาพท่ี 3.2
จุดสาหรับเลือกการดาวน์
โหลด
ภาพที่ 3.2 แสดงส่วนท่ีจะดาวนโ์ หลดโปรแกรมจาวา
3. คลิกดาวน์โหลด ตามหมายเลข ดงั ภาพท่ี 3.3
ภาพท่ี 3.3 แสดงข้นั ตอนและตาแหน่งการดาวน์โหลดจาวา
71
การตดิ ต้งั ภาษาจาวา
หลงั จากดาวน์โหลดโปรแกรมมาเรียบร้อยแลว้ ข้นั ตอนต่อไปตอ้ งติดต้งั โปรแกรมลงเครื่อง
เหมือนกบั โปรแกรมทวั่ ไป หลงั จากน้นั จึงกาหนดเส้นทางให้กบั การเรียกใชค้ าส่ังเพื่อคอมไพล์และ
รันโปรแกรม ข้นั ตอนดงั กล่าวมีดงั น้ี
1. การติดต้งั คอมไพล์เลอร์
ข้นั ตอนการติดต้งั คอมไพลเ์ ลอร์ หลงั จากท่ีดาวน์โหลดโปรแกรมมาแลว้ มีดงั น้ี
1.1 ดบั เบิลคลิกแฟ้ มท่ีดาวน์โหลดมา จะปรากฏหน้าต่างตอ้ นรับการติดต้งั ดงั ภาพที่
3.4
ภาพที่ 3.4 แสดงหนา้ ต่างตอ้ นรับเขา้ สู่การติดต้งั
1.2 หลังจากน้ันจะปรากฏให้ยอมรับเง่ือนไข ซ่ึงข้นั ตอนน้ีจะตอ้ งยอมรับเง่ือนไข
ดงั กล่าว แสดงตาแหน่งการเลือก Accept เพอ่ื ติดต้งั ดงั ภาพที่ 3.5
ตาแหน่งการเลือกเพอ่ื
ยอมรับเง่ือนไขของการ
ติดต้งั เพอ่ื ใชโ้ ปรแกรม
ภาพที่ 3.5 แสดงการยอมรับเง่ือนไขของการติดต้งั เพื่อใชง้ าน
72
1.3 เลือกรูปแบบการติดต้งั ซ่ึงระบุตาแหน่งที่จะติดต้งั และเลือกแพคเกจดงั หมายเลข
และตาแหน่งท่ีจะติดต้งั ดงั หมายเลข ในภาพท่ี 3.6 หลงั จากน้นั คลิก Next ต่อไปเพื่อทาการ
ติดต้งั
ภาพที่ 3.6 แสดงข้นั ตอนการเลือกแพคเกจและตาแหน่งของการติดต้งั
หลงั จากคลิกป่ ุม Next ในภาพที่ 3.7 แลว้ โปรแกรมจะเร่ิมทาการติดต้งั ดงั ภาพท่ี 3.8
ภาพที่ 3.7 แสดงข้นั ตอนขณะติดต้งั โปรแกรม
73
เม่ือติดต้งั โปรแกรมเสร็จสิ้นแลว้ จะไดด้ งั ภาพที่ 3.8
ภาพท่ี 3.8 แสดงผลเมื่อติดต้งั โปรแกรมสาเร็จแลว้
2. การกาหนดสภาวะแวดล้อมของระบบ
การกาหนดสภาวะแวดลอ้ มของระบบเพื่อให้สามารถเรียกใชโ้ ปรแกรมเพ่ือคอมไพล์ และ
การรันโปรแกรม มีข้นั ตอนดงั น้ี
2.1 คลิกป่ ุมขวาของเมาส์ท่ี my computer เลือก คุณสมบตั ิ (Properties) ดงั ภาพท่ี 3.9
ภาพที่ 3.9 แสดงการเขา้ ไปกาหนดเส้นทางสาหรับการใชง้ าน
74
2.2 เมื่อเลือกแลว้ จะปรากฏดงั ภาพที่ 3.10 ในตวั อยา่ งน้ีใชว้ ินโดวเ์ อก็ ซ์พีโฮม เวอร์ชนั
ภาษาไทย หากวนิ โดวท์ ี่ใชเ้ ป็นภาษาองั กฤษใหส้ ังเกตคาวา่ Advances แตใ่ นกรณีน้ีจะเลือก ข้นั สูง
ภาพท่ี 3.10 แสดงการกาหนดค่าสภาวะของแวดลอ้ มของระบบ
หลังจากน้ันให้กาหนดตัวแปรสภาวะแวดล้อมของระบบ หากเป็ นโปรแกรมวินโดว์
ภาษาองั กฤษจะเลือก Environment Variables แทนตวั แปรสภาพแวดลอ้ ม แสดงการเลือกดงั ภาพท่ี
3.11
ภาพท่ี 3.11 แสดงตวั อยา่ งตวั แปรสภาวะแวดลอ้ ม
75
2.3 สร้างตวั แปรใหม่ในระบบดงั ภาพที่ 3.12
ภาพท่ี 3.12 แสดงการกาหนด Home ของ java ที่ติดต้งั ลงไปแลว้
2.4 กาหนดจาวาพาท (java path) เป็นเส้นทางท่ีจะใหร้ ะบบปฏิบตั ิรับรู้ตาแหน่งการเก็บ
แฟ้ ม javac.exe, java.exe เม่ือเวลาเรียกใช้การคอมไพล์และรันโปรแกรม ซ่ึงกาหนดจากสภาวะ
แวดลอ้ มเช่นกนั กบั JAVA_HOME การกาหนดดงั กล่าวแสดงดงั ภาพท่ี 3.13
ภาพที่ 3.13 แสดงการกาหนดเส้นทางของการคอมไพลแ์ ละรัน
โครงสร้างและรูปแบบพนื้ ฐานของภาษาจาวา
“Write Once Run Anywhere” เป็ นคาขวญั ของจาวา ซ่ึงหมายถึงโปรแกรมภาษาจาวาน้นั
เขียนเพียงคร้ังเดียวแตส่ ามารถรันไดท้ ุกๆ ที่หรือทุกๆ แพลตฟอร์ม การนาเสนอในหนงั สือเล่มน้ีจะ
นาเสนอการเขียนจาวาแอพพลิเคชนั เป็ นหลกั ข้นั ตอนการเขียน ผเู้ ขียนโปรแกรมจะตอ้ งเขียนรหสั
ตน้ ฉบบั (source code) และบนั ทึกแฟ้ มลงในดิสก์ หลงั จากน้นั คอมไพล์โปรแกรมจะไดไ้ บตร์ หัส
ตน้ ฉบบั เป็ นแฟ้ มนามสกุล .class หลงั จากน้นั จึงรันโปรแกรม (Y. Yacov, Fain, 2004, p.7) โดยการ
รันแต่ละแพลตฟอร์มจะตอ้ งมี JVM (Java Virtual Machine) ที่เขียนข้ึนมาเฉพาะรูปแบบน้นั ๆ เพ่ือ
จดั สภาวะการรันในแต่ละระบบปฏิบตั ิการ ภาพท่ี 3.14 แสดงรายละเอียดดงั กล่าวน้ี
76
Compile ByteCode
Source Code
JVM JVM JVM JVM
Windows Unix
Linux Macintosh
ภาพที่ 3.14 แสดงหลกั การเขียนโปรแกรมดว้ ยจาวา
จากภาพอธิบายไดว้ า่ หมายเลข 1 คือการเขียนรหสั ตน้ ฉบบั ดว้ ยโปรแกรมหรืออิดิตเตอร์
หรืออาจเป็ นการใช้งานโปรแกรมช่วยในการเขียนแบบไอดีอี(IDE) ก็ได้ หลงั จากน้นั เม่ือบนั ทึก
แฟ้ มเป็นนามสกลุ .java แลว้ จะตอ้ งคอมไพล์ในหมายเลย 2 เม่ือคอมไพลส์ าเร็จแลว้ จึงนาไปใชง้ าน
ในหมาย 3 ซ่ึงหมายเลข 3 หมายถึงการรันโปรแกรม ซ่ึงสามารถนาเอาแฟ้ ม .class ไปรันบนระบบ
ต่างๆ ทีแตกตา่ งกนั ไดด้ ว้ ยการอาศยั จาวาเวอร์ชวลแมชชีน (Java Virtual Matchine) ได้
1. โครงสร้างของโปรแกรมภาษาจาวา
โครงสร้างของรหสั ตน้ ฉบบั ของโปรแกรมภาษาจาวาประกอบดว้ ยส่วนสาคญั คือ ชื่อแฟ้ ม
ส่วนของแพคเกจ ส่วนของการเขียนคลาสและเมธอด แสดงดงั ภาพท่ี 3.15
ส่วนการ import packages แฟ้ มนามสกลุ .java
ส่วนของ class ส่วนการนา package หรือ
(สามารถมีไดม้ ากกวา่ 1 คลาส) เขา้ มาร่วมใชง้ าน
ส่วนของการเขียน class
ที่หากเป็นคลาสหลกั ตอ้ งชื่อ
เดียวกนั กบั แฟ้ มจุดจาวาและ
มี method main อยดู่ ว้ ย
ภาพที่ 3.15 แสดงโครงสร้างรหสั ตน้ ฉบบั ของภาษาจาวา
77
ตวั อยา่ งโครงโปรแกรม เช่น แฟ้ ม firstClass.java
import java.io.*;
// คลาสแรก
public class firstClass
{
public static void main(String args[])
{
// เน้ือหาของโปรแกรมหลกั
}
}
// คลาสท่ีสอง
public class secondClass
{
public void metA()
{
// เน้ือหาของโปรแกรม method A
}
}
ตวั อยา่ งโปรแกรมที่สามารถทางานไดจ้ ริง ของแฟ้ ม firstClass.java
import java.io.*;
public class firstClass
{
public static void main(String args[])
{
System.out.println(“Hello world, I am object of firstClass”);
secondClass example=new secondClass();
example.metA();
}
}
78
public class secondClass
{
public void metA()
{
System.out.println(“Hello I am secondClass”);
}
}
2. การคอมไพล์และรันโปรแกรม
1) ข้นั ตอนคอมไพล์ พิมพ์ javac ตามดว้ ยช่ือโปรแกรม .java เช่น javac firstClass.java
หมายถึงการคอมไพลแ์ ฟ้ ม firstClass.java ใหเ้ ป็นแฟ้ มนามสกุล .class
2) การรันโปรแกรม พิมพ์ java ตามดว้ ยชื่อคลาสที่ผา่ นการคอมไพลแ์ ลว้ เช่น
java firstClass หมายถึง การรันโปรแกรม firstClass.class
ผลการทางานของการคอมไพลแ์ ละรันโปรแกรมไดด้ งั ภาพท่ี 3.16
firstClass.java javac firstClass.java
compile
source code run
java firstClass firstClass.class
bytecode
ภาพที่ 3.16 แสดงผลการรันและคอมไพลโ์ ปรแกรม
ข้อสังเกต ตอนรันโปรแกรมไม่ตอ้ งใส่นามสกุลแฟ้ ม .class
79
ชนิดข้อมูลของภาษาจาวา
ชนิดขอ้ มูลเป็ นสิ่งสาคญั ย่ิงในการเขียนโปรแกรมเน่ืองจากเป็ นที่เก็บขอ้ มูลที่ป้ อนเขา้ สู่
คอมพิวเตอร์ นาไปประมวลผล และแสดงผลต่าง ๆ โปรแกรมภาษาจาวามีหลายชนิดไมเคิล เอส
เจนคินส์ (Michael S. Jenkins, 1998, p. 4-5) แบ่งชนิดของขอ้ มูลในภาษาจาวาออกเป็ น 2 ประเภท
คือ
1. ตวั แปรแบบพ้ืนฐาน (Primitive Data Type) ซ่ึงเป็ นตวั แปรที่พบในโปรแกรมภาษา
สมยั ใหม่ เช่น int long short byte char boolean void float และ double
2. ตวั แปรแบบอา้ งอิง (Reference Data Type) ซ่ึงเป็ นตวั แปรอื่น ๆ ท่ีอา้ งอิงเกี่ยวกบั
ออ็ บเจกต์
ขณะที่โรเบิร์ต ลาฟอร์ (Robert Lafore, 2003, p. 25-26 ), จาวาอนั ไคน์ (Javaunkies.org,
2007), ไอเมโลดีดอทคอม (imelody, 2007) และ ซนั ไมโครซิสเต็ม (Sun Microsystems, “Primitive
Data Types”, 2007) ต่างกแ็ บ่งชนิดของขอ้ มูลที่มีในภาษาจาวาเป็น 2 ชนิดดงั กล่าวเช่นกนั โดยขอ้ มูล
พ้ืนฐาน คือ int long short byte char boolean void float และ double โดยระบุค่าความจุและค่าโดย
ปริยายดงั น้ี
ตารางที่ 3.1 แสดงรายละเอียดขอ้ มลู พ้นื ฐาน
คียเ์ วริ ์ดชนิดขอ้ มลู ขอ้ มูล ขนาด(บิต) คา่ เริ่มตน้
byte ตวั เลขจานวนเตม็ 8 0
short 16 0
int 32 0
long 64 0
float ตวั เลขทศนิยม 32 0.0
double 64 0.0
boolean ขอ้ มลู ตรรกะ true หรือ false false
character ตวั อกั ษร 16 ''
(ที่มา: Itemelody, 2007)
ขอ้ มลู แบบอา้ งอิงที่ใชใ้ นภาษาจาวาไดแ้ ก่ คลาส ออ็ บเจกต์ และอาร์เรย์
ดงั น้นั ชนิดของขอ้ มลู ที่มีในภาษาจาวาประกอบดว้ ย 2 ประเภทหลกั คือ ขอ้ มูลพ้ืนฐานและ
ขอ้ มลู แบบอา้ งอิง เน้ือหาส่วนน้ีจะแสดงรายละเอียดดงั น้ี
80
1. ข้อมูลพนื้ ฐาน
1.1 boolean true or false เป็นขอ้ มูลชนิดบลู ีนที่มีคา่ จริงและเทจ็
1.2 char unicode! (16 bits) เป็นขอ้ มูลชนิดอกั ขระ
1.3 byte signed 8 bit integer เป็นขอ้ มลู ตวั เลขจานวนเตม็ ชนิดไบต์
1.4 short signed 16 bit integer เป็นขอ้ มูลตวั เลขจานวนเตม็ แบบส้นั
1.5 int signed 32 bit integer เป็นขอ้ มูลตวั เลขจานวนเตม็ แบบปกติ
1.6 long signed 64 bit integer เป็นขอ้ มลู ตวั เลขจานวนเตม็ แบบยาว
1.7 float,double IEEE 754 floating point เป็นขอ้ มูลตวั เลขทศนิยม
รายละเอียดของแตล่ ะชนิดแสดงดงั น้ี
integer เก็บได้ -231 ถึง 231-1 เน้ือท่ีที่ใชเ้ ก็บ 4 byte
short เก็บได้ -215 ถึง 215-1 เน้ือที่ที่ใชเ้ ก็บ 2 byte
long เก็บได้ -263 ถึง 263-1 เน้ือที่ที่ใชเ้ ก็บ 8 byte
byte เก็บได้ -27 ถึง 27-1 เน้ือที่ที่ใชเ้ ก็บ 1 byte
float เก็บได้ -3.4+E38 ถึง 3.4+E38 เน้ือท่ีท่ีใชเ้ ก็บ 4 byte
double เก็บได้ -17+E308 ถึง 17+E308 เน้ือท่ีที่ใชเ้ กบ็ 8 byte
ตวั อยา่ งการประกาศตวั แปรเพอ่ื ใชง้ าน เช่น
int x,y; ประกาศตวั แปร x และ y เป็นชนิดตวั เลขจานวนเตม็ โดยไมก่ าหนดคา่ เร่ิมตน้
int x=15; ประกาศตวั แปร x เป็นชนิดตวั เลขจานวนเตม็ โดยกาหนดค่าเริ่มตน้ เทา่ กบั 15
float i=0.0; ประกาศตวั แปร i เป็นชนิดตวั เลขทศนิยม โดยกาหนดค่าเร่ิมตน้ เทา่ กบั 0.0
float k; ประกาศตวั แปร k เป็นชนิดตวั เลขทศนิยม โดยไมก่ าหนดคา่ เร่ิมตน้
long test,test1=345.89; ประกาศตวั แปร test และ test1 เป็ นชนิดตวั เลขทศนิยม โดยไม่
กาหนดค่าเริ่มตน้ ใหก้ บั test แต่กาหนดคา่ เริ่มตน้ ใหก้ บั test1 เทา่ กบั 345.89
double d=1245.98; ประกาศตวั แปร d เป็นชนิดตวั เลขทศนิยม โดยกาหนดค่าเร่ิมตน้ เท่ากบั
1245.98
byte kilo=13; ประกาศตวั แปร kilo เป็ นชนิดตวั เลขจานวนเต็มชนิดไบต์ โดยกาหนดค่า
เร่ิมตน้ เทา่ กบั 13
2. ข้อมูลชนิดอ้างองิ
2.1 คลาส (Classes) เป็ นขอ้ มูลวตั ถุที่สามารถประกาศข้ึนมาสาหรับอา้ งอิงถึงอ็อบเจกตท์ ี่
สร้างข้ึนมีรูปแบบและรายละเอียดยอ่ ยภายในข้ึนอยกู่ บั คลาสท่ีประกาศอา้ งอิงใหเ้ ป็น
81
2.2 อาร์เรย์ (Arrays) เป็นการประกาศตวั เป็นชุดของขอ้ มลู ท่ีมีขอ้ มูลพ้ืนฐานให้อา้ งถึง เช่น
int a[]=new int[5] หมายถึงประกาศตวั แปร a เป็นชุดของตวั เลขจานวน 5 ตวั เป็นตน้
นอกจากขอ้ มูลดงั ท่ีกล่าวมาแลว้ ในโปรแกรมภาษาจาวายงั มีขอ้ มูลชนิดสายอกั ขระ (String)
ซ่ึงสามารถประกาศตวั แปรชนิดน้ีไดเ้ ลย โดยภายในจะบรรจุสตริงไดจ้ านวนมาก เช่น
String name= “Testing name” หมายถึง ประกาศตวั แปร name เป็ นชนิดสตริงและ
กาหนดคา่ เร่ิมตน้ เป็นขอ้ ความ “Testing name”
ตวั ดาเนินการ
ตวั ดาเนินการ (Operator) คือสัญลกั ษณ์ (Symbol) ซ่ึงถูกใชแ้ ทนการคานวณอยา่ งง่ายๆ เช่น
การบวก และการคูณ ตวั ดาเนินการท้งั หมดในจาวาดาเนินการตามท่ีคาดเอาไวเ้ พราะเป็ นสัญลกั ษณ์
ทางคณิตศาสตร์ (Allen B. Downey, 2011, p.17) ซ่ึงเดวิด เอทเธอริดจ์ (David Etheridge, 2009, p.
58) แบง่ ออกดงั น้ี
- ตวั ดาเนินการกาหนดค่าอยา่ งง่าย (Simple Assignment Operator) ไดแ้ ก่เครื่อง =
- ตวั ดาเนินการทางคณิตศาสตร์ (Arithmetic Operator) ไดแ้ ก่ +, -, *, /, และ %
- ตวั ดาเนินการที่กระทากบั ค่าเพียงคา่ เดียว (Unary Operator) ไดแ้ ก่ +, -, ++, --, และ !
- ตวั ดาเนินการเทียบเท่าและความสัมพนั ธ์ (Equality and Relational Operator) ไดแ้ ก่
==, !=, >=, <=, >, และ <
- ตวั ดาเนินการเง่ือนไข (Conditional Operator) ไดแ้ ก่ && และ ||
- ตวั ดาเนินการเปรียบเทียบชนิด (Type Comparison Operator) ที่ใชเ้ ปรียบเทียบวตั ถุซ่ึง
ผลการเปรี ยบเทียบออกมาเป็ นบูลีน(Boolean)
ในขณะที่ พนิดา พานิชกุล (2554, หนา้ 82-105) ไดน้ าเสนอเน้ือหาเก่ียวกบั ตวั ดาเนินการ
แบ่งเป็ น ตวั ดาเนินการทางคณิตศาสตร์ ตวั ดาเนินการในการกาหนดค่า ตวั ดาเนินการเก่ียวกับ
ความสมั พนั ธ์ และตวั ดาเนินการทางตรรกะเทา่ น้นั
ดงั น้นั ในเอกสารประกอบการสอนน้ีจึงแบง่ ตวั ดาเนินการดงั น้ี
1) กลุ่มกาหนดคา่ (Assignment Operator) ไดแ้ ก่ =, +=, -=, *=, …
2) กลุ่มคานวณ (Mathematic Operator) ไดแ้ ก่ +, -, *, /, %, ++, --, …
3) กลุ่มเปรียบเทียบ (Relational Operator) ไดแ้ ก่ ==. !=, <, >, <=, >=, …
4) กลุ่มเปรียบเทียบตรรกะ (Boolean Operator) ไดแ้ ก่ &&, ||, !
82
ตารางท่ี 3.2 แสดงกลุ่มตวั ดาเนินการกาหนดคา่
ตวั ดาเนินการ หนา้ ที่ ตวั อยา่ ง
+= กาหนดคา่ ปัจจุบนั เท่ากบั ค่าปัจจุบนั บวกกบั คา่ ดา้ นขวา X+=5; หมายถึง X=X+5;
-= กาหนดค่าปัจจุบนั เท่ากบั ค่าปัจจุบนั ลบกบั ค่าดา้ นขวา X-=5; หมายถึง X=X-5;
*= กาหนดค่าปัจจุบนั เท่ากบั ค่าปัจจุบนั คูณกบั คา่ ดา้ นขวา X*=5; หมายถึง X=X*5;
/= กาหนดคา่ ปัจจุบนั เท่ากบั ค่าปัจจุบนั หารกบั คา่ ดา้ นขวา X/=5; หมายถึง X=X/5;
%= กาหนดค่าปัจจุบนั เท่ากบั ค่าปัจจุบนั หารเอาเศษกบั ค่า X%=5; หมายถึง
ดา้ นขวา X=X%5;
ตารางที่ 3.3 แสดงกลุ่มคานวณ ตวั อยา่ ง
ตวั ดาเนินการ หนา้ ที่ X=X+5;
+ ดาเนินการบวก X=X-5;
- ดาเนินการลบ X=X*5;
* ดาเนินการคูณ X=X/5;
/ ดาเนินการหาร X=X%5;
% ดาเนินการหารเอาเศษ X++; หรือ ++X;
++ ดาเนินการเพมิ่ คา่ เดิมไปอีก 1 X— หรือ --X;
-- ดาเนินการลบค่าเดิมไปอีก 1
ตารางท่ี 3.4 แสดงตวั ดาเนินการกลุ่มเปรียบเทียบ
ตวั ดาเนินการ หนา้ ท่ี ตวั อยา่ ง
== เทียบวา่ เท่ากนั หรือไม่ X==5; หมายถึง X เท่ากบั 5 หรือไม่
!= เทียบวา่ ไม่เทา่ กนั หรือไม่ X!=5; หมายถึง X ไมเ่ ทา่ กบั 5 หรือไม่
> เทียบวา่ มากกวา่ หรือไม่ X>5; หมายถึง X มากกวา่ 5 หรือไม่
< เทียบวา่ นอ้ ยกวา่ หรือไม่ X<5; หมายถึง X นอ้ ยกวา่ 5 หรือไม่
>= เทียบวา่ มากกวา่ หรือเทา่ กบั X>=5; หมายถึง X มากกวา่ หรือเทา่ กบั 5 หรือไม่
หรือไม่
<= เทียบวา่ นอ้ ยกวา่ หรือไม่ X<=5; หมายถึง X นอ้ ยกวา่ หรือเทา่ กบั 5 หรือไม่
83
ตารางท่ี 3.5 แสดงตวั ดาเนินการตรรกะ ตวั อยา่ ง
ตวั ดาเนินการ หนา้ ท่ี A&&B หมายถึง A และ B
&& ดาเนินการ AND A||B หมายถึง A หรือ B
|| ดาเนินการ OR !A หมายถึง ไมใ่ ช่ A (NOT A)
! ดาเนินการ NOT
ข้นั ตอนการดาเนินการ (Precedence of Operators)
เม่ือมีการประกาศและกาหนดค่าการคานวณโปรแกรมจะดาเนินการคานวณตามสัญลกั ษณ์
ที่ใชใ้ นการคานวณซ่ึงจะเรียงลาดบั การประมวลผลดงั น้ี
1. ()
2. ++,--
3. *,/,%
4. +,-
5. +=,-=,*=,/=,%=
รหสั หลดุ พ้น (Escape Sequence)
ในการเขียนรหสั ตน้ ฉบบั ดว้ ยภาษาจาวาสามารถท่ีจะแทรกรหสั หลุดพน้ เหล่าน้ีเขา้ ไปได้
เช่นเดียวกนั กบั โปรแกรมภาษาซี ซ่ึงมีดงั น้ี
Backspace \b
Tab \t
Linefeed \n
Carriage Return \r
Form Feed \f
ฐานแปด \ddd
ฐานสิบหก \uxxxx
ตวั อยา่ งโปรแกรมดาเนินการดว้ ยตวั ดาเนินการ
84
ตัวอย่าง 3.1 กาหนด x=10 y=5 จงเขียนโปรแกรมหาผลบวก x+y, x*10 และ x-10 แลว้ แสดง
ผลลพั ธ์บนจอภาพ
โปรแกรม :
public class operateClass
{
public static void main(String args[])
{ int x=10;
int y=5;
int result;
result = x+y;
System.out.println(“Result :”+result);
System.out.println(x*10);
System.out.println((x-10));
}
}
โปรแกรมน้ีแสดงผลการบวกค่าระหวา่ ง x กบั y หลงั จากน้นั คูณดว้ ย 10 และ x-10
ตัวอย่าง 3.2 ตวั อยา่ งการหาผลการคานวณการหลาย ๆ แบบ
โปรแกรม :
public class operateClass_1
{
public static void main(String args[])
{ int x=1;
int y=5;
int result;
result = --x+y--;
System.out.println(“Result :”+result);
System.out.println(x%10);
System.out.println(((y-10)*x));
85
}
}
โปรแกรมน้ีแสดงผลการบวกค่าระหวา่ ง x กบั y ภายหลงั ที่ลบ x ดว้ ย 1 และหลงั การบวกเพ่ิมค่า y
ไป 1 หลงั จากน้นั x หารเอาเศษดว้ ย 10 และ y ลบดว้ ย 10 แลว้ คูณดว้ ยคา่ x
การควบคุมโครงสร้าง
เดวดิ เอทเทอริดจ์ (David Etherige, 2009, p.19-40) ไดแ้ บ่งคาสั่งควบคุมไวด้ งั น้ี
1. คาสง่ั ตามลาดบั
2.คาสั่งเงื่อนไข
3.คาสง่ั ตดั สินใจ
4.คาสงั่ วนซ้า
ส่วน พิเชษฐ์ ศิริรัตนไพศาลกุล (2553, หน้า 71-92) ได้แบ่งคาส่ังในการควบคุม
โครงสร้างไดแ้ ก่ if , switch...case และคาสั่งวนซ้า คือ for, while และ do...while
ดงั น้นั การควบคุมโครงสร้าง (Control Structures) ของโปรแกรมไดแ้ ก่ การกาหนดเงื่อนไข
และการวนซ้าของโปรแกรม เน้ือหาส่วนน้ีจะจาแนกโครงสร้างดงั กล่าวทีละอยา่ งโครงสร้าง
1. คาส่ังเงอื่ นไข (Condition command)
ประกอบดว้ ยคาสงั่ if และ switch
คาสง่ั if เป็นคาสงั่ ควบคุมท่ีกาหนดทางเลือกใหก้ บั โปรแกรมแบบสองทางเลือก แต่มีความ
ยดื หยนุ่ สามารถใชง้ านร่วมกบั ตวั ดาเนินการตรรกะได้
คาสั่ง switch เป็ นคาสั่งควบคุมท่ีกาหนดทางเลือกแบบตายตวั และไม่สามารถใช้งาน
ร่วมกบั ตวั ดาเนินเป็นเงื่อนไขปลายเปิ ดเพ่ือตรวจสอบเงื่อนไขร่วมกนั เช่นเดียวกนั กบั if ได้
คาส่ัง if แบบคาส่งั เดียว
if(เงื่อนไข)
คาส่ังที่ 1;
else
คาสั่งที่ 2;
ตวั อยา่ ง เช่น
if(x==5)
86
System.out.println(“Test Ok”);
else
System.out.println(“Not Ok”);
คาสั่ง if แบบมหี ลายคาสั่ง
if(เงื่อนไข){
คาส่ังชุดท่ี 1 จากคาส่ัง 1 ถงึ คาสั่ง N;
}
else
{
คาสั่งชุดท่ี 2 จากคาสั่ง 1 ถึง คาส่ัง N;
}
ตวั อยา่ ง เช่น
if(x>=5){
System.out.println(“Test Ok”);
System.out.println(“Result :”+a);
}
else
{
System.out.println(“Not Ok”);
System.out.println(“Empty”);
}
ตวั อย่าง 3.3 จงเขียนโปรแกรมป้ อนตวั เลขหน่ึงจานวนแลว้ แสดงเทา่ กบั 5 หรือไม่
รหัสโปรแกรม :
import java.io.*;
public class excharInput
{
public static void main(String args[]) throws IOException
87
{ char c;
System.out.println(“Input character :”);
c=(char)System.in.read();
if(c==‘5’){
System.out.println(“Test Ok You select 5”);
}
else
{
System.out.println(“Not Ok You select :”+c);
}
}
}
โปรแกรมน้ีจะใหผ้ ใู้ ชป้ ้ อนอกั ขระ 1 ตวั และหลงั จากน้นั ตรวจสอบวา่ หากเป็ น ‘5’ แสดง
ขอ้ ความ “Test Ok You select 5” แตห่ ากไม่ใช่อกั ขระดงั กล่าว แสดงขอ้ ความ
“Not Ok You select :” ตามดว้ ยอกั ขระท่ีป้ อนเขา้ มา
คาส่ัง switch
switch( ตัวแปรคงทแ่ี บบตัวเลขจานวนเต็ม)
{
case 1 : { คาสั่งชุดท่ี 1; break; }
case 2 : { คาสั่งชุดท่ี 2; break; }
….
default : {คาสั่งชุดที่ N; break; }
}
ตวั อยา่ ง เช่น
Swith(a)
{
case 1: { System.out.println(“1”); break;}
case 2: { System.out.println(“2”); break;}
case 3: { System.out.println(“3”); break;}
88
default : break;
}
ตวั อย่าง 3.4 จงเขียนโปรแกรมสร้างเมนูใหผ้ ใู้ ชเ้ ลือกกด 4 รายการ
รหสั โปรแกรม :
import java.io.*;
public class testSwitch {
public static void main(String[] args)throws IOException {
char c;
String menu="";
System.out.println("Input char");
c=(char)System.in.read();
menu=menu+c;
switch(Integer.parseInt(menu)){
case 1:{System.out.println("Menu 1 OK :"+c); break;}
case 2:{System.out.println("Menu 2 OK :"+c); break;}
case 3:{System.out.println("Menu 3 OK :"+c); break;}
case 4:{System.out.println("Menu 4 OK :"+c); break;}
default :{break;}
}
}
}
โปรแกรมน้ีจะใหผ้ ใู้ ชป้ ้ อนอกั ขระ 1 ตวั และหลงั จากน้นั ตรวจสอบวา่
‘1’ แสดงขอ้ ความ "Menu 1 OK :" ตามดว้ ย ‘1’
‘2’ แสดงขอ้ ความ "Menu 2 OK :" ตามดว้ ย ‘2’
‘3’ แสดงขอ้ ความ "Menu 3 OK :" ตามดว้ ย ‘3’
‘4’ แสดงขอ้ ความ "Menu 4 OK :" ตามดว้ ย ‘4’
2. คาส่ังควบคุมวนซา้
คาสั่งกลุ่มน้ีจะประกอบดว้ ย for , while และ do…while ซ่ึงจะควบคุมการวนทางานซ้า
ของโปรแกรม
89
คาสั่ง for
for(ค่าเริ่มต้น;ค่าสิ้นสุด;เพมิ่ หรือลดค่า)
คาส่ัง;
for(ค่าเริ่มต้น;ค่าสิ้นสุด;เพม่ิ หรือลดค่า){
คาส่ังที่ 1 ถึงคาส่ังที่ N;
}
ตวั อยา่ ง เช่น
for(int i=0;i<20;i++)
System.out.println(“test”);
for(int j=50;j>2;j--){
System.out.println(“test1”);
System.out.println(“test2”);
}
ตวั อย่าง 3.5 จงเขียนโปรแกรมทดสอบลูป for
รหสั โปรแกรม :
public class testFor {
public static void main(String[] args) {
for(int i=0;i<20;i++)
System.out.println("test");
for(int j=50;j>2;j--){
System.out.println("test1");
System.out.println("test2");
}
}
}
โปรแกรมน้ีจะวนโดยใช้ for เพือ่ แสดงขอ้ ความ test 20 คร้ัง และ test1,test2 จานวน 48
คร้ัง
คาสั่ง while
90
while(เงอ่ื นไข){
คาส่ังท่ี 1 ถึงคาส่ังที่ N;
}
ตวั อยา่ ง เช่น
while(K<20){
System.out.println(“test”);
k++;
}
ตัวอย่าง 3.6 จงเขียนโปรแกรมทดสอบ while
รหัสโปรแกรม :
public class testWhile {
public static void main(String[] args) {
int K=0;
while(K<20){
System.out.println("test");
K++;
}
}
}
โปรแกรมน้ีจะวนโดยใช้ while เพอื่ แสดงขอ้ ความ test 20 คร้ัง
คาสั่ง do..while
do{
คาส่ังท่ี 1 ถงึ คาส่ังท่ี N;
}while(เงื่อนไข);
ตวั อยา่ ง เช่น
do{
91
System.out.println(“test”);
k++;
} while(K<20);
ตวั อย่าง 3.7 จงเขียนโปรแกรมทดสอบ do…while
รหัสโปรแกรม :
public class testDoWhile {
public static void main(String[] args) {
int K=0;
do{
System.out.println("test");
K++;
}while(K<20);
}
}
โปรแกรมน้ีจะวนโดยใช้ do..while เพอื่ แสดงขอ้ ความ test 20 คร้ัง
การเขยี นโปรแกรมตดิ ต่อผู้ใช้แบบกราฟิ กอนิ เทอร์เฟส
จาวารวมชุดคาส่ังลกั ษณะของจียูไอ (GUI) ไวใ้ นแพคเกจของ Java Foundation Class
(JFC) โดยมีเคร่ืองมือต่างๆ ซ่ึงใชง้ านกนั มาก (ธีรวฒั น์ ประกอบผล, 2553, หนา้ 233-234) การใช้
งานจาวาสวงิ ซ่ึงเป็นแพคเกจหน่ึง (javax.swing) ของภาษาจาวาใชง้ านติดตอ่ กบั ผใู้ ชด้ ว้ ยกราฟิ ก เช่น
ฟอร์ม ป่ ุม รายการเลือก หรือเคร่ืองมืออ่ืน ๆ ท่ีใชก้ ราฟิ กเป็ นหลกั คุณสมบตั ิท่ีใชง้ านเป็ นหลกั คือ
การสืบทอดคุณสมบตั ิต่าง ๆ ของคลาสท่ีมีในแพคเกจจาวาสวิงมาใช้งาน ข้ันตอนการใช้งาน
โดยละเอียดจะอธิบายในภาคผนวกต่อไป ในบทน้ีจะเน้นให้เห็นรายละเอียดของรหัสตน้ ฉบบั ใน
แนวทางท่ีประกาศตวั แปรวตั ถุเพ่อื ใชง้ าน การสืบทอดคุณสมบตั ิ เป็นตน้
ข้นั ตอนการใชง้ านจาวาสวงิ ดว้ ยโปรแกรมเน็ตบีนน้นั มีข้นั ตอน ดงั น้ี
1. สร้างฟอร์มดว้ ยการเรียกใชก้ ารสืบทอดจากเจเฟรมฟอร์ม
2. นาเอาเครื่องมือสวงิ ท่ีจาวาเตรียมไวใ้ หม้ าวางบนฟอร์ม
3. เขียนรหสั ตน้ ฉบบั เพอ่ื ควบคุมใหไ้ ดง้ านตามท่ีตอ้ งการ
92
4. รันโปรแกรมดว้ ยฟอร์มท่ีสร้างข้ึน
ส่ิงที่สาคญั สาหรับที่จะนาเสนอเมื่อดาเนินการตามข้นั ตอนท่ี 1 โปรแกรมเน็ตบีนจะสร้าง
รหสั ตน้ ฉบบั โดยใชก้ ารสืบทอดคุณสมบตั ิมาให้ ตวั อยา่ งที่ 3.8 แสดงการสร้างฟอร์มและรหสั การ
สืบทอดคุณสมบตั ิและส่วนการรันโปรแกรม
ตัวอย่างที่ 3.8 จงเขียนฟอร์มจากจาวาสวิงดว้ ยเน็ตบีน แล้วอธิบายว่า รหสั ตน้ ฉบบั มีส่วนสาคญั
อยา่ งไร หลงั จากน้นั ใหแ้ สดงผลการรันโปรแกรม
ข้นั ตอนการอธิบายดงั น้ี
สร้างฟอร์มช่ือ Ex_3_8 คลิกขวาท่ี แพคเกจ ของท่ีสร้างของโปรเจค เลือก New->JFrame
Form ใหด้ งั ภาพท่ี 3.17
ภาพท่ี 3.17 แสดงตวั อยา่ งฟอร์ม Ex_3_8
รหสั ตน้ ฉบบั ที่โปรแกรมเน็ตบีนสร้างใหม้ ีดงั น้ี
/*
* Ex_3_8.java ส่วนการอธิบายการสร้างโปรแกรม
*
* Created on 18 กนั ยายน 2550, 14:27 น.
*/
package testpreview; ช่ือแพคเกจ
/**
93
*
* @author user ส่วนการอธิบายผเู้ ขียนโปรแกรม
*/
public class Ex_3_8 extends javax.swing.JFrame {
/** Creates new form Ex_3_8 */ ส่วนการเรียกใชค้ ุณสมบตั ิของเจเฟรมฟอร์ม
public Ex_3_8() { ส่วนการเรียกเมธอด initComponents() ของ
initComponents(); คอนสตรักเตอร์เพ่อื สร้างเครื่องมือติดต่อกบั ผใู้ ช้
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
ส่วนการสร้างเคร่ืองมือสาหรับการติดตอ่ ผใู้ ช้
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
94
}// </editor-fold>
/**
* @param args the command line arguments
*/ ส่วนเมธอด main เรียกสร้างวตั ถุเพื่อให้
public static void main(String args[]) { สามารถรันฟอร์มได้
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ex_3_8().setVisible(true);
}
});
}
}
คาอธิบายรหัสต้นฉบับ
จากตวั อยา่ งน้ีใหพ้ จิ ารณาเฉพาะส่วนที่ และ เทา่ น้นั
ส่วนที่ เป็ นส่วนการสร้างคลาสท่ีสืบทอดคุณสมบตั ิมาจาก javax.swing.JFrame โดย
กาหนดชื่อคลาส Ex_3_8 ดงั น้ี public class Ex_3_8 extends javax.swing.JFrame
ส่วนที่ เป็ นส่วนการสร้างวตั ถุ ซ่ึงในการใช้งานฟอร์มที่สร้างด้วยโปรแกรมเน็ตบีน
ส่วนการสร้างวัตถุจะเรี ยกชื่อคลาสของตนเองในเมธอด main ดังตัวอย่างน้ีคือ new
Ex_3_8().setVisible(true) ซ่ึงเป็นการสร้างวตั ถุโดยใชใ้ หร้ ันทนั ทีเมื่อมีการสร้าง ซ่ึงเจเฟรมมีเมธอด
setVisible() ถา้ กาหนดใหเ้ ป็น true ผลการรันของโปรแกรมน้ีจะเป็นดงั ภาพท่ี 3.18
ภาพที่ 3.18 แสดงผลการรันของตวั อยา่ งท่ี 3.8