The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by ปิติ เกตุ, 2021-04-04 04:44:55

Java OOP Programming

Java OOP Programming

Java OOP

Programming

การเขียนโปรแกรมเชิงวตั ถดุ ้วยภาษาจาวา

เนือ้ หาประกอบด้วย

ความหมายและแนวคดิ การเขียนโปรแกรมเชิงวัตถุ
ภาษายูเอม็ แอล
ความรู้ท่ัวไปเก่ยี วกับภาษาจาวา
การจาลองสรรพส่งิ ด้วยแนวคดิ เชิงวตั ถุ
 คลาสและเมธอด
ความสัมพนั ธ์ของคลาส
 การรับทอด
อนิ เทอร์เฟสและแอบสแทรกคลาส
 ภาวะพหุสัณฐาน
ดไี ซน์แพทเทริ ์นและเฟรมเวริ ์ก

โดย เชาวลิต ขนั คา

คำนำ

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

การเขียนโปรแกรมยุคใหม่ เรียกว่า 4GL (4th Generation Language) เป็ นการเขียน
โปรแกรมเชิงวตั ถุ ท่ีตอ้ งเริ่มคิดแกป้ ัญหาโดยกาหนดส่ิงที่เกี่ยวขอ้ งออกมาเป็ นวตั ถุ และขบั เคลื่อน
โปรแกรมโดยพฤติกรรมของวตั ถุที่สร้างข้ึน การเร่ิมเขียนโปรแกรมหลงั จากคิดให้เป็ นวตั ถุแลว้ จะ
เร่ิมเขียนโปรแกรมโดยสร้างแม่แบบของวตั ถุท่ีเรียกวา่ คลาส (Class) ในแนวคิดเชิงวตั ถุถือวา่ เป็ น
แม่แบบของวตั ถุ หลงั จากน้นั ตอ้ งวางโครงโปรแกรมตามแนวการแกป้ ัญหาตา่ ง และเขียนใหไ้ ดด้ งั ที่
กาหนดวตั ถุประสงคไ์ ว้

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

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

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

เชาวลิต ขนั คา
9 พฤษภาคม 2554

สารบญั

หนา้
คานา.................................................................................................................................... (1)
สารบญั ................................................................................................................................ (3)
บทท่ี 1 โปรแกรมคอมพวิ เตอร์ ...........................................................................................1

ภาษาคอมพวิ เตอร์...................................................................................................1
ข้นั ตอนการเขียนโปรแกรมคอมพิวเตอร์ ................................................................7
ความหมายและแนวคิดการเขียนโปรแกรมเชิงวตั ถุ................................................9
สรุป ......................................................................................................................21
แบบฝึกหดั ทา้ ยบท................................................................................................22
เอกสารอา้ งอิง.......................................................................................................................23

บทที่ 2 ภาษายเู อม็ แอล.......................................................................................................25
ความรู้ทว่ั ไปเก่ียวกบั ภาษายเู อม็ แอล......................................................................25
ธิง ..........................................................................................................................28
ความสมั พนั ธ์.........................................................................................................34
ไดอะแกรม ............................................................................................................37
ไวยากรณ์ของยเู อม็ แอล .........................................................................................59
สรุป .......................................................................................................................62
แบบฝึกหดั ทา้ ยบท.................................................................................................63

เอกสารอา้ งอิง.......................................................................................................................64

บทที่ 3 ภาษาจาวาเบ้ืองตน้ .................................................................................................66
ความรู้ทวั่ ไปเกี่ยวกบั ภาษาจาวา.............................................................................66
การเตรียมสภาวะแวดลอ้ มสาหรับเขียนโปรแกรมดว้ ยภาษาจาวา .........................68
ชนิดขอ้ มลู ของภาษาจาวา ......................................................................................79
ตวั ดาเนินการ .........................................................................................................81
การควบคุมโครงสร้าง ...........................................................................................85
การเขียนโปรแกรมติดต่อผใู้ ชแ้ บบกราฟิ กอินเทอร์เฟส.........................................91
สรุป .......................................................................................................................95
แบบฝึกหดั ทา้ ยบท.................................................................................................96

(4)

เอกสารอา้ งอิง.......................................................................................................................97

บทที่ 4 การจาลองสรรพสิ่งดว้ ยแนวคิดเชิงวตั ถุ ..............................................................100
วตั ถุ......................................................................................................................100
คลาส ...................................................................................................................105
การเปล่ียนแนวคิดเชิงวตั ถุเป็นสญั ลกั ษณ์คลาสไดอะแกรม ................................110
การออกแบบคลาสและการสร้างวตั ถุ..................................................................118
สรุป .....................................................................................................................128
แบบฝึกหดั ทา้ ยบท...............................................................................................129

เอกสารอา้ งอิง.....................................................................................................................130

บทที่ 5 คลาสและเมธอด.................................................................................................131
การสร้างคลาสโดยไมส่ ร้างวตั ถุ .........................................................................131
เมธอด ................................................................................................................. 142
คอนสตรักเตอร์ ................................................................................................... 159
เมธอดสาหรับการเขา้ ถึงแอตทริบิวต์..................................................................161
เมธอดโอเวอร์โหลดดิ้ง ........................................................................................ 163
สรุป ....................................................................................................................167
แบบฝึกหดั ทา้ ยบท..............................................................................................168

เอกสารอา้ งอิง.....................................................................................................................169

บทที่ 6 ความสัมพนั ธ์ของคลาส.......................................................................................170
ความสัมพนั ธ์แบบดีเพนเดนซี .............................................................................170
ความสัมพนั ธ์แบบแอคกรีเกชนั ...........................................................................181
ความสัมพนั ธ์แบบคอมโพสสิชนั .......................................................................196
ความสัมพนั ธ์แบบแอสโสสิเอชนั ........................................................................201
สรุป ....................................................................................................................211
แบบฝึกหดั ทา้ ยบท..............................................................................................212

เอกสารอา้ งอิง.....................................................................................................................213

(5)

บทท่ี 7 การรับทอด..........................................................................................................214
แนวคิดของการรับทอด .......................................................................................214
การเขียนโปรแกรมแบบรับทอด .......................................................................... 217
การเรียกใชง้ านคอนสตรักเตอร์ super และอา้ งอิง this ........................................238
การปกป้ องและการห่อหุม้ ...................................................................................245
โอเวอร์ไรด์ .......................................................................................................... 253
สรุป .....................................................................................................................256
แบบฝึกหดั ทา้ ยบท...............................................................................................257

เอกสารอา้ งอิง.....................................................................................................................258

บทท่ี 8 อินเทอร์เฟสและแอบสแทรกคลาส.....................................................................259
แนวคิดของการสร้างอินเทอร์เฟส .......................................................................259
การใชง้ านอินเทอร์เฟสแบบเด่ียว ........................................................................266
การใชง้ านอินเทอร์เฟสร่วมกนั ............................................................................280
การใชง้ านอินเทอร์เฟสร่วมกบั การรับทอด .........................................................292
แอบสแทรกคลาส ................................................................................................ 299
สรุป .....................................................................................................................302
แบบฝึกหดั ทา้ ยบท...............................................................................................303

เอกสารอา้ งอิง.....................................................................................................................304

บทท่ี 9 ภาวะพหุสัณฐาน..................................................................................................305
ความหมายและแนวคิดของพหุสณั ฐาน..............................................................305
เครื่องมือสาหรับสร้างการใชง้ านพหุสัณฐาน .....................................................311
การกาหนดตวั แปรแบบยดึ ติดและแบบพลวตั ....................................................319
การสร้างพหุสัณฐานโดยโอเวอร์โหลดดิ้ง .......................................................... 330
สรุป ....................................................................................................................349
แบบฝึกหดั ทา้ ยบท..............................................................................................350

เอกสารอา้ งอิง.....................................................................................................................351

บทท่ี 10 ดีไซนแ์ พทเทิร์นและเฟรมเวริ ์ก ..........................................................................352
แนวคิดของดีไซน์แพทเทิร์น ..............................................................................352

(6)

ครีเอชนั ดีไซน์แพทเทิร์น ....................................................................................355
สตรักเจอรัลดีไซนแ์ พทเทิร์น..............................................................................365
บีเฮฟวเี ออร์ดีไซน์แพทเทิร์น ..............................................................................374
เฟรมเวริ ์ก...........................................................................................................377
สรุป ...................................................................................................................386
แบบฝึกหดั ทา้ ยบท.............................................................................................387
เอกสารอา้ งอิง.....................................................................................................................388

บรรณานุกรม ...................................................................................................................... 389

บทท่ี 1
โปรแกรมคอมพวิ เตอร์

คอมพิวเตอร์(Computer) คือ อุปกรณ์อิเล็กทรอนิกส์ท่ีสามารถประมวลผลขอ้ มูลให้ได้
โดยอตั โนมตั ิตามโปรแกรมท่ีมนุษยไ์ ด้ป้ อนเขา้ ไปเพ่ือส่ังให้ทางาน (สมโภชน์ ชื่นเอี่ยม, 2553,
หนา้ 11) องคป์ ระกอบที่ทาให้คอมพิวเตอร์ประมวลผลดงั กล่าวไดน้ ้นั ไดแ้ ก่ ฮาร์ดแวร์ (Hardware)
และซอฟต์แวร์(Software) ฮาร์ดแวร์ คือ ตวั เคร่ืองคอมพิวเตอร์และอุปกรณ์รายรอบ(Peripheral
Devices)ซ่ึงสามารถสัมผสั ได้จับต้องได้ ส่วนซอฟต์แวร์ คือ โปรแกรมท่ีใช้สั่งงานเครื่ อง
(วชั ราภรณ์ สุริยาภิวฒั น์, 2553, หนา้ 57) เรียกวา่ โปรแกรมคอมพิวเตอร์ซ่ึงไม่สามารถสัมผสั ไดจ้ บั
ตอ้ งได้ การพฒั นาซอฟตแ์ วร์ตอ้ งอาศยั โปรแกรมภาษาคอมพิวเตอร์เป็ นเครื่องมือ ในขณะท่ีรูปแบบ
การพัฒนาโปรแกรมเป็ นส่วนสาคญั ในการกาหนดคุณภาพและความรวดเร็วของโปรแกรม
แนวทางท่ีนิยมใชใ้ นปัจจุบนั คือ การพฒั นาโปรแกรมเชิงวตั ถุ (Object Oriented Programming)
ซ่ึงมีความสามารถสูงมากและการพฒั นากแ็ ตกต่างจากการเขียนโปรแกรมโครงสร้างแบบเดิม บทน้ี
นาเสนอความรู้เบ้ืองต้นเก่ียวกับ ภาษาคอมพิวเตอร์ การพัฒนาโปรแกรมโดยใช้โปรแกรม
ภาษาคอมพิวเตอร์ยุคต่างๆ ข้นั ตอนการพฒั นาโปรแกรม นอกจากน้ันยงั เปรียบเทียบลกั ษณะ
การทางานของโปรแกรมแบบโครงสร้างและโปรแกรมแบบเชิงวตั ถุ รวมถึงให้ความรู้เก่ียว
เคร่ืองมือสาหรับออกแบบและเขียนโปรแกรมเชิงวตั ถุ พอสังเขป

ภาษาคอมพวิ เตอร์

โปรแกรมคอมพิวเตอร์แบ่งออกเป็ น 2 ประเภท คือ โปรแกรมระบบและโปรแกรม
ประยุกต์ (สมโภชน์ ชื่นเอ่ียม, 2553, หน้า 187) โปรแกรมระบบทาหนา้ ที่ควบคุมการทางานของ
คอมพิวเตอร์รวมถึงอุปกรณ์ โปรแกรมเหล่าน้ีได้แก่ ระบบปฏิบัติการ (Operating system)
โปรแกรมอรรถประโยชน์ (Utility program) โปรแกรมภาษาคอมพิวเตอร์ (Programming
languages) เป็ นตน้ ส่วนโปรแกรมประยกุ ต์ คือ โปรแกรมท่ีเขียนข้ึนเพ่ือส่ังให้คอมพิวเตอร์ทางาน
เฉพาะอยา่ ง (วชั ราภรณ์ สุริยาภิวฒั น์, 2553, หนา้ 143) เช่น โปรแกรมท่ีใช้ในการจดั การกราฟิ ก
โปรแกรมเกม โปรแกรมสาหรับสานกั งาน เป็ นตน้ ผทู้ ่ีมีบทบาทสาคญั ท่ีสุดต่อการเขียนโปรแกรม
คือ โปรแกรมเมอร์ (Programmer) ซ่ึงเป็ นผูเ้ ขียนชุดคาส่ังต่างๆ เพื่อทาให้คอมพิวเตอร์ทางานได้

2

ตามท่ีผใู้ ชต้ อ้ งการ ซ่ึงผเู้ ขียนโปรแกรมตอ้ งอาศยั โปรแกรมภาษาคอมพิวเตอร์ในการเขียนชุดคาส่ัง
เหล่าน้นั

ความหมายของโปรแกรมภาษาคอมพวิ เตอร์

ธีรวฒั น์ ประกอบผล (2545, หนา้ 3) กล่าววา่ ภาษาคอมพิวเตอร์ คือ ภาษาที่ใชส้ ่ือสารกนั
ระหว่างคอมพิวเตอร์กับมนุษย์ ส่วน เพ็ญศรี ปักกะสี นัง (2546, หน้า 97) กล่าวว่า
ภาษาคอมพวิ เตอร์เป็นการนาชุดคาสงั่ แต่ละคาสง่ั มาต่อกนั ใหค้ อมพิวเตอร์ทางาน การเขียนชุดคาส่ัง
น้ีไม่วา่ จะเขียนดว้ ยภาษาอะไรจะเรียกว่าโปรแกรมตน้ ฉบบั (Source program) หรือ รหสั ตน้ ฉบบั
(Source code)

ขณะที่ พนิดา พานิชกุล (2554, หน้า 2) กล่าวว่า ภาษาการโปรแกรมคอมพิวเตอร์
(Computer Programming Language) เป็ นภาษาท่ีโปรแกรมเมอร์ใชใ้ นการเขียนชุดคาสั่งหรือเขียน
โปรแกรมคอมพิวเตอร์เพอื่ สัง่ ใหค้ อมพิวเตอร์ทางาน

ดงั น้ัน โปรแกรมภาษาคอมพิวเตอร์ คือ โปรแกรมท่ีใช้เพ่ือการพฒั นาโปรแกรมอื่นๆ
แบง่ ออกเป็นหลายระดบั เช่น ระดบั ภาษาระดบั ต่า ภาษาระดบั สูง และภาษาธรรมชาติ เป็ นตน้ ผใู้ ช้
ภาษาคอมพิวเตอร์ คือ โปรแกรมเมอร์ ซ่ึงเป็ นผูอ้ อกแบบและเขียนโปรแกรมให้ผู้อื่นใช้งาน
โด ย โป รแ ก ร ม เ ม อร์ จ ะ เ ขี ย น โป รแ ก รม ด้ว ย ภ า ษ า ค อ ม พิ ว เ ต อร์ ต า ม ค ว า ม ถ นัด แ ล ะ เ ห ม า ะ ส ม
หลงั จากน้ันจะแปลคาสั่งของโปรแกรมท่ีเขียนข้ึนด้วยคอมไพเลอร์ (Compiler) หรืออินเทอร์-
พรีเตอร์ (Interpreter) ให้เป็ นคาสั่งที่ติดต่อกบั คอมพิวเตอร์ได้ ซ่ึงอยู่ในรูปแบบของภาษาเคร่ือง
เพื่อควบคุมใหค้ อมพวิ เตอร์ทางานไดต้ ามท่ีตอ้ งการ แนวคิดการพฒั นาโปรแกรมแสดงดงั ภาพที่ 1.1

โปรแกรมเมอร์ โปรแกรมภาษาท่ีใชส้ ่งั คอมพิวเตอร์ คอมพิวเตอร์

Machine language 100001010101
Assembly 100001010101
C/Pascal/COBOL 100001010101
VB/Delphi/Java/.NET 100001010101

ภาพที่ 1.1 แสดงความสมั พนั ธ์ระหวา่ งโปรแกรมภาษากบั การเขียนโปรแกรม

จากภาพที่ 1.1 อธิบายวา่ ไดเ้ มื่อโปรแกรมเรียนรู้รูปแบบก็นาสิ่งท่ีตอ้ งการแกไ้ ขปัญหามา
เขียนดว้ ยคาส่ังตามรูปแบบของภาษาน้นั ๆ หลงั จากน้นั ตวั แปลภาษาซ่ึงเป็ นโปรแกรมที่เขียนข้ึนมา

3

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

ยุคของภาษาคอมพวิ เตอร์

พนิดา พานิชกุล (2554, หนา้ 3-5) ไดแ้ บ่งยคุ ของภาษาคอมพิวเตอร์ไว้ 5 ยุค คือ ยุคท่ีหน่ึง
เป็นภาษาระดบั ล่างหรือภาษาเลขฐานสองเท่าน้นั สาหรับสั่งให้คอมพิวเตอร์ทางาน ยคุ ที่สองเป็ นยุค
ของภาษาสัญลกั ษณ์ที่เขียนคาส่ังให้เขา้ ใจง่าย และส้ันลงด้วยภาษาองั กฤษ ภาษายุคน้ีไดแ้ ก่ภาษา
Assembly ยุคที่สาม เป็ นภาษาระดบั สูงซ่ึงใกลเ้ คียงภาษามนุษยม์ ากข้ึน ภาษายุคน้ีไดแ้ ก่ C, Pascal,
COBOL เป็ นตน้ ภาษายุคที่สี่ เป็ นภาษาระดบั สูงแต่มีความสะดวกรวดเร็วในการพฒั นาโปรแกรม
และมีส่วนการติดต่อที่สวยงาม ตวั อยา่ งของภาษายุคน้ีไดแ้ ก่ ภาษาจาวา ภาษาวิชวลเบสิค เป็ นตน้
ส่วนภาษายุคท่ีห้า คือภาษาท่ีใช้พฒั นาซอฟต์แวร์สาหรับระบบผูเ้ ช่ียวชายเน้นการใช้งานแบบ
ปัญญาประดิษฐ์

ส่วน วชั ราภรณ์ สุริยาภิวฒั น์ (2553, หนา้ 149-153) แบ่งกลุ่มภาษาออกเป็ นกลุ่มภาษาเชิง
โพรซีเดอรัล (Procedural Programming Language) และโปรแกรมภาษาเชิงวตั ถุ (OOP) โดยท่ี
โปรแกรมเชิงโครงสร้างถูกแบง่ ออกเป็นภาษาเคร่ืองจกั ร ภาษาสญั ลกั ษณ์ และภาษาระดบั สูง

ววิ ฒั นาการของภาษาคอมพิวเตอร์แบ่งออกตามยุคของการพฒั นาหรือแบ่งตามระดบั ของ
ความใกล้เคียงกบั ภาษาของมนุษย์ ได้แก่ ภาษาเคร่ือง ภาษาแอสเซมบลี ภาษาระดบั สูง ภาษา
ระดบั สูงมาก และภาษาธรรมชาติ สาหรับในเอกสารประกอบการสอนเล่มน้ีจะแบ่งโดยเน้นดา้ น
การพฒั นาโปรแกรมภาษาตามการเขียนโปรแกรมโดยแบ่งดงั เป็ นยุคท่ี 1 ถึงยคุ ท่ี 5 โดยเนน้ ยคุ ที่ 4
(Fourth Generation Language : 4GL) ท่ีมีบทบาทในปัจจุบนั และยุคที่ 5 ( Fifth Generation
Language : 5GL) ซ่ึงจะมีความสาคญั มากในอนาคต และคาดวา่ โปรแกรมคอมพิวเตอร์ในยคุ ท่ี N
ซ่ึงการเขียนโปรแกรมอาจมิใช่เพียงโปรแกรมเมอร์เท่าน้ัน แต่มนุษย์ทุกคนจาเป็ นต้องเขียน
โปรแกรมดว้ ยภาษาธรรมชาติอยา่ งสมบรู ณ์แบบและการเขียนโปรแกรมสามารถทาไดอ้ ยา่ งง่ายดาย
และฝังเอาไวก้ บั อุปกรณ์และทุกสิ่งทุกอยา่ งในโลกน้ี จากสิ่งท่ีกล่าวมาขา้ งตน้ สามารถแบ่งยคุ ต่างๆ
ของคอมพวิ เตอร์ออกได้ 5 ยคุ ดงั น้ี

ยุคที่ 1: ภาษาเครื่อง

การพฒั นาโปรแกรมคอมพิวเตอร์ในยุคแรกใช้ภาษาเครื่อง หรือรหัสเคร่ือง (Machine
language or Machine code) การเขียนโปรแกรมตอ้ งป้ อนชุดคาส่ังโดยใชร้ หสั เลขฐานสอง คือ 0 กบั
1 ให้คอมพิวเตอร์โดยตรง ทาให้การเขียนโปรแกรมเป็ นภาระหนักของโปรแกรมเมอร์มาก
เนื่องจากไมม่ ีเครื่องมือท่ีช่วยในการพฒั นา

4

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

ยุคที่ 2: ภาษาแอสเซมบลี

ภาษาน้ีอยู่ในยุคท่ี 2 เร่ิมเมื่อประมาณตน้ ของช่วง ค.ศ. 1950 ยุคน้ีมีแนวคิดท่ีจะทาให้
ภาษาคอมพิวเตอร์มีความใกลเ้ คียงภาษามนุษยม์ ากข้ึน โดยนาเอาภาษาองั กฤษมาสร้างเป็ นคาส่ัง
ภาษาแอสเซมบลี (Assembly language) มีคาสั่งเป็ นคาภาษาองั กฤษง่าย ๆ เช่น ADD, SUB, MUL,
DIV แทนการบวก ลบ คูณ และหาร เป็ นตน้ การเขียนโปรแกรมในยุคน้ีตวั แปลภาษาจะแปลจาก
ภาษาองั กฤษมาเป็ นภาษาเครื่องโดยใช้ตวั แปลภาษาที่เรียกว่า แอสเซมเบลอร์ (Assembler)
โปรแกรมเมอร์ตอ้ งมีความรู้ท้งั รูปแบบการใชค้ าสั่งและระบบของฮาร์ดแวร์ของคอมพิวเตอร์เป็ น
อยา่ งดี จึงจะสามารถเขียนโปรแกรมไดด้ ี เคร่ืองมือที่ใชใ้ นการพฒั นาโปรแกรมภาษาในยคุ น้ีมีให้
เลือกมากข้ึน เช่นโปรแกรม Turbo Assembly และ Macro Assembly เป็นตน้

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

ยุคท่ี 3: ภาษาระดับสูง

ภาษากลุ่มน้ีเรียกวา่ ภาษายคุ ท่ี 3 เริ่มเมื่อประมาณกลางช่วง ค.ศ. 1950 ยคุ น้ีถือวา่ เป็ นยุคแรก
ของภาษาระดบั สูง (High level language) เพราะยคุ ที่ 1 และ 2 น้นั ถือวา่ เป็ นยุคของภาษาระดบั ต่า
(Low level language) ท่ียงั ไมเ่ หมือนภาษามนุษยเ์ ท่าใดนกั แต่ยุคน้ีภาษาคอมพิวเตอร์จะใกลเ้ คียงกบั
ภาษาของมนุษยม์ ากข้ึนอีก โดยใช้ประโยคหรือวลีในภาษาองั กฤษเพ่ือเขียนโปรแกรม ขอ้ ดีของ
ภาษาในยคุ น้ีคือ

1) การเขียนโปรแกรมใชเ้ วลานอ้ ยและตน้ ทุนต่าลง
2) โปรแกรมเมอร์ไม่จาเป็ นตอ้ งเรียนรู้สถาปัตยกรรมของคอมพิวเตอร์ ทาให้การเขียน
โปรแกรมทาไดก้ วา้ งขวางมากข้ึน
แนวการเขียนโปรแกรมมีชื่อเรียกหลากหลาย เช่นโปรแกรมแบบโครงสร้าง (Structure
program) โปรแกรมแบบโมดูลหรือแบบโพรซีเดอรอล (Modular program or procedural program)

5

มีหลายภาษาที่เกิดข้ึนในยุคน้ี คาสั่งต่าง ๆ จะถูกกาหนดโดยไวยากรณ์ของแต่ละภาษา
โปรแกรมเมอร์ตอ้ งเขียนรหสั ตน้ ฉบบั ของคาส่ังท้งั หมดดว้ ยตนเอง

เคร่ืองมือช่วยพฒั นาโปรแกรม ส่วนมากจะเป็ นอิดิเตอร์ (Editor) ที่ติดมากบั ตวั ภาษาแต่ละ
ภาษา โปรแกรมเมอร์จะเขียนรหสั ตน้ ฉบบั ท้งั หมด จากน้นั ใชต้ วั แปลภาษาซ่ึงอาจเป็ น คอมไพเลอร์
หรื ออินเตอร์ พรี เตอร์ แปลรหัสต้นฉบับให้เป็ นภาษาเคร่ื องส่ังให้คอมพิวเตอร์ ทางาน
ภาษาคอมพิวเตอร์ยคุ น้ีมีหลากหลายเหมาะสมกบั งานท่ีแตกต่างกนั เช่น ภาษา FORTRAN เหมาะ
กบั งานคานวณทางดา้ นวิทยาศาตร์ ภาษา C , Pascal , BASIC เหมาะกบั งานทวั่ ไป ส่วนภาษา
COBOL เหมาะกบั งานทางดา้ นธุรกิจ เป็นตน้

แมว้ ่าภาษายุคน้ีจะใกลเ้ คียงกบั ภาษามนุษยม์ ากก็ตาม แต่ปัจจยั ทางด้านธุรกิจและความ
ต้องการให้โปรแกรมทางานยืดหยุ่นรองรับการทางานได้กวา้ งขวางและมีความเข้ากันได้กับ
โปรแกรมอ่ืนๆ ไดด้ ีมากข้ึน จาเป็ นตอ้ งพฒั นาโปรแกรมภาษาให้ง่ายข้ึนไปอีก ยุคท่ี 4 จึงเกิดข้ึนใน
เวลาตอ่ มา

ยคุ ท่ี 4: ภาษาระดับสูงมาก

ยคุ ที่ 4 เป็นโปรแกรมภาษาแนวใหมท่ ่ีเพ่อื ใหส้ นองความตอ้ งการดา้ นความรวดเร็ว ยืดหยุน่
และนากลบั มาใชใ้ หม่ได้ ตน้ ยคุ เริ่มเมื่อประมาณช่วง ค.ศ. 1970 ยคุ น้ีอาจกล่าวไดว้ า่ เป็ นยุค (นอน-
โปรซีเดอรอล) ที่เนน้ ให้ไดผ้ ลลพั ธ์ตามความตอ้ งการอยา่ งรวดเร็วมากกวา่ ที่จะเนน้ วา่ จะตอ้ งเขียน
อยา่ งไร ในยคุ ก่อนหนา้ น้ีโปรแกรมเมอร์ตอ้ งรู้คาสั่งและวธิ ีการเขียนทุกสิ่งทุกอยา่ งดว้ ยตนเอง แต่
ยุคน้ีมีเคร่ืองมือช่วยพฒั นาได้รวดเร็วข้ึนกว่าเดิมมาก หากเปรียบการเขียนโปรแกรมเป็ นการ
ประกอบรถยนต์ 1 คนั ในยุคที่ผา่ นมาผูป้ ระกอบตอ้ งสร้างชิ้นส่วนทุกอย่างด้วยตนเองก่อนจึง
ประกอบเป็ นรถยนต์ได้ แต่ยุคน้ีการประกอบรถยนต์ทาได้ในเวลาอนั รวดเร็ว เน่ืองจากมีผูผ้ ลิต
ชิ้นส่วนท้งั หมดไวแ้ ล้ว ผูป้ ระกอบ (โปรแกรมเมอร์) จึงเพียงแต่เลือกมาประกอบให้เหมาะสม
เทา่ น้นั

การเขียนโปรแกรมยคุ น้ีเรียกวา่ การเขียนโปรแกรมเชิงวตั ถุ (Object Oriented Programming
:OOP) ซ่ึงมองการเขียนโปรแกรมเหมือนการสร้างวตั ถุเป็ นกอ้ นๆ หรือ เป็ นชิ้นๆ มีเครื่องมือช่วย
เขียนโปรแกรม เรียกว่า ตวั สร้าง (Generators) ทาหน้าท่ีติดต่อกบั โปรแกรมเมอร์แบบกราฟิ ก
อินเตอร์เฟส (Graphic interface) บางทีอาจเรียกวา่ เป็ นการเขียนโปรแกรมแบบวิสชวล (Visual
programming) โปรแกรมเมอร์ใชว้ ิธีแดร็กแอนดด์ ร็อพ (Drag and Drop) คือ การคลิกเอาวตั ถุท่ีใช้
เป็ นส่วนประกอบต่าง ๆ ของโปรแกรม เช่น ป่ ุม ฟอร์ม ไอคอน มาวางในพ้ืนท่ีเขียนโปรแกรม
หลงั จากน้นั กาหนดคุณสมบตั ิและหนา้ ที่การทางานที่ควบคุมดว้ ยเหตุการณ์ที่เขา้ มากระทาต่อวตั ถุที่
สร้างข้ึน หลงั จากน้นั ตวั สร้างจะแปลงใหเ้ ป็ นรหสั ตน้ ฉบบั แลว้ แปลดว้ ยคอมไพเลอร์หรืออินเตอร์

6

พรีเตอร์ท่ีติดมาดว้ ยเสมอ ตวั อยา่ งภาษายุคน้ี เช่น Visual Basic, Visual C++, Borland Delphi,
Borland C++ Builder, JBuilder,VisualStudio.NET, Java เป็ นตน้ สาหรับเอกสารเล่มน้ีได้ ใช้
โปรแกรมภาษาจาวา ซ่ึงออกแบบและเขียนโปรแกรมตามแนวทางน้ี และการนาเสนอเน้ือหาตลอด
เล่มเนน้ ให้เรียนรู้ในแนวคิดของการเขียนโปรแกรมเชิงวตั ถุ ซ่ึงเป็ นการออกแบบเชิงแนวคิดและ
นาไปประยุกต์ใช้ โดยเครื่องมือช่วยพฒั นาคือโปรแกรมเน็ตบีน สาหรับการสร้างส่วน แดร็ก
แอนดร็อพในส่วนการประยกุ ตใ์ ชง้ าน

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

ยุคท่ี 5: ภาษาธรรมชาติ

ปัจจุบันเร่ิมเข้าสู่ต้นยุคของภาษาธรรมชาติ ซ่ึงถือว่าเป็ นยุคที่ 5 ยุคน้ีเน้นการนา
ปัญญาประดิษฐ์ (Artificial Intelligent :AI) มาใชเ้ ป็ นแนวคิดหลกั ของการเขียนโปรแกรม โดยเริ่ม
ใชภ้ าษาธรรมชาติของมนุษย์ (Natural language) ในแนวการเขียนโปรแกรมแบบตรรกะและโมเดล
ภายใตส้ ภาวะแวดลอ้ มของโลกจริง ๆ สนบั สนุนและยืดหยุน่ ต่อพฤติกรรมที่เปล่ียนไปภายใตก้ าร
จดั การของคอมพวิ เตอร์ ปัจจุบนั เร่ิมมีหุ่นยนตแ์ ละซอฟตแ์ วร์ท่ีสามารถโตต้ อบกบั มนุษยไ์ ด้ ตวั อยา่ ง
ภาษาช่วงเริ่มตน้ ของยุคน้ีเช่น ภาษาโปรลอก 2 (Prolog 2) เป็ นโปรแกรมที่สามารถสอบถามขอ้ มูล
ดว้ ยประโยคที่ใชส้ ่ือสารกนั ตามปกติ ระบบผเู้ ชี่ยวชาญ (Expert System) ที่สามารถวนิ ิจฉยั ในเร่ือง
ท่ีเช่ียวชาญได้ ระบบฐานความรู้ (Knowledge Base System) ที่เก็บรวบรวมและประมวลผลขอ้ มูล
อย่างชาญฉลาด เมื่อถึงยุคปลายของยุคน้ีท้งั ฮาร์ดแวร์และซอฟต์แวร์จะเป็ นยุคเอไอ (AI) อย่าง
สมบูรณ์ การเขียนโปรแกรมจะใชภ้ าษาธรรมชาติ มนุษยส์ ามารถเขียนโปรแกรมคอมพิวเตอร์โดย
ภาษาท่ีเราใชส้ ื่อสารกนั

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

ในยุคต่อจากน้ีถือว่าเป็ นยุคที่ N ที่ จะเป็ นการนาเอาภาษาธรรมชาติมาเขียนสั่งให้
คอมพิวเตอร์ที่ไม่ใช่เป็ นเพียงอุปกรณ์ที่เราเห็นปัจจุบนั เท่าน้นั แต่จะเป็ นท้งั หุ่นยนต์ อุปกรณ์ต่างๆ

7

ในชีวิตประจาวนั รวมไปถึงวิศวพนั ธุกรรม และการเขียนโปรแกรมสามารถกลมกลืนกบั ชีวิต
ประจาไดอ้ ยา่ งง่ายดาย

ข้นั ตอนการเขยี นโปรแกรมคอมพวิ เตอร์

ธีรวฒั น์ ประกอบผล (2553, หนา้ 11-14) และ วชั ราภรณ์ สุริยาภิวฒั น์ (2553, หนา้ 195)
ต่างกล่าวตรงกนั วา่ ข้นั ตอนการเขียนโปรแกรมมีดงั น้ี

(1) การกาหนดและวิเคราะห์ปัญหา (Problem definition and problem analysis) ดว้ ยการ
กาหนดขอบเขตของปัญหา

(2) การเขียนผงั งาน (Flow chart) และซูโดโคด้ (pseudo coding) เป็ นการแทนข้นั ตอน
ตา่ งๆ ดว้ ยสัญลกั ษณ์

(3) การเขียนโปรแกรม(Programming) ดว้ ยการเขียนโปรแกรมตามรูปแบบของไวยากรณ์
ตามรูปแบบของภาษาที่เลือกใช้

(4) การทดสอบและแกไ้ ขโปรแกรม(Program testing and debugging) เป็ นการทดสอบวา่
โปรแกรมที่เขียนข้ึนมาน้นั ถูกตอ้ งตามรูปแบบที่เขียนหรือไม่ และทดสอบวา่ โปรแกรมท่ีเขียนข้ึน
เป็นไปตามท่ีวเิ คราะห์ไวห้ รือไม่

(5) การทาเอกสารและการบารุงรักษาเป็ นข้นั ตอนของการทาเอกสารคู่มือ ท้งั คู่มือการใช้
งานและคูม่ ือสาหรับโปรแกรมเมอร์

ขณะที่ กระทรวงศึกษาธิการ ไดก้ ล่าวไวใ้ น หลกั การเขียนโปรแกรม คพ. ทป. 014 (2533,
หนา้ 46) ระบุข้นั ตอนการเขียนโปรแกรมดงั น้ี

(1) การวเิ คราะห์ปัญหา
(2) การออกแบบข้นั ตอนการทางานของโปรแกรม
(3) การลงรหสั โปรแกรม
(4) การทดสอบและแกไ้ ขโปรแกรม
(5) การทาเอกสารประกอบโปรแกรม
พานิชกุล (2554, หนา้ 9-10) ระบุวา่ ข้นั ตอนการพฒั นาโปรแกรมคอมพวิ เตอร์มีดงั น้ี
(1) การวเิ คราะห์ปัญหา
(2) การออกโปรแกรม กาหนดส่วนนาเขา้ ประมวลผล และส่วนการแสดงผล
(3) เขียนโปรแกรมโดยใชภ้ าษาคอมพวิ เตอร์
(4) การทดสอบและแกไ้ ขโปรแกรมเพ่อื ความถูกตอ้ งก่อนนาไปใชง้ านจริง
(5) การทาเอกสารและดูแลรักษาโปรแกรม

8

จากที่กล่าวมาขา้ งตน้ ดงั น้นั ข้นั ตอนของการเขียนโปรแกรมมีดงั น้ี
1. ศึกษาปัญหาและทาความเข้าใจสิ่งทตี่ ้องการของผู้ใช้
ข้นั ตอนน้ีเป็ นข้นั ตอนแรกสุด เพราะหากมองปัญหาออกก็ไม่สามารถที่จะเขียนโปรแกรม

หรือสร้างงานออกมาไดอ้ ยา่ งถูกตอ้ งตามความตอ้ งการ ในข้นั ตอนน้ีสิ่งที่ตอ้ งพิจารณาและทาความ
เขา้ ใจมีดงั น้ี

1.1 ส่ิงท่ีโจทยห์ รือผใู้ ชต้ อ้ งการ (Output) ของงาน ผูเ้ ขียนจะตอ้ งรู้อยา่ งชดั แจง้ วา่ ผใู้ ช้
ตอ้ งการผลการทางานอยา่ งไร แนวปฏิบตั ิของข้นั ตอนน้ีคือศึกษาจากโจทยท์ ่ีไดร้ ับ หรือสอบถาม
รวบรวมขอ้ มลู จากผปู้ ฏิบตั ิงานของผใู้ ชง้ านจริงใหล้ ะเอียดท่ีสุด

1.2 สิ่งท่ีโจทยใ์ ห้มาหรือปัจจยั ต่าง ๆ ที่ทาให้เกิดผลลพั ธ์ ซ่ึงก็คือขอ้ มูลนาเขา้ (Input)
ดงั น้ันผูเ้ ขียนโปรแกรมจะต้องพิจารณาประเด็นน้ีเป็ นส่ิงสาคัญอันดับท่ีสอง โดยดูจากโจทย์
กาหนดใหว้ า่ มีปัจจยั ใดประกอบอยแู่ ลว้ บา้ ง และส่ิงใดจะตอ้ งกาหนดหรือหาเพิ่มเติมเพื่อท่ีจะช่วย
ในการแกไ้ ขปัญหาดงั กล่าวใหไ้ ดผ้ ลลพั ธ์ตามตอ้ งการ

1.3 วธิ ีการดาเนินงาน (Process) คือ ลาดบั ข้นั ตอนการทางาน เป็ นกระบวนการเพ่ือนา
ขอ้ มลู นาเขา้ มาดาเนินการเพื่อใหไ้ ดผ้ ลลพั ธ์

2. การออกแบบและกาหนดข้นั ตอนการทางานของโปรแกรม
การกาหนดวธิ ีการทางานน้นั สาหรับผทู้ ่ีเพิ่งจะเร่ิมเขียนโปรแกรมคอมพิวเตอร์น้นั จาเป็ น
อย่างย่ิงตอ้ งมีแนวคิดเหมือนการแกโ้ จทยห์ รือการแกป้ ัญหาทางคณิตศาสตร์ กล่าวคือ ตอ้ งคิดเป็ น
ข้นั ตอนและกาหนดลาดบั การแกป้ ัญหาใหช้ ดั เจนดงั น้ีคือ

2.1 ใหเ้ ขียนลาดบั ข้นั ตอนการแกป้ ัญหาเป็นข้นั ตอนใหช้ ดั เจนที่สุดเท่าที่สามารถทาได้
2.2 แทนลาดบั ข้นั ตอนการแก้ปัญหาดงั กล่าวด้วยแผนภาพหรือผงั งาน (Flowchart)
คลาสไดอะแกรม (Class Diagram)
2.3 ลงรหสั โปรแกรม (Pseudo Code) หรือรหัสเทียม ของโปรแกรม โดยรหัสเทียม
ดงั กล่าวจะตอ้ งดูจากผงั การทางานเป็ นหลกั การลงรหัสเทียมน้ีจะเขียนไวเ้ ป็ นกลาง ๆ อาจจะอิง
โปรแกรมภาษาคอมพิวเตอร์ภาษาใดภาษาหน่ึงก็ไดห้ รือเขียนเป็ นภาษาองั กฤษลว้ น ๆ ก็ได้ หรือ
หากเป็นภาษาไทยกย็ งั อนุโลมใหใ้ ชไ้ ดเ้ ช่นกนั
3. ลงมอื เขยี นโปรแกรม
ในการเริ่มลงมือเขียนโปรแกรมคอมพวิ เตอร์น้นั ผเู้ ขียนจะตอ้ งดาเนินการดงั ตอ่ ไปน้ี

9

3.1 ศึกษารูปแบบไวยากรณ์ (Syntax) ของโปรแกรมภาษาน้นั ๆ ซ่ึงจะเป็ นกฎเกณฑ์
ขอ้ บงั คบั หรือรูปแบบบงั คบั ต่าง ๆ ของโปรแกรมภาษาที่ใชใ้ นการเขียน โดยโปรแกรมเมอร์ตอ้ ง
ศึกษาใหเ้ ขา้ ใจและแมน่ ยา จึงจะสามารถเขียนโปรแกรมไดอ้ ยา่ งมีประสิทธิภาพ

3.2 ศึกษา คาสงั่ ปฏิบตั ิการ ตวั ดาเนินการ ตวั แปร หรือฟังกช์ นั (Functions) ต่างๆ ท่ีมีใน
ภาษาที่เลือก ซ่ึงในข้นั ตอนน้ีผใู้ ชจ้ ะตอ้ งดาเนินการเขียนโปรแกรมจริง ๆ จึงจะสามารถเขา้ ใจและใช้
งานไดอ้ ยา่ งถูกตอ้ ง

4. ทดสอบโปรแกรม
เมื่อเขียนโปรแกรมแลว้ การทดสอบการทางานของโปรแกรมเพื่อตรวจสอบความถูกตอ้ ง
ของโปรแกรมมีข้นั ตอนดงั น้ี

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

4.2 ทดสอบการรันของโปรแกรม หรือการเรียกใชง้ านโปรแกรมแต่ละโปรแกรมภาษา
จะมีการเรียกใช้ต่างกนั บา้ งแต่โดยทวั่ ไปจะทาไดห้ ลงั จากท่ีคอมไพล์แล้ว และไม่มีขอ้ ผิดพลาด
สามารถเรียกใชง้ านตามที่ตอ้ งการผา่ นระบบปฏิบตั ิการที่นาโปรแกรมไปติดต้งั

5. จัดทาเอกสารและการบารุงรักษา
5.2 การจดั ทาเอกสารที่เก่ียวขอ้ ง เช่นคู่ผูใ้ ช้ คู่มือการพฒั นาโปรแกรมและออกแบบ

ระบบ และคู่มือการแกป้ ัญหาสาหรับผดู้ ูแลระบบหรือโปรแกรมเมอร์
5.2 บารุงรักษาโปรแกรมดว้ ยการตรวจสอบความถูกตอ้ งปรับปรุงให้ทางานเร็วข้ึน หรือ

การปรับปรุงดชั นีของฐานขอ้ มูล หรือปรับปรุงรุ่นของซอฟตแ์ วร์ เป็นตน้

ความหมายและแนวคดิ การเขยี นโปรแกรมเชิงวตั ถุ

ไซมอล เคนดลั (Simol Kendal, 2009, p.13) ไดก้ ล่าววา่ ในช่วงปี ค.ศ. 1970 โปรแกรมแบบ
โครงสร้างไดเ้ ป็นที่นิยมและยอมรับวา่ เป็ นมาตรฐานการเขียนโปรแกรมคอมพิวเตอร์ที่มีขนาดใหญ่
และซบั ซ้อน ซ่ึงหลกั การของโปรแกรมแบบน้ีมุ่งเน้นไปที่กระบวนการเชิงตรรกะของโครงสร้าง
โปรแกรมจะถูกพฒั นาเป็ นส่วนส่วนๆ เพื่อสะดวกต่อการทาความเข้าใจและบริหารจัดการ
คอมโพเนนต์ อยา่ งไรก็ตามปัญหาท่ีสาคญั ของการเขียนโปรแกรมก็คือ การทาความเขา้ ใจเก่ียวกบั
ระบบที่ต้องการจะสร้างและการเปลี่ยนแปลงซอฟต์แวร์ท่ีมีอยู่ตามความต้องการของผูใ้ ช้ที่

10

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

ความหมายของการเขยี นโปรแกรมเชิงวตั ถุ

ไซมอล เคนดลั (Simol Kendal, 2009, p.13) กล่าววา่ หลกั การเขียนโปรแกรมเชิงวตั ถุ คือ
หลกั การที่อยบู่ นพ้นื ฐานการพฒั นาหลายๆ แนวคิดในช่วง 30 ปี ที่ผา่ นมา โดยแนวคิดดงั กล่าวไดแ้ ก่
แนวคิดเชิงนามธรรม (Abstraction) การห่อหุ้ม (Encapsulation) การสืบทอด (Generalization) และ
พหุสณั ฐาน(Polymorphism) โดยการอนุญาตใหส้ ามารถนาขอ้ มูลและตวั ดาเนินการรวมเขา้ ดว้ ยกนั

วาย. เดเนียล เหลียง (Y. Deniel Liang, 2007, p. 215) กล่าววา่ หลกั การเขียนโปรแกรมเชิง
วตั ถุ เกี่ยวขอ้ งกบั การเขียนโปรแกรมที่มีการใชว้ ตั ถุ โดยใชว้ ตั ถุแทนสิ่งต่างๆ ท่ีมีอยจู่ ริงในโลก ซ่ึง
สามารถเป็ นจุดหมายปลายทางของการถูกกาหนดให้วตั ถุมีความเป็ นปัจจเจกทางตวั ตน สถานะ
และพฤติกรรม

วกี ีพีเดีย (Wikipedia, 2007) กล่าววา่ การเขียนโปรแกรมเชิงวตั ถุ คือ หลกั การของการเขียน
โปรแกรมซ่ึงใชว้ ตั ถุ และการกระทาต่างๆ ของวตั ถุ ในการออกแบบแอพพลิเคชนั และโปรแกรม
คอมพิวเตอร์ ซ่ึงใช้เทคนิคหลายประการ เช่น การสืบทอด การนาความสามารถต่างๆ ย่อยๆ มา
ประกอบกนั การพอ้ งรูป และการห่อหุม้ ซ่ึงใชใ้ นการออกแบบ และพฒั นาแอพพลิเคชนั มาต้งั แต่ตน้
ค.ศ. 1990 โปรแกรมภาษายคุ ใหม่สนบั สนุนการเขียนโปรแกรมแบบน้ีแลว้

การเขียนโปรแกรมเชิงวตั ถุหรือเรียกว่าการเขียนโปรแกรมแบบโอโอพี คือ การเขียน
โปรแกรมการโดยแทนสิ่งต่างๆ ที่มีอยู่ในโลกด้วยการมองเป็ นวตั ถุหน่ึงชนิด ซ่ึงวตั ถุดงั กล่าว
ประกอบดว้ ยคุณสมบตั ิหรือแอตทริบิวต์ (Properties or Attribute) และหนา้ ท่ีหรือฟังกช์ นั งานหรือ
เมธอด (Operation or Method) แนวคิดการเขียนโปรแกรมแบบน้ีจะเนน้ ความยดื หยุ่นในเรื่องการ
รับทอดคุณสมบัติ (Inheritance) ความปลอดภัยของข้อมูล (Encapsulation) การมีพหุสัณฐาน
(Polymorphism) เป็นตน้

ข้อแตกต่างระหว่างการเขยี นโปรแกรมเชิงโครงสร้างกบั เชิงวตั ถุ

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

11

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

วาย. เดเนียล เหลียง (Y. Danial Liang, 2007, p. 214) กล่าววา่ การเขียนโปรแกรมลกั ษณะ
โพรซีเดอรัลเช่น ภาษาซี ปาสคาล เบสิค เอดา และโคบอล เกี่ยวกบั การเลือกโครงสร้างขอ้ มูลและ
การออกแบบอลั กอริทึมและการแปลงอลั กอริทึมไปสู่โคด้ ส่วนโปรแกรมเชิงวตั ถุ เช่น จาวา สมอล
ทอลค์ รวมความสามารถของโปรแกรมแบบโพรซีเดอรัลดว้ ยการเพิ่มมิติซ่ึงเตรียมไวส้ าหรับความ
ซบั ซ้อนท่ีมากข้ึน โมดูล ความชดั เจนเร่ืองการออกแบบ การนากลบั มาใช้ใหม่ โดยผา่ นแนวคิดเชิง
นามธรรม การห่อหุม้ การรับทอด และพาวะพหุสัณฐาน

พนิดา พานิชกุล (2548, หนา้ 4) กล่าววา่ ในอดีตการเขียนโปรแกรมแบบโพรซีเดอรัลน้นั
ภายในโครงสร้างของโปรแกรมจะแบ่งออกเป็ น 2 ส่วนไดแ้ ก่ โปรแกรมหลกั (Main program) ที่มี
ขอ้ มูล (Data) เป็ นส่วนประกอบและส่วนโปรแกรมย่อย (Procedure หรือ Function) โดยขอ้ มูลท่ี
ประกาศใชอ้ ยภู่ ายในโปรแกรมหลกั น้นั จะถูกเรียกใชโ้ ดยโปรแกรมยอ่ ยตา่ งๆ ที่อยภู่ ายในโปรแกรม
ลกั ษณะของขอ้ มูลท่ีประกาศทว่ั ไปท้งั ในโปรแกรมน้นั เรียกวา่ การประกาศใชแ้ บบใชง้ านไดท้ วั่ ท้งั
โปรแกรม (Global) แต่สาหรับการเขียนโปรแกรมเชิงวตั ถุแลว้ ขอ้ มูลจะถูกประกาศใช้โดยเฉพาะ
ภายในแตล่ ะวตั ถุเทา่ น้นั

ไซมอล เคนดลั (2009, p. 13-15) กล่าววา่ หลกั การเขียนโปรแกรมเชิงโครงสร้างน้นั จะ
มุ่งเนน้ ใหบ้ ลอ็ กขนาดยอ่ ยของโปรแกรมที่เขียนข้ึนมาแลว้ สามารถเปลี่ยนแปลง ซ่ึงทาใหง้ ่ายต่อการ
เขา้ ใจและการเปลี่ยนแปลง แต่โปรแกรมเชิงวตั ถุน้นั จะสร้างโมเดลคาสั่งในโปรแกรมคอมพิวเตอร์
ดว้ ยขอ้ มูล ซ่ึงคาสัง่ และขอ้ มูลควรผกู ติดไปดว้ ยกนั และอีกประการคือคอมโพเนนตข์ องซอฟตแ์ วร์
ตอ้ งนากลบั มาใช้ใหม่ได้ ในขณะเดียวกนั การสร้างหลกั การน้ียงั ขยายแนวคิดของโปรแกรมเชิง
โครงสร้างท่ีใชก้ นั มาต้งั แตป่ ี ค.ศ. 1970 อีกดว้ ย

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

12

โมดูลหลกั เร่ิม เริ่มโมดูล
คาสง่ั 1 1
คาสง่ั n
คาสงั่ 2 เรียก เริ่มโมดูล
โมดูล 1 เรียกกลบั 1
คาสง่ั n
…… โมดูล 1
เรียกกลบั
จบ
โมดูล 2

ภาพท่ี 1.2 แสดงการใชง้ านแบบเชิงโครงสร้าง

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

การเขียนโปรแกรมเชิงวตั ถุน้นั เร่ิมตน้ ดว้ ยการพิจารณางานต่างๆ เป็ นวตั ถุท่ีตอ้ งมีฟังกช์ นั
การทางานหรือเรียกว่าเมธอดและตัวแปรสาหรับขบั เคลื่อนโปรแกรม หลังจากน้ันการเขียน
โปรแกรมจริงเริ่มตน้ ดว้ ยการสร้างคลาส ท่ีถือว่าเป็ นแม่ของวตั ถุ โดยมีคลาสหลกั เพียงหน่ึงคลาส
และคลาสท่ีเกี่ยวขอ้ งอีกหลาย ๆ คลาส และแต่ละคลาสอาจมีความสัมพนั ธ์กนั ตามแนวทางของวตั ถุ
หลงั จากน้นั การขบั เคล่ือนโปรแกรมจะเร่ิมจากคลาสหลกั สร้างวตั ถุของตนเองข้ึนมา แลว้ สร้างวตั ถุ
ที่เป็ นองคป์ ระกอบของการทางานท้งั หมด และส่ังทางานโดยผา่ นเมธอดต่างๆ ของแต่ละคลาสท่ี
เก่ียวขอ้ ง ภาพดา้ นบนน้ีแสดงแนวคิดเบ้ืองตน้ ของการเขียนโปรแกรมเชิงวตั ถุเท่าน้นั ยงั มีแนวคิด
อื่นๆ ท่ีสามารถแทนไดด้ ว้ ยภาพอื่นๆ อีก

แนวคิดเกี่ยวกบั ความแตกตา่ งระหวา่ งการเขียนโปรแกรมแบบโครงสร้างกบั แนวคิดการ
เขียนโปรแกรมเชิงวตั ถุน้นั สามารถเปรียบเทียบกนั ไดโ้ ดยใชต้ วั อยา่ งต่อไปน้ี

13

เริ่มสร้างวตั ถุ ของคลาสหลกั วตั ถขุ องคลาส 1 วตั ถขุ องคลาส 2
คลาสหลกั โมดูล 1 โมดูล 2
โมดูลหลกั คาสง่ั ที่เรียกใชเ้ มธอด
เมธอด ที่มีคาสง่ั เมธอด ท่ีมีคาสง่ั
สร้างวตั ถุของคลาส ท่ีเก่ียวขอ้ ง 1…n 1…n
และเรียกใชเ้ มธอดภายใน

……

จบ

ภาพท่ี 1.3 แสดงแนวคิดเก่ียวกบั การเขียนโปรแกรมเชิงวตั ถุเบ้ืองตน้

จากภาพอธิบายได้วา่ การเขียนโปรแกรมเชิงวตั ถุน้ัน เริ่มตน้ ด้วยการพิจารณางานต่างๆ
เป็ นวตั ถุที่ตอ้ งมีฟังก์ชันการทางานหรือเรียกว่าเมธอดและตวั แปรสาหรับขบั เคล่ือนโปรแกรม
หลงั จากน้นั การเขียนโปรแกรมจริงเร่ิมตน้ ดว้ ยการสร้างคลาส ท่ีถือว่าเป็ นแม่ของวตั ถุ โดยมีคลาส
หลกั เพยี งหน่ึงคลาส และคลาสท่ีเก่ียวขอ้ งอีกหลายๆ คลาส และแต่ละคลาสอาจมีความสัมพนั ธ์กนั
ตามแนวทางของวตั ถุ หลงั จากน้นั การขบั เคล่ือนโปรแกรมจะเริ่มจากคลาสหลกั สร้างวตั ถุของ
ตนเองข้ึนมา แลว้ สร้างวตั ถุท่ีเป็นองคป์ ระกอบของการทางานท้งั หมด และส่งั ทางานโดยผา่ นเมธอด
ต่าง ๆ ของแต่ละคลาสที่เก่ียวขอ้ ง ภาพดา้ นบนน้ีแสดงแนวคิดเบ้ืองตน้ ของการเขียนโปรแกรมเชิง
วตั ถุเท่าน้นั ยงั มีแนวคิดอ่ืน ๆ ที่สามารถแทนไดด้ ว้ ยภาพอ่ืน ๆ อีก

ดงั น้นั ผทู้ ี่จะเขียนโปรแกรมเชิงวตั ถุไดต้ อ้ งฝึ กมองทุกอยา่ งใหเ้ ป็ นเชิงวตั ถุก่อน ภาพที่ 1.3
และ 1.4 แสดงการเปรียบเทียบแนวคิดหากคิดเชิงโครงสร้างและคิดเชิงวตั ถุสาหรับการเขียน
โปรแกรม ใหส้ งั เกตแนวคิดจาก ตวั อยา่ งท่ี 1.1 และตวั อยา่ งที่ 1.2

14

ตวั อย่างท่ี 1.1 แนวคิดเปรียบเทียบการทางานแบบโครงสร้าง กบั การทางานแบบเชิงวตั ถุ

ภาพที่ 1.4 แสดงแนวคิดการทางานแบบโครงสร้าง
(ที่มา : จากสไลดเ์ รื่อง Object Oriented Programming, Tal Pasternak, ISIS )
แบบโครงสร้าง

พจิ ารณาที่ฟังกช์ นั การทางานเป็นประกอบดว้ ย
1. ฟังกช์ นั การฝาก
2. ฟังกช์ นั การถอน
3. ฟังกช์ นั การโอน

ขอ้ มูลที่ผา่ นค่าพารามิเตอร์ ใหก้ บั ฟังกช์ นั ดงั กล่าวเหล่าน้นั คือ ขอ้ มลู ลูกคา้ ขอ้ มูลเก่ียวกบั
จานวนเงินที่ดาเนินการ การเรียกใชร้ ายการใดรายการหน่ึงเพือ่ เรียกใชฟ้ ังกช์ นั ดงั กล่าว

แบบเชิงวตั ถุ

ภาพท่ี 1.5 แสดงแนวคิดการทางานเชิงวตั ถุ
(ท่ีมา : จากสไลดเ์ รื่อง Object Oriented Programming, Tal Pasternak, ISIS )

15

พิจารณาการทางานของโปรแกรมเชิงวตั ถุ ประกอบดว้ ย
1. ลูกคา้
2. ตวั เงิน
3. บญั ชีธนาคาร

ขอ้ มูลและตวั ฟังก์ชันงานต่างๆ จะอยู่ภายใต้วตั ถุเหล่าน้ี เช่นวตั ถุลูกค้าประกอบด้วย
ชื่อลูกคา้ หมายเลขบญั ชี และจะมีเมธอดการสอบถามชื่อลูกค้า เมธอดการเรียกหมายเลขบญั ชี
ธนาคาร วตั ถุบญั ชีธนาคารประกอบดว้ ยเมธอด การฝาก ถอน และโอน เป็นตน้

หลงั จากน้นั พิจารณาว่าจะนาแปลงจากแนวคิดเชิงวตั ถุเป็ นโปรแกรมท่ีเปล่ียนการทางาน
ทุกอยา่ งอยภู่ ายใตก้ ารทางานของโปรแกรมท่ีเขียนข้ึน

ภาพท่ี 1.6 แสดงการทางานของโปรแกรมแบบเชิงวตั ถุในการเขียนโปรแกรม
(ท่ีมา : จากสไลดเ์ รื่อง Object Oriented Programming, Tal Pasternak, ISIS )

จากลกั ษณะการทางานดา้ นบนพบวา่ หากพิจารณาวตั ถุเพียง Account (บญั ชีธนาคาร) เป็ น
การรวมระหวา่ งวตั ถุ หรือคุณสมบตั ิตา่ งๆ ของวตั ถุท่ีเกี่ยวขอ้ ง และฟังกช์ นั การทางานอยดู่ ว้ ยกนั

ภาพที่ 1.7 แสดงองคป์ ระกอบภายในของการฝาก-ถอน-โอนเงิน
(ที่มา : จากสไลดเ์ ร่ือง Object Oriented Programming, Tal Pasternak, ISIS )

16

ตัวอย่างที่ 1.2 จงเปรียบเทียบแนวคิดการออกแบบการตดั เกรดของนกั เรียน

นกั เรียนสร้างคะแนน

รายงานผล ครูตดั เกรด

ภาพท่ี 1.8 ภาพประกอบระบบการตดั เกรด

จากภาพอธิบายไดว้ ่า โครงสร้างประกอบด้วย รับค่าคะแนน คานวณเกรด และรายงาน
หากพจิ ารณาเป็นเชิงวตั ถุจะประกอบดว้ ย นกั เรียน เกรด วชิ าท่ีเรียน ครู

ข้อดขี องการเขยี นโปรแกรมเชิงวตั ถุ

1. การออกแบบโปรแกรมสามารถดาเนินการไดใ้ นเชิงนามธรรม ซ่ึงสามารถรวมท้งั ขอ้ มูล
และพฤติกรรมหรือเมธอดได้

2. มีผลดีต่อการบริหารจดั การ เช่น การเพิ่มขยายส่วนต่างๆ ของโปรแกรม ยิง่ ในระหวา่ งท่ี
มีการรันโปรแกรมอยู่

3. สามารถนากลับมาใช้ใหม่ได้ ท้งั การออกแบบและส่วนของโปรแกรมที่ออกแบบ
เช่ือมโยงกนั ไว้ สามารถนามาประกอบกนั เป็นซอฟตแ์ วร์ขนาดใหญ่ไดโ้ ดยง่าย

4. มีการปกป้ องขอ้ มูลที่จากดั ใหผ้ ใู้ ชท้ ่ีมีสิทธ์ิใชเ้ ทา่ น้นั

เครื่องมอื ที่ใช้เขยี นโปรแกรมเชิงวตั ถุ

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

17

รายละเอียดต่อไปน้ีนาเสนอเครื่องมือสาหรับออกแบบโปรแกรมท่ีใชใ้ นเอกสารประกอบการสอนน้ี
และส่วนสุดทา้ ยไดน้ าเสนอโปรแกรมภาษาคอมพิวเตอร์ท่ีสนบั สนุนการเขียนโปรแกรมแบบเชิง
วตั ถุพอสังเขป

เคร่ืองมอื สาหรับออกแบบโปรแกรม
เคร่ืองมือสาหรับการออกโปรแกรมเชิงวตั ถุ คือ ยูเอ็มแอล (UML: Unified Modeling
Language) ท่ีใช้สัญลกั ษณ์ภาพที่แตกต่างจากสัญลกั ษณ์ของงานที่ใชใ้ นการเขียนโปรแกรมแบบ
โครงสร้าง สาหรับการออกแบบข้นั ตอนการทางานภายในยอ่ ย ๆ น้นั ยงั คงใชห้ ลกั การตามลาดบั
เงื่อนไข และการวนซ้า เช่นเดียวกนั กบั การเขียนโปรแกรมแบบโครงสร้าง รายละเอียดของการ
ออกแบบดงั กล่าวน้นั ควรศึกษาจากการออกแบบอลั กอริทึม (Algorithm) สาหรับรายละเอียดของ
เอกสารประกอบการสอนน้ีเนน้ การนาเสนอยเู อ็มแอลเกิดจากโปรแกรมเน็ตบีน 6.0 ซ่ึงจะนามาใช้
งานตลอดเอกสารน้ี ตวั อยา่ งของเคร่ืองมือที่ใชส้ าหรับการออกแบบโปรแกรมแสดงดงั ภาพท่ี 1.7
- กลุ่มของคลาสไดอะแกรม

ภาพที่ 1.9 ยเู อม็ แอลกลุ่มท่ีเก่ียวคลาสไดอะแกรมท่ีมีในโปรแกรมเน็ตบีน 6.0

18
- กลุ่มของ Activity Diagram

ภาพท่ี 1.10 ยเู อม็ แอลกลุ่มท่ีเกี่ยว Activity Diagram ที่มีในโปรแกรมเน็ตบีน 6.0
- กลุ่มของ Collaboration Diagram
ภาพที่ 1.11 ยเู อม็ แอลกลุ่มท่ีเก่ียว Collaboration Diagram ที่มีในโปรแกรมเน็ตบีน 6.0
- กลุ่มของ Component Diagram

ภาพท่ี 1.12 ยเู อม็ แอลกลุ่มที่เก่ียว Component Diagram ท่ีมีในโปรแกรมเน็ตบีน 6.0

19
- กลุ่มของ Deployment Diagram

ภาพที่ 1.13 ยเู อม็ แอลกลุ่มท่ีเก่ียว Deployment Diagram ท่ีมีในโปรแกรมเน็ตบีน 6.0
- กลุ่มของ Sequence Diagram

ภาพท่ี 1.14 ยเู อม็ แอลกลุ่มท่ีเกี่ยว Sequence Diagram ที่มีในโปรแกรมเน็ตบีน 6.0
- กลุ่มของ State Diagram

ภาพที่ 1.5 ยเู อม็ แอลกลุ่มท่ีเก่ียว State Diagram ที่มีในโปรแกรมเน็ตบีน 6.0

20

- กลุ่มของ Use case Diagram

ภาพท่ี 1.16 ยเู อม็ แอลกลุ่มที่เก่ียว Use Case Diagram ท่ีมีในโปรแกรมเน็ตบีน 6.0

สาหรับรายละเอียดของการใช้งานภาษายูเอ็มแอลที่จาเป็ นสาหรับการใช้งานเอกสาร
ประกอบการสอนเล่มน้ี นาเสนอในบทที่ 2

โปรแกรมภาษาทใี่ ช้เขยี นโปรแกรมเชิงวตั ถุ
โปรแกรมภาษาในปัจจุบนั ส่วนมากแล้วจะสนับสนุนการเขียนโปรแกรมแบบเชิงวตั ถุ
เกือบท้งั หมด อีกท้งั โปรแกรมภาษาในยุคท่ีสามของภาษาคอมพิวเตอร์ไดม้ ีการพฒั นาให้สามารถ
เขียนโปรแกรมตามแนวทางแบบเชิงวตั ถุไดอ้ ีกดว้ ย โปรแกรมภาษาคอมพิวเตอร์ต่อไปน้ีไดถ้ ูกเลือก
มาใชส้ าหรับการเขียนโปรแกรมวตั ถุกนั อยา่ งแพร่หลาย
1) โปรแกรมภาษาจาวา เป็ นโปรแกรมภาษาท่ีสามารถเขียนโปรแกร มเชิงวตั ถุได้
หลากหลายแพลตฟอร์ม ท้ังส่วนท่ีเป็ นโปรแกรมประยุกต์ โปรแกรมสาหรับจัดการบนเว็บ
โปรแกรมสาหรับจดั การบนอุปกรณ์ต่างๆ รวมถึงบนมือถือไดอ้ ีกดว้ ย
2) โปรแกรมภาษาซีพลสั พลสั (C++) เป็ นโปรแกรมภาษาที่สร้างข้ึนบนพ้ืนฐานของการ
เขียนโปรแกรมเชิงวตั ถุ ซ่ึงโปรแกรมน้ีมีความสามารถสูงในการจดั การในเชิงของระบบต่างๆ ของ
ฮาร์ดแวร์
3) โปรแกรมตระกูลวชิ วลดอทเน็ต เช่น VB.NET, C#.NET ซ่ึงสามารถพฒั นาในรูปแบบ
วิชวลตามแนวทางไมโครซอฟตท์ ่ีมุ่งเน้นการเขียนโปรแกรมแบบรวดเร็วแต่มีการพฒั นาไดอ้ ย่าง
มีประสิทธิภาพสูง
4) ภาษาสคริปตย์ คุ ใหม่ เช่น php, jsp, ASP.NET ซ่ึงสามารถออกแบบและเขียนโปรแกรม
เชิงวตั ถุเอาไวใ้ ห้ส่วนของภาษาสคริปต์ได้เรียกใช้งานโดยการนาไปสร้างเป็ นวตั ถุ แลว้ ใช้งาน
ในรูปแบบของเวบ็ แอพพลิเคชนั เป็นตน้

21

สรุป

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

22

แบบฝึ กหดั ท้ายบท

1. จงอธิบายความหมายของคาต่อไปน้ีพอสังเขป
- คอมพิวเตอร์
- โปรแกรมคอมพิวเตอร์
- โปรแกรมภาษาคอมพิวเตอร์
- การเขียนโปรแกรมคอมพิวเตอร์

2. ยคุ ของโปรแกรมภาษาคอมพิวเตอร์แบง่ ไดอ้ ยา่ งไรบา้ ง จงอธิบาย
3. จงอธิบายและยกตวั อยา่ งระดบั ของโปรแกรมภาษาคอมพิวเตอร์
4. จงยกตวั อยา่ งโปรแกรมภาษาคอมพิวเตอร์ในยคุ ต่าง ๆ ต้งั แตย่ คุ ที่ 1-5
5. จงวเิ คราะห์วา่ ทาไมภาษาคอมพวิ เตอร์จึงใกลเ้ คียงกบั ภาษาของมนุษยม์ ากข้ึนทุกขณะ
6. จงคาดคะเนเก่ียวกบั แนวทางการเขียนโปรแกรมคอมพิวเตอร์ในอนาคตอีก 50 ขา้ งหนา้
พร้อมอธิบายเหตุผล
7. จงอธิบายวา่ การเขียนโปรแกรมแบบโครงสร้างมีขอ้ ดีขอ้ ดอ้ ยอยา่ งไร
8. จงอธิบายข้นั ตอนการเขียนโปรแกรมคอมพวิ เตอร์
9. จงอธิบายข้นั ตอนวา่ หากท่านไดร้ ับภารกิจใหเ้ ขียนโปรแกรมระบบบุคลากรใหก้ บั
หน่วยงานท่านจะเร่ิมตน้ และดาเนินการอยา่ งไร
10. ทา่ นคิดวา่ ในอนาคตที่กา้ วผา่ นข้นั ยคุ ที่ N ไปแลว้ การเขียนโปรแกรมคอมพิวเตอร์
จะเป็นอยา่ งไร
11. จงบอกความหมายของการเขียนโปรแกรมเชิงวตั ถุ
12. จงสรุปและเปรียบเทียบแนวคิดการเขียนโปรแกรมแบบโครงสร้างกบั แบบเชิงวตั ถุ
13. จงอธิบายการแนวคิดการออกแบบโปรแกรมควบคุมการข้ึนลงของลิฟต์
14. จงอธิบายเครื่องมือการออกแบบโปรแกรมเชิงวตั ถุ
15. จงระบุชื่อโปรแกรมภาษาท่ีใชส้ าหรับพฒั นาโปรแกรมเชิงวตั ถุได้ พร้อมท้งั อธิบาย
หลกั การใชง้ านเบ้ืองตน้

23

เอกสารอ้างอิง

กระทรวงศึกษาธิการ. (2533). หลักการเขียนโปรแกรม คพ.ทป. 014 ระดับม.ปลาย. กรุงเทพฯ:
องคก์ ารคา้ คุรุสภา.

กิตติ ภกั ดีวฒั นะกุล และกิตติพงษ์ กลมกล่อม. (2548). คัมภีร์ การวิเคราห์และออกแบบเชิงวัตถุ
ด้วย UML. กรุเทพฯ: เคทีพี แอนด์ คอนซลั ท.์

กิตติ ภกั ดีวฒั นะกุล และ ศิริวรรณ อมั พรดนยั . (2544). Oject-Oriented ฉบับพนื้ ฐาน. กรุงเทพฯ:
KTP Comp&Consult.

กิตติพงษ์ กลมกล่อม. (2552). การวเิ คราะห์และออกแบบระบบเชิงวตั ถุด้วย UML. กรุเทพฯ: เคทีพี
แอนด์ คอนซลั ท.์

ครรชิต มาลัยวงศ์ และ วิชิต ปุณวตั ร์ . (2536). เทคนิคการออกแบบโปรแกรม. กรุงเทพฯ:
ซีเอด็ ยเู คชนั .

ธีรวฒั น์ ประกอบผล. (2552). คู่มือการเขียนโปรแกรมภาษา Java. กรุงเทพฯ: ซคั เซส มีเดีย.
_________. (2545). การโปรแกรมภาษาซีสาหรับงานวทิ ยาศาสตร์. กรุงเทพฯ: ส.ส.ท.
_________. (2553). คู่มอื การเขียนโปรแกรมภาษา Java. กรุงเทพฯ: ซิมพลิฟลาย.
นุกลู กระจาย. (2540). การเขียนโปรแกรมในดอสและวินโดว์ด้วยบอร์แลนด์ C++ 5.0. กรุงเทพฯ:

ซีเอด็ ยเู คชนั .
บุญเลิศ เอ่ียมทศั นาและคณะ. (2534). โปรแกรมคอมพวิ เตอร์ภาษาซี.กรุงเทพฯ: ซีเอด็ ยเู คชนั .
พนิดา พานิชกลุ . (2548). Object-Oriented ฉบบั พนื้ ฐาน. กรุงเทพฯ: เคทีพี แอนด์ คอนซลั ท.์
_________. (2554). การเขียนโปรแกรมคอมพิวเตอร์เบื้องต้นด้วยภาษาจาวา. พิมพค์ ร้ังที่ 5.

กรุงเทพฯ: เคทีพี แอนด์ คอนซลั ท.์
เพญ็ ศรี ปักกะสีนงั . (2546). เทคโนโลยสี ารสนเทศเพอ่ื ชีวติ . กรุงเทพฯ: ทริปเพิล้ เซเวน่ มลั ติเทค.
วชั ราภรณ์ สุริยาภิวฒั น์. (2553). คอมพิวเตอร์เบื้องต้นและเทคนิคการเขียนโปรแกรม. กรุงเทพฯ:

ศนู ยห์ นงั สือแห่งจุฬาลงกรณ์มหาวทิ ยาลยั .
สมโภชน์ ช่ืนเอี่ยม. (2553). วทิ ยาการคอมพวิ เตอร์เบอื้ งต้น. กรุงเทพฯ: ซีเอด็ ยเู คชนั .

Brett Spell. (2000). Professional Java Programming. USA: Wrox Press Ltd. Arden House, 1102 Warwick
Road, Acocks Green, Birmingham, B27 6BH, UK.

Bruce Eckel. (2000). Thinking in Java. 2nd . USA: Prentice Hall PTR Prentice-Hall.
Cay Horstmann. (2002). Object-Oriented Design & Patterns. USA: John Wiley & Sons.

24

David Etheridge. (2009). Java:The Fundamentals of Objects and Classes-An Introduction to Java

Programming. Ventus Publishing Aps. [Online]. Available: http://www.BookBoon.com

Simol Kendal. (2009). Object Orientted Programming using Java. Ventus Publishing Aps. [Online].

Available: http://www.BookBoon.com
Wikipedia. (2007). “Object-oriented programming”. [Online] Available: http://en.wikipedia.org/wiki/Object-

oriented_programming.

Y. Daniel Liang. (2007). Introduction to Java Programming. USA: Pearson Prentice Hall
Pearson Education, Inc.

บทท่ี 2
ภาษายูเอม็ แอล

การเขียนโปรแกรมเชิงวตั ถุเริ่มจากการคิดให้ทุกอย่างเป็ นวตั ถุ หลงั จากน้นั ตอ้ งจาลอง
แนวคิดของตนออกมาเป็ นแผนภาพที่เขา้ ใจง่ายใหเ้ หมาะสมแก่การนาไปแปลงเพ่ือเขียนโปรแกรม
ต่อไป อย่างไรก็ตามการออกแบบโดยใชแ้ ผนภาพต่างๆ จาเป็ นตอ้ งออกแบบให้ไดม้ าตรฐานตาม
แนวทางการออกแบบที่เป็ นที่ยอมรับ เพ่ือพฒั นาไปสู่มาตรฐานสากล ดงั น้นั จึงจาเป็ นอยา่ งยิ่งที่ตอ้ ง
เรียนรู้สัญลกั ษณ์ยเู อม็ แอล (UML:Unified Modeling Language) ท่ีเก่ียวขอ้ งกบั การออกแบบหรือใช้
เขียนแทนวตั ถุ คลาส ความสัมพนั ธ์ท่ีมีในภาษายูเอ็มแอล และการรับทอดคุณสมบตั ิต่างๆ ใน
เอกสารประกอบการสอนเล่มน้ีอา้ งอิงเคร่ืองมือการเขียนโปรแกรมดว้ ยโปรแกรมเน็ตบีน ดงั น้ัน
สญั ลกั ษณ์จึงถูกสร้างมาจากโปรแกรมเน็ตบีน ในบทน้ีนาเสนอความหมาย และสัญลกั ษณ์ของภาษา
ยเู อ็มแอลท่ีจาเป็ นต่อการใชง้ าน โดยนาเอาแนวคิดเชิงวตั ถุในบทที่ผา่ นมานามาจาลองให้เกิดความ
เขา้ ใจตรงกนั เพื่อให้สามารถเขียนโปรแกรมได้ในบทถดั ไป และการนาเสนอเน้ือหาท่ีเก่ียวกบั
ความสัมพนั ธ์ของคลาสหลายรูปแบบท่ีจะตอ้ งศึกษาในบทต่อๆ ไป

ความรู้ทัว่ ไปเกยี่ วภาษายูเอม็ แอล

(Wikipedia, 2011) ไดก้ ล่าวถึงยเู อม็ แอลไวว้ า่ ยเู อม็ แอลถูกใชส้ าหรับกาหนด (Specify) ทา
ให้เห็นภาพ (Visualization) แกไ้ ข (Modify) สร้าง (Construct) และออกแบบเอกสาร (Document)
ของซอฟต์แวร์เชิงวตั ถุ ยูเอ็มแอลได้เสนอวิธีการมาตรฐานของพิมพ์เขียวของระบบที่สา มารถ
มองเห็นเป็นรูปธรรมได้ รวมถึงกลุ่มงานตอ่ ไปน้ีดว้ ย

- กิจกรรม (Activities)
- ผกู้ ระทา (Actor)
- กระบวนการทางธุรกิจ (Business process)
- โครงสร้างฐานขอ้ มูล (Database schemas)
- คอมโพเนนตเ์ ชิงตรรกะ (logical Component)
- เน้ือหาเชิงภาษาคอมพวิ เตอร์ (Programming language statements)

26

- ความสามารถในการนากลบั มาใช้ใหม่ของคอมโพเนนต์ของซอฟต์แวร์ (Reusable
software component)

ยเู อม็ แอลรวมเอาเทคนิคจการออกแบบจาลองขอ้ มูล (Data Modelling) ซ่ึงเป็ นไดอะแกรม
ความสัมพนั ธ์ของเอนติต้ี (Entity relationship diagram) แบบจาลองทางธุรกิจ (Business Modelling)
ซ่ึงเรียกวา่ ผงั การทางาน (Work Flows) การออกแบบจาลองเชิงวตั ถุ (Object Modelling) และ
แบบจาลองคอมโพเนนต์(Component Modelling) ท่ีถูกใช้งานในทุกการประมวลผล (Process)
ผา่ นทางวงจรการพฒั นาซอฟตแ์ วร์ (Software Development life Cycle) และสามารถนาไปอิมพลี
เมนตไ์ ดห้ ลากหลายเทคนิค

ยเู อม็ แอลมีการเชื่อมโยงสัญลกั ษณ์กระบวนการของ บูชเมธอด (Booch Method) เทคนิค
การออกแบบเชิงวตั ถุ (OMT: Object-Modelling Technique) และวิศวกรรมซอฟตแ์ วร์แบบเชิงวตั ถุ
(OOSE: Object-Oriented Software Engineering) โดยหลอมเขา้ กนั เป็ นอนั หน่ึงอนั เดียวกนั และ
นามาทาให้ง่ายต่อการใชง้ าน ปรับใชไ้ ดอ้ ยา่ งกวา้ งขวางดว้ ยเทคนิคการทาแบบจาลอง ยเู อ็มแอลมี
เป้ าหมายที่จะเป็ นภาษามาตรฐานทางการสร้างแบบจาลองซ่ึงสามารถท่ีจะจาลองออกแบบพร้อมๆ
กนั (Concurrent) และระบบแบบกระจาย(Distributed System) อีกดว้ ย ซ่ึงในปัจจุบนั ภาษายเู อม็ แอล
ไดอ้ ยใู่ นความรับผดิ ชอบของโอเอม็ จี (OMG: Object Management Group)

ประวตั ิของยูเอม็ แอล

วิกิพีเดีย (Wikipedia, 2011) และพนิดา พานิชกุล (2548, หน้า 202-203) ได้
กล่าวถึงประวตั ิของยูเอ็มไวอ้ ย่างสอดคล้องกันดังน้ี หลังจากที่บริษัท เรชันนอลซอฟต์แวร์
(Rational Software Corporation) ไดจ้ า้ งเจมส์ รัมเบิกห์ (James Rumbaugh) ในปี 1994 บริษทั ได้
กลายเป็นท่ีมาของสองยอดนิยมเชิงวตั ถุท่ีมีวธิ ีการสร้างแบบจาลอง รัมเบิกห์ไดไ้ ดส้ ร้างแบบจาลอง
โอเอ็มที (OMT) ซ่ึงการวิเคราะห์เชิงวตั ถุตามปกติ (OOA) และนอกจากน้นั ยงั ใช้วิธีของบูช เกรดี
บูช (Booch Grady Booch) ซ่ึงดีสาหรับการออกแบบเชิงวตั ถุ (OOD) พวกเขาท้งั สองได้ช่วยกนั
พฒั นาอยา่ งรวดเร็ว และต่อมามีไอวาน จาคอบสัน (Ivar Jacobson) ซ่ึงเป็ นผสู้ ร้างของวิศวกรรม
ซอฟตแ์ วร์เชิงวตั ถุวธิ ี (OOSE) เขา้ มาร่วมดาเนินการดว้ ยในปี 1995

ในปี 1996 พวกเขาไดเ้ ปิ ดตวั UML 0.9 ข้ึนเป็ นคร้ังแรกซ่ึงก็ไดร้ ับการยอมรับเป็ นอยา่ งดี
ทาใหม้ ีการพฒั นาในจนกระทงั่ เป็ นเวอร์ชนั 1.0 และเป็ นท่ียอมรับใหเ้ ป็ นภาษาสัญลกั ษณ์มาตรฐาน
สาหรับการออกแบบและวิเคราะห์เชิงวตั ถุ โดยเวอร์ชนั น้ีไดถ้ ูกส่งไปเสนอเป็ นการตอบสนองต่อ
โอเอ็มจีในเดือนมกราคม ปี ค.ศ. 1997 ในช่วงเดือนเดียวกันพนั ธมิตรได้สร้างขอ้ กาหนดและ
รูปแบบยเู อ็มแอลใหม่จนเป็ นเวอร์ชนั 1.1 และไดส้ ่งไปยงั โอเอ็มจีในเดือนสิงหาคมของปี เดียวกนั
และไดถ้ ูกนาไปใช้โดยโอเอ็มจีในเดือนพฤศจิกายนปี ดงั กล่าว และหลงั จากน้นั ก็ไดพ้ ฒั นาอย่าง

27

ต่อเนื่องจนถึงปัจจุบนั เป็ นเวอร์ชนั 2.3 แลว้ ภาพที่ 2.1 แสดงวิวฒั นาการต่างๆ ตามระยะเวลาของ
พฒั นายเู อม็ แอล

ภาพที่ 2.1 แสดงววิ ฒั นาการของการพฒั นายเู อม็ แอล
(ที่มา: http://en.wikipedia.org/wiki/Unified_Modeling_Language, 2011)

ความหมายของยูเอม็ แอล

พนิดา พานิชกุล (2548, หน้า 201) กล่าวว่า ยเู อ็มแอล คือภาษารูปภาพหรือสัญลกั ษณ์
ที่เรียกวา่ ภาษาทางกราฟิ ก (Graphic Language) ท่ีใชเ้ พ่ือการถ่ายทอดความคิดออกมาเป็ นแผนภาพ
องคป์ ระกอบของภาษายเู อม็ แอล ไดแ้ ก่

1. ธิง (Things) คือ กระบวนการที่สร้างแนวคิดเกี่ยวกบั การสร้างวตั ถุ จนกระทง่ั ทาให้เกิด
คลาสข้ึน ไดแ้ ก่ คานาม คากริยา จดั กลุ่มคา และการเขียนหมายเหตุต่างๆ ซ่ึงสิ่งเหล่าน้ีจะประกอบ
กนั เพอ่ื ช่วยใหเ้ กิดแนวคิดเชิงวตั ถุเพือ่ สร้างคลาส

2. ความสัมพันธ์ (Relationships) คือ ความสัมพันธ์ของคลาสเช่น ดีเพนเดนซี
(Dependency) แอสโสสิเอชนั (Association) เจนเนอรอลไลเซชนั (Generalization) และ เรียลไลเซ
ชนั (Realization) เป็นตน้

3. ไดอะแกรม (Diagram) คือ สัญลกั ษณ์ทางกราฟิ กท่ีช่วยในการออกแบบคลาส และ
วเิ คราะห์ระบบเชิงวตั ถุ

28

กิติพงษ์ กลมกล่อม (2552, หน้า 11-15) ไดก้ ล่าววา่ ยเู อ็มแอลจดั ไดว้ า่ เป็ นภาษาเพราะมี
หน่วยของภาษา(Language unit) ที่ชดั เจน ซ่ึงมีท้งั คาศพั ท์ (Vocabulary) และไวยากรณ์ (Syntax: กฎ
กติกาในการนาคาศพั ทม์ าเรียงต่อกนั ) ท่ีชดั เจนและส่ิงที่แตกตา่ งจากภาษาทว่ั ไปคือ หน่วยของภาษา
น้นั ประกอบไปดว้ ยรูปภาพและแผนภาพไม่ใช่อกั ขระ ซ่ึงจดั ให้ยเู อม็ แอลเป็ นภาษารูปภาพประเภท
หน่ึง ซ่ึงคาศพั ทไ์ ดแ้ ก่ ธิง(Things), รีเลชนั ชิพ(Relationship), ไดอะแกรม(Diagram) ส่วนไวยากรณ์
ไดแ้ ก่ ซีแมนติกรูล(Semantic rule) และ เวล-ฟอร์มโมเดล(Well-formed model)

ไซมอล เคนดลั (Simol Kendal, 2009, p.25) อธิบายวา่ ยเู อ็มแอลบางคร้ังถูกใชอ้ ธิบายการ
ทางานเช่นเดียวกบั การประมวลผล (process) แต่การประมวลผลน้นั เป็ นลาดบั การทางานที่จะไดม้ า
ซ่ึงผลลพั ธ์ต่างๆ แต่ยูเอ็มแอลจะอธิบายในมุมมองว่ากระบวนการอะไรที่เหมาะแก่การสร้าง การ
ออกแบบจะถูกอธิบายดว้ ยไดอะแกรมตา่ งๆ

วกิ ิพีเดีย (wikipediea, 2011) กล่าววา่ ยเู อม็ แอลคือภาษาที่เป็ นมาตรฐานสาหรับใชใ้ นการ
สร้างโมเดลทว่ั ไปในฟิ ลดท์ ี่เก่ียวขอ้ งกบั วิศวกรรมซอฟตแ์ วร์แบบเชิงวตั ถุซ่ึงมาตรฐานเหล่าน้นั ถูก
กาหนดโดยโอเอ็มจี (OMG: Object Management Group) ในขณะท่ีโอเอม็ จี (“Getting Started with
UML”, OMG, 2011) เองกล่าววา่ ยเู อ็มแอลคือขอ้ กาหนดท้งั หมดที่เป็ นของโอเอ็มจีและไม่เพียงแต่
เป็ นวธิ ีการออกแบบจาลองในโลกความเป็ นจริงไปสู่โครงสร้างทางแอพพลิเคชนั พฤติกรรม และ
สถาปัตยกรรมเทา่ น้นั แตย่ งั ออกแบบกระบวนการในเชิงธุรกิจและโครงสร้างขอ้ มลู ไดอ้ ีกดว้ ย

จากความหมายดังกล่าวข้างต้น สรุ ปได้ว่า ยูเอ็มแอลเป็ นภาษาภาพมาตรฐานที่ใช้
ออกแบบจาลองแนวคิดออกมาเป็ นภาพ สาหรับการพฒั นาโปรแกรมเชิงวตั ถุหรือพฒั นางานต่างๆ
ตามตอ้ งการ ยูเอ็มแอลเป็ นภาษาเน่ืองจากที่มีหน่วยของภาษาคือคาศพั ท์และไวยากรณ์ครบถว้ น
คาศพั ทต์ ่างๆ แบ่งเป็ น 3 กลุ่มไดแ้ ก่ ธิง(Things) ไดแ้ ก่กระบวนการสร้างแนวคิดเกี่ยวกบั การสร้าง
วตั ถุซ่ึงเป็ นคานาม และคากริยา เป็ นตน้ ความสัมพนั ธ์(Relationship) ไดแ้ ก่ความสัมพนั ธ์ของกลุ่ม
คลาส และ ไดอะแกรม(Diagram) ซ่ึงเป็ นสัญลกั ษณ์ทางกราฟิ กที่ช่วยในการออกแบบเชิงวตั ถุ ส่วน
ไวยากรณ์น้นั เป็นกฎที่วา่ ดว้ ยการกาหนดรายละเอียดต่างๆ เช่นชื่อ (Name) ขอบเขต (Scope) เป็นตน้

ธิง

ธิง คือส่ิงตา่ งๆ ท่ีไดจ้ ากกระบวนการนามธรรม (Abstraction) คือการให้แนวคิด (Concept)
แก่วตั ถุ (Object) จนทาใหเ้ กิดคลาส แบ่งออกตามชนิดของคา เช่น คานาม คากริยา เป็ นตน้ ซ่ึงแบ่ง
ไดเ้ ป็น 4 กลุ่มคือ กลุ่มของคานาม (Structural Things) กลุ่มของคากริยา (Behavioural Things) กลุ่ม
ของการจดั กลุ่มคา (Grouping Things) และกลุ่มการเขียนหมายเหตุ (Annotation Things) (พนิดา
พานิชกุล, 2548, หนา้ 204)

29

ธิง คือ ส่ิงท่ีแสดงกระบวนการที่จะมาซ่ึงคลาส ซ่ึงส่ิงต่างๆ ท่ีจะทาให้เกิดคลาสไดน้ ้นั ตอ้ ง
อาศยั สญั ลกั ษณ์ทางกราฟิ กที่ใชแ้ ทนความคิดท้งั คานาม คากริยา การจดั กลุ่มคา และการเขียนหมาย
เหตุ ธิงไดแ้ ก่ คลาส (Class), อินเทอร์เฟส (interface), คอลแลบบอเรชนั (Collaboration), ยสู เคส
(Use Case), แอคทีฟคลาส (Active Class), คอมโพเนนต์ (Component), โหนด(Node), อินเทอร์
แอคชนั (Interaction), สเตทแมชชีน (State Machine), แพคเกจ (Package), และ โนต้ (Note)

การนาเสนอในลาดบั ต่อไปจะแสดงความหมาย ลกั ษณะแนวคิดของการนาไปใชง้ าน และ
แผนภาพตา่ งๆ เป็นธิงดงั ท่ีกล่าวไปแลว้

1. คลาส
คลาสใชอ้ ธิบายวตั ถุที่มีคุณลกั ษณะ ความสัมพนั ธ์ร่วมกนั ซ่ึงโดยทว่ั ไปแบ่งออกเป็ นส่วน
ของ ชื่อคลาส แอตทริบิวต์ และการดาเนินการ (พนิดา พานิชกุล, 2548, หนา้ 205) และบางคร้ังยงั
เพ่ิมส่วนท่ี 4 คือส่วนของการดาเนินการท่ีเป็ นทางเลือกเขา้ ไปไดอ้ ีกดว้ ย (“UML Basic Notations”,
2011) ภาพของคลาสแสดงไดด้ งั ภาพที่ 2.2 และ ภาพท่ี 2.3

ภาพที่ 2.2 แสดงภาพคลาสโดยทวั่ ไปที่สร้างโปรแกรมเน็ตบีน

ภาพท่ี 2.3 แสดงภาพคลาสในกรณีท่ีมีส่วนเพม่ิ เติมเขา้ มา
ท่ีมา: (www.tutorialspoint.com/uml/uml_basic_notations.htm, 2011)

30

2. คอลแลบบอเรชนั
คอลแลบบอเรชนั แทนดว้ ยวงรีแบบมีเส้นประ และชื่อของมนั จะเขียนภายในวงดงั ภาพท่ี
2.4

ภาพที่ 2.4 แสดงภาพคอลแลบบอเรชนั
หน้าที่ของคอลแลบบอเรชนั กาหนดปฏิสัมพนั ธ์ระหว่างสมาชิกของวตั ถุท้งั ท่ีอยู่ในและ
นอกคลาสเดียวกนั (พนิดา พานิชกุล, 2548, หนา้ 206) โดยทว่ั ไปจะใชแ้ ทนหนา้ ท่ีความรับผิดชอบ
ท่ีแสดงเป็นกลุ่ม (“UML Basic Notations”, 2011)
3. ยสู เคส
ยสู เคสทาหนา้ ที่ใชแ้ ทนการแสดงฟังกช์ นั ในระดบั สูงของระบบ (“UML Basic Notations”,
2011) ซ่ึงจะอธิบายกิจกรรมของระบบที่เกิดข้ึนตามข้นั ตอนอนั จะส่งผลตอบสนองต่อผกู้ ระทาต่อ
ระบบ (Actor) (พนิดา พานิชกุล, 2548, หนา้ 206) สัญลกั ษณ์ท่ีใชค้ ือ วงรีและเขียนช่ือไวภ้ ายในยสู
เคส ตวั อยา่ งดงั ภาพที่ 2.5

ภาพท่ี 2.5 แสดงภาพยสู เคส
4. แอคเตอร์ (Actor)

แอคเตอร์มีหนา้ ท่ีกาหนดการติดต่อกบั ระบบ ซ่ึงจะถูกใชใ้ นยสู เคสไดอะแกรมสาหรับ
อธิบาย ท้งั ในและนอกระบบ มีสญั ลกั ษณ์เป็นรูปคนดงั ภาพที่ 2.6

31

ภาพท่ี 2.6 แสดงภาพแอคเตอร์
5. แอคทีฟคลาส
แอคทีฟคลาสเป็ นคลาสเช่นเดียวกบั คลาสปกติ แต่ทาหน้าท่ีแสดงวตั ถุท่ีใชใ้ นความหมาย
ของการทางานพร้อมๆ กนั (Concurrent) ซ่ึงหากกล่าวในเชิงเทคนิคการเขียนโปรแกรมก็คือการ
ทางานแบบเธรด (Thread) สัญลกั ษณ์ท่ีใชเ้ ป็ นแบบเดียวกนั กบั คลาสปกติแตกต่างกนั เพียงเส้นจะ
เป็นเส้นหนา แสดงดงั ภาพท่ี 2.7

ภาพท่ี 2.7 แสดงภาพแอคทีฟคลาส
6. คอมโพเนนตไ์ ดอะแกรม

คอมโพนเนนต์เป็ นส่วนประกอบท่ีมีตวั ตนจริง (พนิดา พานิชกุล, 2548, หน้า 207)
โดยใชแ้ ทนทุกส่วนของระบบซ่ึงยเู อม็ แอลทาข้ึนมา (“UML Basic Notations”, 2011) ตวั อยา่ งที่เห็น
ไดช้ ดั เจนคือแฟ้ มที่เป็ นรหัสตน้ ฉบบั (Source Code) หรือคอมโพเนนต์ต่างๆ เช่น จาวาบีน(Java
Beans) คอมพลสั พลสั (COM++) หรือแฟ้ มประเภท .java, .exe, หรือ .com เป็ นตน้ สัญลกั ษณ์
มาตรฐานท่ีใชค้ ือสี่เหล่ียมมีแทบ็ ส่ีเหลี่ยมยื่นออกมาสองแทบ็ หรือหากสร้างในโปรแกรมท่ีใชส้ ร้าง
ยูเอ็มแอลของโปรแกรมเน็ตบีนจะเป็ นรูปสี่เหล่ียมผืนผา้ และมีขอ้ ความ <<component>> อยู่
ดา้ นบนโดยชื่อจะเขียนไวภ้ ายในภาพน้นั ตวั อยา่ งแสดงดงั ภาพท่ี 2.8

ภาพที่ 2.8 แสดงภาพคอมโพเนนตท์ ้งั สองรูปแบบ

32

7. โหนด

โหนดใชแ้ ทนคอมโพเนนต์เชิงกายภาพของระบบ (“UML Basic Notations”, 2011)
หรือแสดงทรัพยากรที่ใชใ้ นขณะท่ีระบบทางาน (พนิดา พานิชกุล, 2548, หนา้ 207) ตวั อย่างของ
การนาไปใช้งานอาจเป็ นเซิร์ฟเวอร์ เน็ตเวิร์ก เป็ นตน้ ภาพที่ใช้แสดงคือภาพสี่เหลี่ยมทรงกล่อง
เขียนชื่อไวด้ า้ นหนา้ ของกล่อง ตวั อยา่ งดงั ภาพท่ี 2.9

ภาพที่ 2.9 แสดงภาพโหนด
8. สเตทแมชชีน

สเตทแมชชีนใชอ้ ธิบายความแตกต่างของสถานะของคอมโพเนนต์ในขณะท่ียงั อยใู่ น
วงจรชีวิต ซ่ึงอาจมีสถานะแบบกาลงั ทางาน (Active) สถานะที่มีความวา่ ง (Idle) หรือสถานะอื่นๆ
ได้ ข้ึนอยู่กับสถานการณ์ (“UML Basic Notations”, 2011) โดยทว่ั ไปแล้วจะใช้สัญลักษณ์
ส่ีเหลี่ยมผืนผา้ ตดั มุม และเขียนชื่อไวด้ า้ นบน โดยทว่ั ไป การเขียนสเตทแมชชีนจะประกอบดว้ ย
สถานะเร่ิมตน้ (Initial State) และสถานะจบ (Final State) เพ่ือใช้ทางานร่วมกนั โดยจะเริ่มตน้ แม
ชชีนดว้ ยสถานะเริ่ม และจบดว้ ยสถานะจบเสมอ ซ่ึงสถานะเร่ิมจะใชส้ ัญลกั ษณ์เป็ นวงกลมเล็กทึบ
ส่วนสถานะจบจะคลา้ ยกบั สถานะเริ่มแต่จะใชว้ งกลมครอบวงกลมทึบอีกช้นั หน่ึง แสดงสัญลกั ษณ์
ท่ีใชแ้ สดง สถานะเริ่ม สถานะปกติ และสถานะจบ ดงั ภาพที่ 2.10

ภาพที่ 2.10 แสดงสญั ลกั ษณ์ท่ีใชก้ บั สเตทแมชชีน

9. แพคเกจ
แพคเกจใช้เป็ นกลไกในการจดั กลุ่มให้กบั ส่วนประกอบต่างๆ ของระบบ โดยเฉพาะ

กลุ่มคลาสท่ีจามารวมกนั หรือแมแ้ ต่ภายในแพคเกจอาจมีแพคเกจอื่นๆ อีกก็ได้ โดยทว่ั ไปแลว้ จะใช้

33

สญั ลกั ษณ์สี่เหล่ียมมีแท็บดา้ นบนซ่ึงอาจเขียนไวด้ า้ นในหรือบนแทบ็ กไ็ ด้ แสดงภาพแพคเกจดงั ภาพ
ท่ี 2.11

ภาพที่ 2.11 แสดงภาพแพคเกจ
10. อินเทอร์เฟส

อินเทอร์เฟสใช้สาหรับอธิบายความเป็ นฟังก์ชันโดยประกาศจากการอิมพลีเมนต์
อินเทอร์เฟสจะใชเ้ หมือนแม่แบบ เม่ือใดก็ตามท่ีกาหนดฟังกช์ นั โดยไม่มีการอิมพลีเมนต์ เมื่อคลาส
อิ ม พ ลี เ ม น ต์อิ น เ ท อ ร์ เ ฟ ส จ ะ อิ ม พ ลี เ ม น ต์ ฟั ง ก์ ชัน เ ห ล่ า น้ ัน ต า ม ข้อ ก า ห น ด ข อ ง ค ว า ม ต้อ ง ก า ร
(Requirement) (“UML Basic Notations”, 2011) โดยที่ไปอินเทอร์เฟสใชส้ ัญลกั ษณ์วงกลมและ
เขียนช่ือไวใ้ ต้วงกลมน้ันๆ และหากเขียนโดยใช้เน็ตบีนจะใช้สัญลกั ษณ์คล้ายคลาสแต่จะเขียน
ดา้ นบนวา่ <<Interface>> แสดงดงั ภาพที่ 2.12 และภาพที่ 2.13

ภาพที่ 2.12 แสดงภาพอินเทอร์เฟสแบบที่ 1
ท่ีมา: (www.tutorialspoint.com/uml/uml_basic_notations.htm, 2011)

ภาพที่ 2.13 แสดงภาพอินเทอร์เฟสแบบท่ี 2 ที่สร้างจากโปรแกรมเน็ตบีน

34

11. โนต้
โนต้ เป็นหมายเหตุใชอ้ ธิบายเพ่มิ เติมจากส่วนประกอบอ่ืนๆ สัญลกั ษณ์เป็ นรูปส่ีเหล่ียม

พบั มุมแลว้ เขียนขอ้ ความที่เป็นหมายเหตุไวภ้ ายใน ตวั อยา่ งแสดงดงั ภาพที่ 2.14

ภาพท่ี 2.14 แสดงภาพของโนต้

ความสัมพนั ธ์

รายละเอียดที่จะกล่าวถึงต่อไปน้ีจะแสดงสัญลกั ษณ์พร้อมท้งั อธิบายเกี่ยวกบั ความสัมพนั ธ์
เพ่ือประกอบสัญลักษณ์บางส่วนเท่าน้ัน สาหรับรายละเอียดของความสัมพนั ธ์ของคลาสใน
รายละเอียดจะกล่าวในหวั ขอ้ ตอ่ ไป โดยทวั่ ไปแลว้ ความสัมพนั ธ์ที่นามาใชใ้ นการเขียนสญั ลกั ษณ์

1. ดีเพนเดนซี หรือการใช้ (Dependency หรือ usage) สัญลกั ษณ์ท่ีใชเ้ ป็ นลูกศรและ
เส้นประ แสดงดงั ภาพที่ 2.15

ภาพที่ 2.15 แสดงสัญลกั ษณ์ของความสัมพนั ธ์แบบดีเพนเดนซี
สญั ลกั ษณ์น้ีใชส้ าหรับแสดงความสมั พนั ธ์แบบข้ึนต่อกนั และการเรียกใชง้ านแบบ
การเรียกใชง้ านอีกคลาสหน่ึง หรือหลายๆ คลาสพร้อมๆ กนั กส็ ามารถทาได้ ตวั อยา่ งดงั ภาพที่ 2.16

ภาพที่ 2.16 แสดงตวั อยา่ งความสัมพนั ธ์แบบดีเพนเดนซี
2. เจนเนอรอลไลเซชนั (Generalization) สญั ลกั ษณ์ท่ีใชเ้ ป็นลูกศรหวั โปร่งเส้นทึบ
แสดงดงั ภาพท่ี 2.17

35

ภาพท่ี 2.17 แสดงสญั ลกั ษณ์ของความสัมพนั ธ์แบบเจนเนอรอลไลเซชนั
ความสัมพนั ธ์แบบน้ีใชส้ าหรับแสดงการรับทอดคุณสมบตั ิของคลาส ซ่ึงในภาษา

จาวาน้นั จะสามารถรับทอดคุณสมบตั ิไดเ้ พียงหน่ึงคลาสเท่าน้นั ตวั อยา่ งแสดงดงั ภาพท่ี 2.18

ภาพท่ี 2.18 แสดงตวั อยา่ งความสัมพนั ธ์แบบเจนเนอรอลไลเซชนั
3. เรียลไลเซชนั (Realization) เป็ นสัญลกั ษณ์คลา้ ยกบั การเจนเนอรอลไลเซชนั แต่
เส้นเชื่อมจะเป็นเส้นประ แสดงดงั ภาพท่ี 2.19

ภาพท่ี 2.19 แสดงสัญลกั ษณ์ของความสมั พนั ธ์แบบเรียลไลเซชนั
สัญลกั ษณ์น้ีใชส้ าหรับแสดงความสัมพนั ธ์การนาเอาอินเทอร์เฟสมาอิมพลีเมนต์
ซ่ึงในคลาสหน่ึงๆ ตวั อยา่ งแสดงดงั ภาพท่ี 2.20

ภาพท่ี 2.20 แสดงตวั อยา่ งความสัมพนั ธ์แบบเรียลไลเซชนั
4. แอสโสซิเอชนั (Association) ใชส้ ัญลกั ษณ์เส้นตรงเช่ือมโยงและโดยทวั่ ไปจะ
ระบุจานวนของความสัมพนั ธ์ดว้ ย ซ่ึงภาพที่ 2.21 แสดงภาพของสญั ลกั ษณ์ดงั กล่าว

36

ภาพที่ 2.21 แสดงสัญลกั ษณ์ของความสัมพนั ธ์แบบแอสโสซิเอชนั
สัญลกั ษณ์น้ีใชแ้ สดงความสัมพนั ธ์ของคลาสแบบทว่ั ไปซ่ึงไม่ไดม้ ีส่วนข้ึนต่อกนั ในทางใด
โดยตรง ตวั อยา่ งแสดงดงั ภาพที่ 2.22

ภาพที่ 2.22 แสดงตวั อยา่ งความสมั พนั ธ์แบบแอสโสซิเอชนั
5. คอมโพสสิชนั (Composition) ใชส้ ัญลกั ณ์ส่ีเหลี่ยมขนมเปี ยกปูนทึบลากดว้ ยเส้น
ทึบ สญั ลกั ษณ์แสดงดงั ภาพที่ 2.23

ภาพท่ี 2.23 แสดงสญั ลกั ษณ์ของความสมั พนั ธ์แบบคอมโพสสิชนั
สัญลกั ษณ์น้ีใช้แสดงความสัมพนั ธ์ของคลาสแบบเชิงองค์ประกอบที่สาคญั ท่ีขาดไม่ได้
และมุ่งเน้นในการพิจารณาในเร่ืองของการใช้งานวตั ถุที่ผลต่อกนั เมื่อมีการสร้างและทาลายวตั ถุ
เมื่อวตั ถุแม่สร้างวตั ถุลูกและหากวตั ถุของแม่ถูกทาลายจะทาให้ลูกถูกทาลายดว้ ย ตวั อยา่ งแสดงดงั
ภาพที่ 2.24

ภาพท่ี 2.24 แสดงตวั อยา่ งความสัมพนั ธ์แบบคอมโพสสิชนั

37

6. แอคกรีเกชนั (Aggregation) ใชส้ ัญลกั ษณ์รูปส่ีเหล่ียมขนมเปี ยกปูนโปร่งและลาก
ดว้ ยเส้นทึบ สัญลกั ษณ์แสดงดงั ภาพท่ี 2.25

ภาพท่ี 2.25 แสดงสญั ลกั ษณ์ของแอคกรีเกชนั

สัญลกั ษณ์น้ีใช้แสดงความสัมพนั ธ์แบบการเรียกใชเ้ ป็ นแบบเชิงประกอบเช่นเดียวกนั กบั
Composition แต่ไม่ไดใ้ ห้ความสาคญั กบั การสร้างและการทาลายวตั ถุ ซ่ึงเม่ือตวั สร้างถูกทาลายตวั
วตั ถุลูกอาจยงั ไม่ถูกทาลายก็ได้ ตวั อยา่ งแสดงดงั ภาพท่ี 2.26

ภาพที่ 2.26 แสดงตวั อยา่ งความสัมพนั ธ์แบบแอคกรีเกชนั

ไดอะแกรม

พนิดา พานิชกุล(2548, หนา้ 212) กล่าวไวว้ า่ องคป์ ระกอบที่ 3 ของยเู อ็มแอลคือแผนภาพ
หรือไดอะแกรมท่ีทาหน้าท่ีรวบรวมธิงและความสัมพนั ธ์เขา้ ไวใ้ นท่ีเดียวกนั ซ่ึงไดอะแกรมแบ่ง
ออกเป็ นสองกลุ่มใหญ่ไดแ้ ก่ ไดอะแกรมเชิงโครงสร้าง (Structure Diagram) และไดอะแกรมเชิง
พฤติกรรม (Behavioral Diagram) ไดอะแกรมเชิงโครงสร้างเป็ นไดอะแกรมที่แสดงให้เห็น
โครงสร้างเชิงสถิต (Static) ประกอบดว้ ย คลาสไดอะแกรม (Class Diagram) อ็อบเจกตไ์ ดอะแกรม
(Object Diagram) คอมโพเนนตไ์ ดอะแกรม (Component Diagram) และเดพพลอยเมนตไ์ ดอะแกรม
(Deployment Diagram) ส่วนไดอะแกรมเชิงพฤติกรรม (Behavioural Diagram) แสดงให้เห็น
โครงสร้างเชิงกิจกรรมของระบบ (Dynamic)

ส่วนวิกิพีเดีย (Wikipedia, 2011) ไดก้ ล่าวไวว้ า่ ไดอะแกรมของยเู อ็มแอลน้นั แบ่งไดเ้ ป็ น
สองกลุ่มคือกลุ่มท่ีมีความถาวร (Static) หรือเป็ นเชิงโครงสร้าง (Structural) ท่ีแสดงโครงสร้างของ
ระบบแบบถาวรด้วยการใช้วตั ถุ แอตทริบิวต์ เมธอดและความสัมพนั ธ์ ส่วนอีกกลุ่มหน่ึงคือ
ไดอะแกรมแบบแสดงความเป็ นพลวตั (Dynamic) หรือ เชิงพฤติกรรม (Behavioral) ซ่ึงแสดงการ

38

ทางานประสานกัน (Collaboration) ระหว่างวตั ถุและการเปล่ียนแปลงสถานะของวตั ถุ ซ่ึง
ไดอะแกรมของสองกลุ่มดงั กล่าวน้ีเป็นไปตามแผนภาพดงั น้ี

ภาพท่ี 2.27 แสดงตวั โครงสร้างของไดอะแกรมของยเู อม็ แอล
ที่มา: (http://en.wikipedia.org/wiki/Unified_Modeling_Languageม, 2011)

คลาสไดอะแกรม

คลาสไดอะแกรมคือไดอะแกรมที่แสดงโครงสร้างสถิต ซ่ึงอธิบายโครงสร้างของคลาส
ตา่ งๆ ในระบบ ไดแ้ ก่แอตทริบิต์ เมธอดและความสัมพนั ธ์ระหวา่ งคลาส (Wikipedia, 2011, 2) ส่วน
พนิดา พานิชกุล (2548, หนา้ 215) กล่าวว่า คลาสไดอะแกรมเป็ นแผนภาพท่ีใช้ในการแสดงกลุ่ม
ของคลาสโครงสร้างของคลาสและอินเทอร์เฟสตลอดจนแสดงความสัมพนั ธ์ระหว่างคลาส
นอกจากน้ันไซมอล เคนดัล (Simon Kendal, 2009, p. 25) กล่าวว่าคลาสไดอะแกรมคือ
คอมโพเนนตพ์ ้นื ฐานของระบบซอฟตแ์ วร์เชิงวตั ถุใดๆ คลาสไดอะแกรมเตรียมและหาหนทางท่ีง่าย
ต่อการนาเอาไปอิมพลีเมนตแ์ ละยงั แสดงคลาสเดี่ยว รายละเอียดต่างๆของคลาส และความสัมพนั ธ์
ของคลาสอีกดว้ ย ดงั น้นั คลาสไดอะแกรมแสดงสถาปัตยกรรมของระบบท่ีประกอบดว้ ยชื่อคลาสที่
เป็นปัจเจก รายการของแอตทริบิวต์ และรายการของเมธอด

จากท่ีกล่าวมาแลว้ สรุปไดว้ า่ คลาสไดอะแกรมเป็ นการเขียนแทนคลาสแทนดว้ ยแผนภาพ
เพอื่ ใชส้ าหรับการออกแบบและส่ือสารกนั ระหวา่ งผอู้ อกแบบโปรแกรมกบั ผเู้ ขียนโปรแกรม คลาส
ไดอะแกรม ประกอบดว้ ยสามส่วนหลัก คือ ชื่อคลาส (Class name) คุณสมบตั ิหรือตวั แปร
(Attribute) เมธอดหรือตวั ดาเนินการ (Method or Operation) แสดงดงั ภาพที่ 2.28

39

ช่ือคลาส

แอททริบิวต์

เมธอด

การเขา้ ถึงเมธอดและแอททริบิวต์

ภาพท่ี 2.28 แสดงตวั อยา่ งส่วนประกอบคลาสไดอะแกรม

ส่วนประกอบของคลาสมี 3 ส่วนคือ ส่วนแรก เป็ นช่ือ คลาส ส่วนที่ 2 เป็ นแอททริบิวต์
และส่วนท่ี 3 เป็ นเมธอด ซ่ึงในแต่ละส่วนของแอททริบิวต์ และเมธอด สามารถประกาศการเขา้ ถึง
(Access Modifier) เพอื่ บอกถึงขอบเขตการนาไปใชไ้ ด้ ไดแ้ ก่

+ public ประกาศเป็นสาธารณะ
- private ประกาศเป็นส่วนบุคคล หา้ มคลาสอ่ืนใชง้ าน
# protected เป็นการปกป้ องการเขา้ ถึง สามารถใชง้ านโดยเรียกใชผ้ า่ น set กบั get
~ package เป็นการประกาศแสดงถึงการใชง้ านแพคเกจ
/ derived เป็นการรับทอดคุณสมบตั ิ
คลาสไดอะแกรม ใช้สาหรับออกแบบโปรแกรมคลาสทุกคลาส โดยมีส่วนสาคญั คือชื่อ
คลาส แอตทริบิวต์ และเมธอดที่เรียกวา่ โอเปอเรชนั แผนภาพต่อไปน้ีแสดงคลาสไดอะแกรมท่ีสร้าง
โดยโปรแกรมสร้างยเู อ็มแอลจากโปรแกรมเน็ตบีน 6.0 ซ่ึงจะนามาใชง้ านตลอดเอกสารน้ี ตวั อยา่ ง
ของคลาสแสดงดงั ภาพท่ี 2.29

40

ภาพท่ี 2.29 แสดงภาพคลาสชื่อ Resumeไดอะแกรมที่สร้างจากโปรแกรมเน็ตบีน

จากภาพอธิบายไดว้ า่ Resume เป็นช่ือคลาส – เป็ นการแสดงแอตทริบิวตท์ ี่เป็ นแบบ private
ซ่ึงมี name และ surname มีชนิดขอ้ มูลเป็ น String ส่วน Age มีชนิดเป็ น int เมธอดเป็ นแบบ + คือ
public ที่ไมม่ ีการคืนคา่ โดยระบุ void ช่ือของเมธอดคือ showName(), showSurname(), showAge()

ข้นั ตอนในการเขียนคลาสไดอะแกรมสามารถสรุปไดด้ งั น้ี
1. พจิ ารณาปัญหาที่ตอ้ งการแกไ้ ขใหเ้ ป็นวตั ถุตามแนวทางการจาลองแผนภาพดว้ ยคลาส
2. กาหนดแผนภาพออกเป็นสามส่วนคือ ชื่อคลาส แอตทริบิวต์ และเมธอด
3. กาหนดช่ือคลาสให้สอดคลอ้ งกบั คลาส ระบุแอตทริบิวต์และเมธอดโดยคานึงถึงการ
เป็ น public, private หรือ protected นอกจากน้นั ยงั ตอ้ งคานึงถึงพารามิเตอร์ (Parameter) และค่า
รีเทอร์นไทป์ (Return Type)
4. เขียนรายละเอียดท้งั หมดในแต่ละช่องของแผนภาพ

ความสัมพนั ธ์ของคลาสไดอะแกรม

ดงั ท่ีกล่าวแลว้ ในหวั ขอ้ เรื่อง ธิง วา่ ความสัมพนั ธ์ท่ีมีใชใ้ นภาษายเู อม็ แอลไดแ้ ก่ ดีเพนเดนซี
เจนเนอรอลไลเซชนั เรียลไลเซชนั แอสโสสิเอชนั คอมโพสสิชนั และแอคกรีเกชนั ลาดบั ต่อไปน้ี
จะอธิบายในรายละเอียดและแสดงตวั อย่างของความสัมพนั ธ์ดงั กล่าว ในรูปแบบของคลาสที่มี
ลกั ษณะเชิงสมั พนั ธ์ที่ควรจะเป็น ดงั น้ี

ไซมอล เคนดลั (Simol Kendal, 2009, p. 32) กล่าววา่ ชนิดของความสัมพนั ธ์แบ่งไดด้ งั น้ี
ดีเพนเดนซี ซิมเปิ ลแอสโสสิเอชัน (Simple Association) ไบไดเรกชันนอลแอสโสสิเอชัน
(Bidirectional Association) แอคกรีเกชนั และคอมโพสสิชนั ซ่ึงไซมอล ไดแ้ สดงเป็ นแผนภาพแทน
ความสัมพนั ธ์ดว้ ยรูปสี่เหล่ียมและลูกศรไวด้ งั ภาพที่ 2.30

41

ภาพท่ี 2.30 แผนภาพสรุปความสัมพนั ธ์ของไซมอล เคนดลั
ท่ีมา: (Simol Kendal, 2009, p. 33)

ส่วนพนิดา พานิชกุล (2548, หน้า 210) กล่าวว่า องค์ประกอบที่ 2 ของยูเอ็มแอลคือ
ความสัมพนั ธ์ (Relationships) ท่ีทาหนา้ ที่เชื่อมกลุ่มคาต่างๆ ของภาษายเู อม็ แอลเขา้ ดว้ ยกนั ซ่ึงก็คือ
เช่ือมโยงธิงต่างๆ เขา้ ดว้ ยกนั ตามชนิดของความสัมพนั ธ์ของภาษายูเอม็ แอล ซ่ึงมีอยู่ 4 ชนิดคือ ดี
เพนเดนซี แอสโสสิเอชนั เจนเนอรอลไลเซชนั และเรียลไลเซชนั

สารนุกรมออนไลน์วิกิพีเดีย (Wikipedia, 2011 A) กล่าวว่า ความสัมพนั ธ์เป็ นส่ิงที่
ครอบคลุมการกาหนดชนิดของการติดตอ่ เชิงตรรกะท่ีพบบนคลาสและไดอะแกรมของวตั ถุ (Object
Diagram) และความสัมพนั ธ์มีอยู่ 4 ชนิด คือ ดีเพนเดนซี แอสโสสิเอชนั เจนเนอรอลไลเซชนั และ
เรียลไลเซชนั

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

ความสัมพนั ธ์แบบดเี พนเดนซี

ไซมอล เคนดลั (Simol Kendal, 2009, p. 34) กล่าววา่ ดีเพนเดนซี คือ เป็ นความสัมพนั ธ์
แบบไม่จาเพาะเจาะจง (Unspecific relationship) ระหวา่ งคลาส ซ่ึงบางอยา่ งของคลาสท่ีเกี่ยวขอ้ งจะ
ใชท้ รัพยากรบางอยา่ งที่กาหนดไวใ้ นอีกคลาสหน่ึง ดีเพนเดนซีจะลากเส้นจากคลาสท่ีเรียกใชง้ าน
อีกคลาสหน่ึงโดยการผ่านพารามิเตอร์หรืออาจกล่าวอย่างหน่ึงว่าเรียกใช้ตวั แปรเฉพาะที่ (Local
variable) หรือการเรียกใชง้ านเมธอดแบบถาวร (Static) ของอีกคลาสหน่ึง

42

กิติพงษ์ กลมกล่อม (2552, หนา้ 91) กล่าววา่ ดีเพนเดนซีเป็ นความสัมพนั ธ์ระหวา่ งคลาสที่
ไม่สามารถระบุไดด้ ว้ ยเชิงนามธรรม (Abstraction) โดยความสัมพนั ธ์แบบดีเพนเดนซีน้นั หมายถึง
ความสัมพนั ธ์แบบข้ึนต่อกนั การเปล่ียนแปลงต่างๆ ท่ีเกิดข้ึนกบั คลาสขา้ งหน่ึงจะมีผลกระทบต่อ
คลาสหน่ึงเมื่อคลาสท้งั สองข้ึนกบั อีกหน่ึงคลาสในยเู อม็ แอลจะใชส้ ัญลกั ษณ์ท่ีคลา้ ยคลึงกบั แอสโส
สิเอชนั แต่ใชเ้ ส้นที่เป็นเส้นประแทน โดยใชห้ วั ลูกศรช้ีไปยงั คลาสท่ีมีอิทธิพลกบั คลาสอ่ืน

ดงั ความสัมพนั ธ์แบบน้ีเป็นความสมั พนั ธ์เชิงประกอบที่คลาสหน่ึงมีอิทธิพลต่อคลาสหน่ึง
โดยการเรียกใชง้ านอาจเป็นตวั แปรเฉพาะที่หรือใชง้ านตวั แปรแบบถาวร(Static) ในอีกคลาสหน่ึง
ซ่ึงใชส้ าหรับแสดงความสมั พนั ธ์แบบข้ึนต่อกนั และการเรียกใชง้ านแบบการเรียกใชง้ านอีกคลาส
หน่ึง หรือหลายๆ คลาสพร้อมๆ กนั ก็สามารถทาได้ ตวั อยา่ งดงั ภาพที่ 2.31

ภาพท่ี 2.31 แสดงตวั อยา่ งการแสดงความสัมพนั ธ์แบบดีเพนเดนซี

จากภาพที่ 2.31 แสดงใหเ้ ห็นวา่ คลาสหลกั คือคลาส MainProgram โดยมีองคป์ ระกอบเป็ น
เชิงประกอบท่ีเรียกใชง้ านคลาส InputData SaveData และ Report ซ่ึงอธิบายขยายความได้วา่ โดย
ปกติแลว้ การเขียนโปรแกรมจะประกอบดว้ ยแฟ้ มเมนูหลกั ซ่ึงเป็ นส่วนการเชื่อมโยงเพื่อเรียกใชง้ าน
โปรแกรมอื่นๆ เพื่อใช้ในการขับเคลื่อนกระบวนของงาน จากตัวอย่างดังกล่าวน้ี จะมี
โปรแกรมหลกั เรียกใชง้ านโปรแกรมการป้ อนขอ้ มูล บนั ทึกขอ้ มูลและรายงานผล ซ่ึงจะเห็นไดว้ า่
ท้งั หมดน้ีจะเป็นความสมั พนั ธ์แบบดีเพนเดนซีหรือการเรียกใชง้ าน

ความสัมพนั ธ์แบบเจนเนอรอลไลเซชัน

พนิดา พานิชกุล (2548, หนา้ 30) กล่าววา่ เม่ือนาคลาสที่ถูกจาแนกประเภท (Specific) ซ่ึงมี
ลกั ษณะพเิ ศษต่างๆ มารวมกลุ่มเขา้ ดว้ ยกนั จะทาใหเ้ กิดคลาสสามญั เน่ืองจากคลาสที่มีลกั ษณะพิเศษ
ต่างๆ จะมีโครงสร้างพ้ืนฐานเหมือนกนั ถึงแมว้ ่าจะมีลกั ษณะพิเศษแตกต่างกนั ก็ตามกระบวนการ

43

ดงั กล่าวเรียกวา่ เจนเนอรอลไลเชชนั และพนิดา ยงั กล่าวไวใ้ นหนา้ 103 อีกวา่ เป็ นที่ทราบกนั ดีแลว้
วา่ ลกั ษณะโครงสร้าง การรับทอด (Inheritance) จะคลา้ ยกบั ตน้ ไมจ้ าก Superclass ซ่ึงเป็ นคลาสท่ีอยู่
ระดับสูงสุด ระดบั ช้ันถัดมาเป็ น Subclass ท่ีสามารถมี Subclass ได้อีกในระดบั ถดั ไป จาก
โครงสร้างของการรับทอดทาให้ความสัมพนั ธ์ระหว่างคลาสท่ีเรียกว่า เจนเนอรอลไลเซชนั /สเป
เชียลไลเชชนั (Generalization/Specialization)

ดงั น้นั เจนเนอรอลไลเซชนั ใชส้ าหรับแสดงการรับทอดคุณสมบตั ิของคลาส ซ่ึงในภาษา
จาวาน้ันจะสามารถรับทอด (Inheritance) คุณสมบตั ิไดเ้ พียงหน่ึงคลาสเท่าน้ัน ตวั อย่างของการ
ใชง้ านสัญลกั ษณ์ ดงั น้ี

ภาพท่ี 2.32 แสดงการใชง้ านสญั ลกั ษณ์ของการรับทอด
จากภาพที่ 2.32 อธิบายไดว้ า่ คลาส Resume ดา้ นบนมีแอตทริบิวต์ name, surname และ
Age โดยมีเมธอด showName() showSurname() และ showAge() ซ่ึงคุณสมบตั ิดงั กล่าวน้ีจะถูก
ถ่ายทอดมายงั คลาส myResume ท่ีมีเพียงแอตทริบิวต์ address และเมธอด showAddress() เท่าน้นั
แต่ความสัมพนั ธ์แบบน้ีจะทาใหค้ ลาส myResume สามารถมีคุณสมบตั ิ name, surname และ Age
และเมธอดท้งั หมดท่ีมีในคลาส Resume ดว้ ยคุณสมบตั ิของเจนเนอรอลไลเซชนั ซ่ึงในการเขียน
โปรแกรมจะรู้จกั กนั ในการเรียกใช้ extends เป็นตน้
บางคร้ังการใช้งานความสัมพนั ธ์แบบเจนเนอรอลไลเซชนั อาจใช้งานในลกั ษณะของยูส
เคส และการทางานของแอคเตอร์ไดอ้ ีกดว้ ย ยกตวั อยา่ งดงั เช่นภาพท่ี 2.33

44

ภาพท่ี 2.33 แสดงตวั อยา่ งการใชส้ ญั ลกั ษณ์ของการอิมพลีเมนต์

จากภาพที่ 2.33 อธิบายได้ว่า Member ใช้ความสัมพนั ธ์แบบเจนเนอรอลเพ่ือรับทอด
คุณสมบตั ิมาจาก Guest และวงยสู เคส Normal Information และ System Information ต่างใช้
ความสัมพนั ธ์แบบเดียวกนั น้ีเพือ่ รับทอดคุณสมบตั ิในการทางาน

ความสัมพนั ธ์แบบเรียลไลเซชัน

กิติพงษ์ กลมกล่อม (2552, หนา้ 93) กล่าววา่ เรียลไลเซชนั คือความสัมพนั ธ์ระหวา่ งคลาส
ซ่ึงคลาสหน่ึงจะทาหนา้ ท่ีในการดาเนินการตามสิ่งที่ไดป้ ระกาศไวใ้ นอีกคลาสหน่ึง กล่าวคือ ถ้า
คลาส A เรียลไลเซชนั กบั คลาส B ก็ตอ่ เม่ือ คลาส B มีการประกาศเมธอดบางอยา่ งไวไ้ ดใ้ ห้คลาส A
ทาการสืบทอดเมธอดน้นั ของคลาส B ซ่ึงคลาส A จะดาเนินการอธิบายหรืออิมพิลีเมนตร์ ายละเอียด
การดาเนินการของเมธอดในคลาส B เพ่ือใหเ้ มธอดน้นั ทางานไดจ้ ริง

สาหรับไซมอล เคนดลั (Simol Kendol, 2009, p. 36) ไดอ้ ธิบายการเรียลไลเซชนั ไวใ้ นมุม
ของการใชง้ านอินเทอร์เฟส ซ่ึงอินเทอร์คลา้ ยกบั การรับทอดคุณสมบตั ิ (Inheritance) อยา่ งไรก็ตาม
จะเหมือนกันเฉพาะการรับทอดคุณสมบตั ิเท่าน้ัน เมธอดที่ถูกกาหนดโดยอินเทอร์เฟสจะตอ้ ง
ถูกอิมพลีเมนตใ์ นทุกคลาสที่อิมพลีเมนตอ์ ินเทอร์เฟส ซ่ึงสามารถแทนไดด้ ว้ ยการใช้ <<interface>>
ตวั อยา่ งการใชง้ านดงั ภาพที่ 2.34

ภาพท่ี 2.34 แสดงตวั อยา่ งการใชง้ านอินเทอร์เฟสของไซมอล เคนดลั

จากภาพ 2.34 แสดงให้เห็นวา่ ตวั อยา่ งการกาหนดอินเทอร์เฟส SaleableItem ท่ีถูกใชง้ าน
โดยคลาส CashTill และถูกอิมพลีเมนตโ์ ดยคลาส Publication เป็นตน้


Click to View FlipBook Version