บทที่ 1
การเขียนโปรแกรมเชิงวัตถุ
(Object Oriented Programming: OOP)
![]()
หัวข้อ (Topic)
1.1 แนวคิดเกี่ยวกับการโปรแกรมเชิงวัตถุ (OOP Concept)
1.2 ภาษาการเขียนโปรแกรมเชิงวัตถุ (OOP Language)
1.3 ความรู้เบื้องต้นเกี่ยวกับจาวา (Introduction to Java Programming)
วัตถุประสงค์การเรียนรู้
(Learning
Objective)
1.
อธิบายหลักการเขียนโปรแกรมเชิงวัตถุได้
2. เปรียบเทียบภาษาในการเขียนโปรแกรมเชิงวัตถุกับภาษาเขียนโปรแกรมแบบโครงสร้างได้
3. ประเมินข้อดีและข้อจำกัดของภาษา Java
ได้
ในปัจจุบันภาษาในการเขียนโปรแกรมเพื่อพัฒนาระบบสารสนเทศที่ใช้ในองค์กรธุรกิจ
มีมากมายหลายภาษาให้เลือก
การเรียนรู้ภาษาเขียนโปรแกรมหรือการมีความรู้ในหลาย ๆ
ภาษาถือเป็นสิ่งที่ดี
แต่ไม่ได้หมายความว่าเราจำเป็นต้องเขียนโปรแกรมให้ได้ทุก ๆ ภาษา
แต่สามารถเลือกบางภาษาที่เรามีความถนัดหรือเลือกที่จะเริ่มต้นกับภาษาใด
ภาษาหนึ่งได้ ซึ่งการเขียนโปรแกรมเชิงวัตถุถือได้ว่าได้รับความนิยมในปัจจุบันรวมถึงแนวโน้มในอนาคต ซึ่ง Java
ก็เป็นหนึ่งในการเขียนโปรแกรมเชิงวัตถุ ที่มีพื้นฐานมาจากภาษา C และคิดว่าน่าจะเป็นอีกภาษาหนึ่งที่น่าศึกษาและน่าเรียนรู้
เพราะเทคโนโลยีของ Java ถือว่ากำลังร้อนแรงในแวดวงของ Software
ดังนั้นในบทแรกนี้จึงขอแนะนำแนวคิดเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ
และความรู้เบื้องต้นเกี่ยวกับภาษา Java
เพื่อเป็นการปรับพื้นฐานของท่านผู้อ่านให้มีความเข้าใจ ก่อนเริ่มลงเมือเขียนโปรแกรมในบทต่อไป
1.1
แนวคิดเกี่ยวกับการโปรแกรมเชิงวัตถุ
(OOP Concept)
เพราะเหตุใดในปัจจุบันการเขียนโปรแกรมเชิงวัตถุ
จึงเข้ามาแทนที่รูปแบบการเขียนโปรแกรมแบบเดิม ๆ
การเขียนโปรแกรมในรูปแบบเดิมมีจุดบกพร่องอย่างไร และแบบใหม่สามารถแก้ไขจุดบกพร่องเหล่านั้นได้หรือไม่ เรามาดูความแตกต่างระหว่างการเขียนโปรแกรมภาษารูปแบบเดิม
กับรูปแบบใหม่กัน
แนวคิดการโปรแกรมแบบโครงสร้าง (Structure programming)
แนวคิดแบบโครงสร้าง (Structure programming) หรือแบบกระบวนการ (Procedure programming) จัดเป็นการเขียนโปรแกรมในรูปแบบเดิม
ๆ ซึ่งจุดประสงค์หลักในการเขียนโปรแกรมพัฒนาระบบงานสารสนเทศขึ้นมาใช้งานนั้นก็เพื่อ ให้เครื่องคอมพิวเตอร์สามารถประมวลผลและวิเคราะห์ข้อมูล แก้ปัญหาบางอย่างแทนมนุษย์ ดังนั้น Concept หรือวิธีการในการคิดสำหรับแก้ปัญหาของมนุษย์
ก็ถูกนำมาประยุกต์ใช้กับคอมพิวเตอร์
วิธีการก็คือ ชุดคำสั่งของโปรแกรมที่เขียนขึ้นที่ใช้แก้ปัญหา จะแยกปัญหาใหญ่ ๆ ออกเป็นส่วนย่อย ๆ แล้วค่อยแก้ไขไปทีละส่วนจนกว่าจะได้ผลลัพธ์ที่ต้องการ
ซึ่งประยุกต์มาจากวิธีคิดของมนุษย์นั่นเอง เช่น เราต้องแก้ปัญหาโจทย์คณิตศาสตร์ 200*3/6-100 ถ้ามนุษย์คิดโดยไม่ใช้เครื่องคำนวณ
เราก็จะแยกคำนวณประโยคคณิตศาสตร์นี้ทีละส่วน
โดยเราจะคำนวณตามลำดับความสำคัญของเครื่องหมายก่อน คือ ((200*3)/6)-100) โดยจะคำนวณส่วนที่อยู่ในวงเล็บตัวในสุดก่อน
ตามลำดับความสำคัญของเครื่องหมาย
ดังนั้นถ้าเราต้องการเขียนโปรแกรมเพื่อแก้โจทย์คณิตศาสตร์ วิธีการคิดเพื่อให้ได้คำตอบมานั้น
หลักการก็จะไม่ต่างกับมนุษย์คิดเลย
หากเป็นระบบสารสนเทศ เช่น
ระบบงานฝ่ายทรัพยากรบุคคลทั้งระบบ ในระบบนี้จะประกอบไปด้วยส่วนงานย่อย ๆ เช่น งานฝึกอบรม งานข้อมูลบุคคลากร งานประเมินผลบุคคลากร การเขียนโปรแกรมก็จะแยกเป็นงานออกเป็น
Function ย่อย ๆ ก่อน เพื่อให้ Function นั้นทำงานตามแต่ละหน้าที่ภายใน หลาย ๆ Function รวมกันก็จะเป็นระบบใหญ่
แนวคิดนี้มีข้อเสียอย่างไร?
ถ้าขนาดของโปรแกรม (Size)
ไม่ใหญ่มาก ความซับซ้อนของ Code จะน้อย
ไม่ก่อให้เกิดปัญหาและไม่ยุ่งยากในการที่จะพัฒนาโปรแกรมด้วยวิธีนี้ แต่หาก Size ของโปรแกรมโตขึ้น
จะทำให้มีความซับซ้อนในแง่ของการโปรแกรม
อีกทั้งยังพบปัญหาในเรื่องของการนำกับมาใช้ใหม่ (Reuseable)
การแก้ไข(Modify)
การขยายเพื่อเพิ่มประสิทธิภาพให้กับโปรแกรม อีกทั้งส่งผลกับปัญหาในระยะยาวอีกด้วย
แนวคิดเชิงวัตถุ (Object)
เป็นแนวคิดรูปแบบใหม่ที่นำมาใช้กันในปัจจุบัน
เพื่อแก้ปัญหาดังกล่าวของการเขียนโปรแกรมแบบ Structure ถึงแม้รูปแบบการเขียนจะค่อนข้างยากและมีความซับซ้อน
แต่จะส่งผลดีต่อการแก้ไขโปรแกรมในระยะยาว ซึ่งแนวคิดนี้จะแยกปัญหา หรือแยกระบบงานออกเป็นส่วนย่อยเช่นกัน
เพื่อลดความซับซ้อนให้น้อยลง ส่วนย่อยหรือโปรแกรมย่อยที่ว่า เรียกว่า Class ซึ่งภาย Class จะสร้างตัวแทนขึ้นมาทำงานแทนตนเอง เรียกว่า Object ตัว Object นี้เองจะเป็นตัวที่เก็บข้อมูลต่าง
ๆ รวมกันเอาไว้ให้เป็นวัตถุชิ้นเดียวกัน
เพื่อให้ง่ายต่อการเรียกใช้งาน
ง่ายต่อการแก้ไข (Modify) และง่ายต่อการนำกับมาใช้ใหม่
(Reuse) ของระบบในอนาคต
แนวคิดนี้มีข้อเสียอย่างไร?
สำหรับบางภาษาที่ใช้ในการพัฒนาโปรแกรมเชิงวัตถุ
อาจจำเป็นต้องประยุกต์ใช้กับฐานข้อมูลเชิงวัตถุซึ่งมีลักษณะที่แตกต่างไปจากฐานข้อมูลเชิงสัมพันธ์
อาจมีความยุ่งยากบ้างในการพัฒนาระบบและยังขาดแคลน Programmer
ความหมายการโปรแกรมเชิงวัตถุ
(Object Oriented
Programming)
การโปรแกรมเชิงวัตถุ (Object Oriented Programming) หรือเรียกสั้น
ๆ ว่า OOP เป็นวิธีการเขียนโปรแกรมโดยมองสิ่งต่างๆ ในระบบ
เช่น ตัวอักษร, รูปภาพ, หน้าต่าง,
แบบฟอร์ม ฯลฯ เป็นวัตถุหนึ่งชิ้น
อ็อบเจ็กต์ (Object)
จัดเป็นตัวแปรชนิดหนึ่งของ Class ใช้
Object
ในการเข้าถึงและจัดเก็บ
ข้อมูลต่างๆ ภายใน Class เช่น Class ของปุ่มคำสั่งภายใน
Form อาจประกอบไปด้วย
Object : Add, Save, Delete, Find และ Close เป็นต้น
หลักการสำคัญของการโปรแกรมเชิงวัตถุ
การเขียนโปรแกรมแบบ OOP จะเน้นที่ Object & Class นั่นก็หมายความว่า
พยายามมองทุกสิ่งทุกอย่างในมุมของการโปรแกรมให้เป็น Object ซึ่ง
Object เป็นสมาชิกของ Class แต่นอกเหนือจากนี้ OOP ยังมีหลักการและความสามารถในเรื่องต่อไปนี้
วัตถุ (Object)
คือ
การมองภาพสิ่งต่าง ๆ
เป็นวัตถุเป้าหมาย ภายใน Object ประกอบด้วย Properties (คุณสมบัติของ
Object) กับ Behavior (พฤติกรรมการตอบสนองต่อเหตุการณ์ :Event ต่าง ๆ ของ Object)
- ตัวอย่างของ Object ในโลกแห่งความเป็นจริง เช่น
Object : มนุษย์ ประกอบด้วยคุณสมบัติ (Properties)
สีผม ,
สีผิว ,ความสูง, สัดส่วน
เป็นต้น และมีพฤติกรรมการตอบสนองต่อเหตุการณ์ (Behavior)
เช่น
ตอบสนองต่อการถูกชกต่อย
ตอบสนองต่อเหตุการณ์ถูกไล่ล่า
เป็นต้น
Object : จักรยาน ประกอบด้วยคุณสมบัติ (Properties) สีรถ , ขนาด ,รุ่น, ประเภท
เป็นต้น
และมีพฤติกรรมการตอบสนองต่อเหตุการณ์ (Behavior) เช่น ตอบสนองต่อการปันจักรยาน ตอบสนองต่อเหตุการณ์เบรก เป็นต้น
- ตัวอย่างของ
Object ในมุมมองทางด้านโปรแกรม
Object : ปุ่ม ประกอบด้วยคุณสมบัติ (Properties) ข้อความบนปุ่ม ,
ขนาดของปุ่ม
,สีของปุ่ม,
Stye ของปุ่ม เป็นต้น
และมีพฤติกรรมการตอบสนองต่อเหตุการณ์ (Behavior) เช่น ตอบสนองต่อการถูก Click เป็นต้น
คุณสมบัติ
(properties )
คือ คุณสมบัติหรือคุณลักษณะของ Object ที่ได้กล่าวมาในข้างต้น
พฤติกรรม
(Behavior)
คือ เหตุการณ์
(Event) ที่ทำให้
Object
แสดงพฤติกรรมต่าง ๆ เช่น เหตุการณ์ของปุ่ม Add เมื่อถูก Click จะแสดงพฤติกรรมคือ สั่งให้ Text
ว่างเพื่อให้ผู้ใช้สามารถป้อนข้อมูล Record ใหม่ได้
คลาส
(Class)
คือ เป็นต้นแบบหรือแม่พิมพ์ ที่ใช้ในการผนวกหลาย ๆ Object เข้าด้วยกัน โดยจัดกลุ่ม Object ที่มีความคล้ายคลึงกันอยู่ใน
Class เดียวกัน
- ตัวอย่างของ
Class ในโลกแห่งความเป็นจริง เช่น
Class: มวยสากล
ประกอบด้วย

จะเห็นได้ว่าแต่ละ Object จะมี Properties และ Behavior ที่แตกต่างกัน เช่น
Object สมรักษ์ มีลักษณะตัวสูง พูดจาโอ้อวดนิด ๆ มีพฤติกรรมในการชกที่สามารถออกหมัดได้เร็ว
และแม่นยำ ซึ่ง Properties และ Behavior นี้ก็จะมีลักษณะที่แตกต่างไปจาก
Object สามารถ

Note: การสร้าง Class ก็เช่นเดียวกับการจัดกลุ่มข้อมูล เราจะไม่นำ Object ของมวยไทย เข้ามาปะปนกับ Object ของมวลสากล เพราะทำงานคนละลักษณะกัน
·
ตัวอย่างของ Class
ในมุมมองทางด้านโปรแกรม
Class:
ปุ่มคำสั่ง ประกอบด้วย

Object
![]()
ตัวดำเนินการ (Operation)
หรือความหมายเดียวกับ Method นั่นเอง เป็นวิธีการในการควบคุมหรือสั่งงาน Behavior
ให้ Object นั้นตอบสองต่อเหตุการณ์หรือคำสั่งตามที่เราต้องการ
อินสแตนซ์
(Instance)
คือ Object ที่ใช้งานจริง ๆ ซึ่งถูกสร้างขึ้นใน Class
นั้น ๆ เช่น Object ที่ถูกสร้าง (Instantiated)
จาก Class A ก็จะเป็น Instance ของ class A
การห่อหุ้มข้อมูล
(Encapsulation)
คือการรวมข้อมูล และ ฟังก์ชัน เข้าไว้ใน Object ตัวเดียว
และสามารถปกป้องไม่ให้คนนอก ซึ่งหมายถึง Object อื่นๆ เข้าถึงได้ สามารถ "ห่อหุ้มข้อมูล" ภายใน Class โดยระบุ Keyword ด้วยคำว่า private นำหน้า Class นั้น ๆ
การสืบทอด
(Inheritance)
คือ
Class แม่ (Super Class) สามารถสืบทอดข้อมูลไปยัง Class ลูก (Sub
Class) ได้ ซึ่ง Class ลูกจะรับคุณสมบัติทุกอย่างมาจาก
Class แม่ และสามารถเพิ่มเติมคุณสมบัติใหม่เฉพาะตัวของตนเองเข้าไป
การสืบทอดจะทำได้โดยระบุ
Keyword ด้วยคำว่า protecte นำหน้า Class
นั้น ๆ
ตัวอย่างเช่น
คุณสมบัติเฉพาะที่มีอยู่ใน Class แม่
![]()

Sub Class
คุณสมบัติเฉพาะตัวที่ Class ลูกเพิ่มเติมให้กับตัวเอง
Class แม่ สามารถสืบทอดคุณสมบัติของตัวเอง
(Inheritance) ที่มีอยู่ไปให้กับ Class ลูก ดังนั้น Class ลูก
จึงสามารถรับทุกอย่าง (Derive) มาจาก Class แม่ ได้
การเปลี่ยนรูป (Polymorphism)
คือ ความสามารถในการเขียนโปรแกรมให้
Method ใด
ๆ ของ Object ที่เราสืบทอดมาจาก คลาสแม่ นั้นสามารถทำงานแตกต่างไปจาก
Object ใน คลาสแม่
เรียกได้ว่าเป็นการเปลี่ยนรูปร่างของ Object หนึ่ง ๆ ตัวอย่างเช่น คลาส Rectangle และคลาส Circle
สืบทอดคุณสมบัติในการวาดรูปมาจาก (Derived) คลาส Poligon โดยทั้งสองคลาสนี้สามารถเพิ่มเติมคุณลักษณะเฉพาะของตนเองเข้าไป นั่นก็คือ Operation (Method)
draw() ที่ใช้ในการวาดรูป แต่แมื่อ 2 คลาสนี้เรียกใช้ draw()
แล้ว จะทำงานจะได้ผลลัพธ์แตกต่างกัน
ลายเซ็น (Signature)
ประกอบด้วยชื่อของ Operation(Method), ตัวแปร
Parameter, Data Type คล้ายกับรูปแบบประโยคการสร้าง
Operation (method) เช่น
Boolean Soperation(int sa)
การสื่อสารระหว่างวัตถุ
(Message Passing)
เป็นการสั่งงาน (ส่งข้อมูล : Message) ไปยังวัตถุให้แสดงพฤติกรรมต่าง ๆ ซึ่งใน Message จะประกอบด้วย
ชื่อ Operation , ค่า Parameter ในการรับส่งค่า
ซึ่งการส่ง Message ไปยัง Object ก็จะเป็น
การเรียกใช้งาน
(Call) Object หรือ Method นั่นเอง
ความสัมพันธ์ระหว่าง
Class (Relationship)
คือ ความสัมพันธ์ระหว่าง Class ที่ทำงานร่วมกัน
สามารถจำแนกได้ดังนี้
- ความสัมพันธ์แบบพึ่งพา
( Dependency) เช่น
Class ลูกค้า กับ Class ขายสินค้า กล่าวได้ว่า Class ขายสินค้า ขึ้นอยู่กับ Class
ลูกค้า เพราะ เมื่อลูกค้ามีการเปลี่ยนแปลงคำสั่งซื้อ หรือคำสั่งผลิต รายการขายก็จะต้องถูกเปลี่ยนแปลง (Update)
ตามลูกค้า
-
ความสัมพันธ์แบบสืบทอดคุณสมบัติ (Inheritance) เช่น Class แม่ (super class) สืบทอดคุณลักษณะเฉพาะที่ตนมีอยู่ไปยัง Class ลูก
(sub class)
-
ความสัมพันธ์แบบร่วมกัน (Association) คือ
ความสัมพันธ์ที่เกี่ยวเนื่องมีความสัมพันธ์ซึ่งกันและกัน เช่น Class นักเรียน สัมพันธ์กับ Class รายวิชา ในเรื่องของการลงทะเบียนเรียน
จากเนื้อหาในข้างต้น
ผู้อ่านได้ทราบถึง Concept
หลัก ๆ ของการเขียนโปรแกรมเชิงวัตถุ ซึ่งก่อนที่เริ่มเขียนโปรแกรมเพื่อพัฒนาระบบงานใดระบบงานหนึ่งขึ้นมานั้น
จำเป็นจะต้องเข้าพื้นฐานของการออกแบบโปรแกรมเชิงวัตถุด้วย เพราะการเริ่มเขียนโปรแกรมทันที
โดยปราศจากการออกแบบ จะไม่สามารถทำได้
ดังนั้นเมื่อแนวคิดของการเขียนโปรแกรมได้เปลี่ยนจากแบบโครงสร้าง กลายมาเป็นแนวคิดเชิงวัตถุ การออกแบบก็ถูกปรับเปลี่ยนไปด้วย ผู้เขียนจึงขอแนะนำวิธีในการออกแบบเชิงวัตถุ
ดังต่อไปนี้
บุคคลที่เกี่ยวข้องต่อการออกแบบเชิงวัตถุ
บุคคลที่เป็นผู้คิดค้นแนวทางหรือวิธีในการออกแบบเชิงวัตถุ
ได้แก่
1.
Grady
Booch ได้ใช้แนวคิดโดยแยกกระบวนการวิเคราะห์ออกเป็น 2 มุมมอง คือ
-
Micro
development View คือ มองสิ่งที่เกี่ยวข้องกับงานประจำวัน
-
Macro
development View คือ มองเกี่ยวกับวิธีการควบคุม Micro
ข้อเสียของวิธีนี้คือ
ใช้สัญลักษณ์ภาพในการออกแบบระบบมากเกินความจำเป็น
ไม่เหมาะกับการออกแบบด้วยระบบ
Manual ต้องใช้
Tools เฉพาะช่วย
2.
James
Raumbaugh ได้พัฒนาวิธีออกแบบเชิงวัตถุที่เรียกว่า
Object Modeling Technique (OMT) โดย
-
เน้นความต้องการของระบบเป็นสำคัญ
-
ใช้
Model ประเภทต่าง
ๆ ในการบรรยายลักษณะของระบบ เช่น Object model,
Dynamic
model และ
Functional model
3.
lvar Jacobson ได้พัฒนาวิธีที่มีชื่อว่า Object-Oriented
Software Engineering (OOSE) ซึ่ง
วิธีนี้ ใช้ Use-case เป็นหลัก (Use-case Driven
Development)
ในการกำหนดความต้องการของผู้ใช้
(user) ที่จะใช้งานระบบ โดย Jacobson นั้นได้พัฒนาหลากหลาย Model ในการบรรยายคุณลักษณะของระบบ
เช่น Use-case Model , Domain Object Model , Analysis
Object Model , Implementation Model และ Test Model
กระบวนการในการพัฒนาระบบ
(The SDLC Process)
วัฎจักรในการพัฒนาระบบสารสนเทศ ไม่ว่าคุณจะเลือกใช้วิธีการออกแบบโดยวิธีดั้งเดิม
เช่น การวาด Context
Diagram แล้วค่อยไปแตกย่อยเป็น
Data Flow Diagram หรือเลือกใช้วิธีการออกแบบเชิงวัตถุ ก็ล้วนแล้วแต่ต้องทำงานภายใต้กระบวนการของ
SDLC (System Development
Life Cycle) ซึ่งเป็นกระบวนการพื้นฐาน แต่ก็ไม่เสมอไป เพราะคุณสามารถเลือกวิธีอื่นที่แตกต่างไปจาก
SDLC ได้ แสดงภาพตัวอย่างของ
SDLC ดังรูปที่ 1.1
![]()

รูปที่ 1.1 วัฎจักรการพัฒนาระบบ (SDLC)
ที่มา :Alan Dennis,Barbara Haley Wixom and
Tegarden : [12]
Note: ตัวเลขเปอร์เซ็นต์(%)
หมายถึงระยะเวลาที่ใช้ในแต่ละ
Phase
การออกแบบเชิงวัตถุ
ปัจจุบันมีภาษาเฉพาะด้านที่ใช้ในการออกแบบเชิงวัตถุ
ซึ่งขอแนะนำให้รู้จักกับภาษาที่ได้รับ
ความนิยม
ดังนี้
UML
(Unified Modeling Language)
เป็นภาษาสัญลักษณ์รูปภาพมาตรฐาน (Standard Modeling Language) ที่ใช้สำหรับสร้าง Model เชิงวัตถุ
UML
พัฒนาเมื่อปี 1994 โดยบริษัท Rational Software จากบุคคลที่มีชื่อว่า Grady Booch และ James
Rumbaugh โดยนำวิธีการพัฒนาของ
lvar Jacobson, Grady Booch และ James Rumbaugh มารวมเข้าด้วยกันเป็นวิธีที่เรียกว่า UML เพื่อเป็นการปรับปรุงให้กลายเป็นภาษาในการออกแบบเชิงวัตถุที่มีประสิทธิภาพ
ในปี 1995 Ivar
Jacobson ได้สร้าง Model
ที่สมบูรณ์แบบ
ดังนั้นวัตถุประสงค์หลักของภาษา UML จึงเป็นการลดความแตกต่างของการออกแบบเชิงวัตถุของแต่ละบุคคล เพื่อให้สามารถใช้ Model เพื่อทำงานร่วมกันได้
ข้อดีของ
UML
1.
เป็นภาษารูปภาพมาตรฐาน
(Standard Visual Modeling Language)
2. Support หลักการเชิงวัตถุ
3. ไม่ผูกติดกับภาษาเขียนโปรแกรม ภาษาใดภาษาหนึ่ง
4.
ง่ายต่อการศึกษาและทำความเข้าใจ
5. เมื่ออกแบบแล้วสามารถ Generate
Code ได้
6. ง่ายต่อการขยาย
และปรับปรุงระบบ
7. สามารถบันทึกความคิดเห็นของ Developer ลงไปได้
องค์ประกอบหลักของ
UML
1. สัญลักษณ์ที่ใช้ในการวาด Diagram
2. ความสัมพันธ์ (Relationship)
3. Diagram ชนิดต่าง ๆ 7 ชนิด ได้แก่
-
Use-Case diagram
- Class diagram
- Activity diagram
- Statechart diagram
- Collaboration diagram
- Sequence diagram
- Deployment diagram
แสดงตัวอย่างของ
Diagram แต่ละชนิด
ดังต่อไปนี้
Use-case
diagram
ใช้เพื่อสร้าง Model ในการกำหนดความต้องการของ User และใช้บรรยายความสามารถของระบบ
ในการสร้าง Use-Case diagram นั้นจะต้องรู้ว่า ระบบสามารถทำอะไรได้บ้าง? โดยยังไม่ต้องสนใจวิธีการ
หรือกลไกในการทำงาน
สัญลักษณ์ที่ใช้ในการวาด Use-Case Diagram

รูปที่ 1.2 Syntax for
Use-Case Diagram
ที่มา :Alan Dennis,Barbara Haley Wixom and
Tegarden ; [160]
ตัวอย่างของ Use-Case
Diagram
1. Use-Case Diagram สำหรับระบบจัดทำใบนัดหมาย (Appointment
System)

รูปที่ 1.3 (A)
2. Use-Case
Diagram กับแอคเตอร์แบบพิเศษ (Specialized
Actor)

รูปที่ 1.3 (B)
3. การแสดงความสัมพันธ์แบบ Extend และ
Include

รูปที่ 1.3 (C)
ที่มา :Alan Dennis,Barbara Haley Wixom and Tegarden ; [163]
Class
diagram
เป็น
Diagram ที่สร้างขึ้นเพื่อแสดงให้เห็นถึงการใช้งาน
Class และ Object ตลอดจนแสดงความสัมพันธ์ระหว่าง Class กับ Object และการสืบทอด Class
วัตถุประสงค์หลักของการสร้าง
Class diagram เพื่อแสดงถึงโครงสร้างของระบบที่ประกอบด้วย Class ต่าง
ๆ และความสัมพันธ์ระหว่าง Class
Class
diagram จะใช้เป็น diagram
หลักเพื่อนำไปขยายในการสร้าง Diagram อื่น ๆ
องค์ประกอบของ
Class Diagram

ตารางที่ 1.1 Class Diagram Syntax
ตัวอย่างของ
Class Diagram ของระบบการรักษาคนไข้

รูปที่ 1.4 Example Class Diagram
ที่มา :Alan Dennis,Barbara Haley Wixom and Tegarden ; [194]
Activity
diagram
จะแสดงขั้นตอนการทำงานของ
Use-Case เช่นเดียวกับ
Sequence diagram และ Collaboration Diagram แต่จะเน้นงานย่อยของ Object จึงเหมาะกับการนำไปเขียน Module ในเชิงธุรกิจ
(ฺBusiness Process) ใช้ประโยชน์เช่นเดียวกับ Flowchart
* คล้าย state chart แต่ไม่มีจุดจบ
Sequence
diagram
ใช้เพื่อบรรยายการทำงานระหว่าง Object ย่อยแต่ละ Object ของทุก ๆ Use-Case ที่อยู่ภายใน Use-Case Diagram
องค์ประกอบของ Sequence Diagram

ตารางที่ 1.2 Sequence Diagram Syntax
ตัวอย่าง Sequence Diagram
ของระบบจัดทำใบนัดหมาย

รูปที่ 1.5 Example Sequence Diagram
ที่มา :Alan Dennis,Barbara Haley Wixom and Tegarden ; [218]
Collaboration
diagram
จะคล้ายกับ Sequence
diagram
แต่ไม่ต้องแสดงเกี่ยวกับเวลา ดังนั้นแกนเวลาในแนว Column จะหายไป
องค์ประกอบของ
Collaboration Diagram

ตารางที่ 1.3 Collaboration
Diagram Syntax
ตัวอย่าง Collaboration Diagram ของระบบจัดทำใบนัดหมาย

รูปที่ 1.6 Example Collaboration Diagram
ที่มา :Alan Dennis,Barbara Haley Wixom and Tegarden ; [222]
Statechart
diagram
ใช้เพื่อแสดงการเปลี่ยนแปลงสถานะต่าง
ๆ ของ Object แต่ละตัว
องค์ประกอบของ
Statechart
Diagram

ตารางที่ 1.4 Statechart Diagram Syntax
ตัวอย่าง Statechart Diagram
ของการเข้ารับการรักษาในโรงพยาบาล

รูปที่ 1.7 Example
Statechart Diagram
ที่มา :Alan Dennis,Barbara Haley Wixom and Tegarden ; [230]
Deployment
diagram
ใช้ออกแบบ
Diagram ที่เกี่ยวข้องกับ
Hardware หรือทางด้านสถาปัตยกรรมของระบบ
ทั้งด้านโครงสร้างและด้านของ Network Topology
1.2
ภาษาการเขียนโปรแกรมเชิงวัตถุ (OOP Language)
ตัวอย่างของภาษาเขียนโปรแกรมแบบโครงสร้าง (Structure) เช่น ภาษา C, Pascal
,Basic, Fortan, Cobol, Foxpro และ Dbase ส่วนตัวอย่างของภาษาเขียนโปรแกรมเชิงวัตถุ
(Object) เช่น C++, Java , C#, Visual C++, VB,
ดังนั้นการเขียนโปรแกรมในรูปแบบดั้งเดิมเช่นภาษา C, Pascal หรือ Cobol ซึ่ง จัดเป็นการเขียนโปรแกรมแบบโครงสร้าง
จะส่งผลในระยะยาว และทำให้ยากต่อการดัดแปลงแก้ไขโค้ดของโปรแกรม ดังนั้นการเขียนโปรแกรมเชิงวัตถุ จึงเป็นแนวทางการออกแบบโปรแกรมในรูปแบบใหม่
มีวัตถุประสงค์เพื่อลดความซ้ำซ้อนในการเขียนโปรแกรม และหัวใจสำคัญการของโปรแกรมแบบ
OOP คือ การ Reuseable
นั่นหมายความว่า
หากภายภาคหน้ามีการพัฒนาเพื่อขยายขีดความสามารถของโปรแกรมเพิ่มเติม Programmer ไม่จำเป็นต้องเขียนโปรแกรมใหม่ทั้งหมด Object หรือ Class
ใดที่ดีอยู่แล้วก็คงไว้ และก็ทำการขยาย Class หรือ
Object ใหม่ที่ต้องการเพิ่มเติมได้ โดยไม่ต้องยุ่งเกี่ยวกับ Source
code ของโปรแกรมเก่าทั้งหมด
1.3
ความรู้เบื้องต้นเกี่ยวกับจาวา (Introduction to Java Programming)
นอกจาก
Software ในค่ายของ
Microsoft แล้วยังมี Product นอกค่ายที่เป็นคู่แข่งที่น่ากลัวของ
Microsoft อาทิเช่น ภาษาเชิงวัตถุอย่าง Java ซึ่งโปรแกรมภาษา Java มีที่มาดังนี้
ประวัติความเป็นมาของ
Java
พัฒนาโดยบริษัท Sun Microsystem เป็น Open source โดยมีวิวัฒนาการมาจากภาษา C และ C++ กล่าวได้ว่าเป็นภาษาหนึ่งที่ได้รับความนิยมอย่างรวดเร็วมีประสิทธิภาพและทรงพลัง
(Powerful) ซึ่งในปี ค.ศ
1972 พัฒนาภาษา C (พัฒนามาจากภาษา B) โดย Dennis Ritchie
at
Laboratories
1980 พัฒนาภาษา C++ (พัฒนาจากภาษา C) โดย Bjarne Stroustrup at
Laboratories
1995 พัฒนาภาษา Java โดยเปลี่ยนชื่อมาจาก "Oak"
![]()
Note:
อ่านรายละเอียดเพิ่มเติมที่ www.java.sun.com และ www.deitel.com
ภาษา
Java มีความสามารถในการจัดการหน่วยความจำได้ดี
สามารถทำงานได้กับเทคโนโลยีหน่วยความจำที่มีความจุขนาดเล็ก
อีกทั้งยังรองรับการเชื่อมโยงกับ Internet และ Support
หลักการทำงานแบบ OOP
อีกด้วย
Java Technology เป็นภาษาเขียนโปรแกรมที่ทำงานได้กับทุก
ๆ Platform และ Java จัดเป็นภาษาระดับสูง (high-level
language )
ซึ่งมีคุณลักษณะพิเศษ ดังนี้
|
- ง่าย (Simple) ต่อการนำ Code กลับมาใช้ใหม่ |
- ใช้ได้กับทุกสถาปัตยกรรม
(Architecture neutral) คอมพิวเตอร์ |
|
- เป็นการโปรแกรมเชิงวัตถุ
(Object oriented) |
- เคลื่อนย้ายโปรแกรมได้สะดวก
(Portable) |
|
- สามารถเผยแพร่ได้ (Distributed) Code ได้ |
- มีประสิทธิภาพสูง (High
performance) |
|
- สามารถทำงานได้หลาย ๆ งาน
(Multithreaded) |
- มีความแข็งแรง (Robust) และมั่นคง (Secure) สูง |
ตารางที่ 1.5
คุณลักษณะพิเศษของ Java Technology
โครงสร้างด้านการ
Compile โปรแกรมภาษา Java
ในภาษา Java
โปรแกรมที่เราพิมพ์เรียกว่า Source code ซึ่งเรา Save จะมีส่วนขยายหรือนามสกุล เป็น (.java) เมื่อผ่านการ Compile จะได้
File ที่มีส่วนขยายเป็น (.class) ซึ่งตัว
Compiler ของ Java จะมีชื่อว่า (javac) และใน (.class) จะเก็บข้อมูลในลักษณะของ Bytecode ซึ่งถูกสร้างด้วยกระบวนการของ
Java Virtual Machine (JVM) แสดงให้เห็นภาพตัวอย่างของการ Compile
ดังรูปที่ 1.8

JVM
![]()

Javac.exe Java.exe
![]()
รูปที่
1.8 โครงสร้างการ Compile
ที่มา : http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html
Java Virtual Machine (JVM) สามารถทำงานบนระบบปฏิบัติการที่แตกต่าง
ดังนั้น
ไฟล์ (.class
) จึงสามารถที่จะ Run
บนระบบปฏิบัติการ Microsoft Windows, Solaris , Linux, หรือแม้แต่ MacOS

Note : ครั้งแรกภาษา Java
ได้เริ่มพัฒนาใช้งานกับระบบ Solaris และได้ขยายนำไปใช้กับระบบ
Windows และระบบ Linux ตามลำดับ
จากโครงสร้างการ Compile โปรแกรมของภาษา Java มาพิจารณาการแปลโปรแกรมในระดับ
Compiler กับ Interpreter
เพื่อความชัดเจนอีกครั้ง ในรูปที่ 1.9

รูปที่
1.9 โครงสร้างการ Compiler และ Interpreter
ที่มา :
http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html
Java
Compiler
จะทำหน้าที่ในการแปลงชุดคำสั่ง
Text file หรือ
Source file ที่มีส่วนขยายเป็น (.java) ให้เป็นภาษาเครื่อง และใช้ JVM เป็นตัวดำเนินการเพื่อให้สามารถนำไปใช้กับทุก
ๆ Platform
(ทุก
ๆ ระบบปฏิบัติการ) ได้
Java Compiler


![]()
Java
Interpreter
ทำการแปลงชุดคำสั่งของ
JVM ให้ออกมากเป็นผลลัพธ์ของโปรแกรม (Output)
JVM Java Interpreter Output
![]()
![]()
จาวาและมัลติแพล็ตฟอร์ม
(Java and Multi-Platform)
Platform หมายถึง สภาพแวดล้อมทาง Hardware หรือ Software ในขณะที่ Run Program ซึ่ง Platform
ส่วนใหญ่ที่ได้รับความนิยมได้แก่ Platform บนระบบปฏิบัติการ Microsoft Windows, Linux, Solaris OS, และ MacOS และ Platform ส่วนใหญ่จะสามารถทำงานร่วมกันได้ภายใต้มาตรฐานของระบบปฏิบัติการเดียวกันแต่
Java Platform มีความแตกต่างไปจาก Platform อื่น ๆ นั่นก็คือสามารถ Run
ได้ทุก ๆ ระบบปฏิบัติการโดยไม่ยึดติดอยู่กับระบบปฏิบัติการและ Hardware
ด้วยเหตุนี้ทำให้ภาษา Java เป็นภาษาที่ได้รับความนิยมอย่างรวดเร็ว
Java Platform มี 2 องค์ประกอบ ได้แก่
- Java Virtual Machine (JVM)
Application
Programming Interface (API)
Java
Virtual Machine (JVM)
เป็นตัวกลางที่ภาษาจาวานำมาใช้เพื่อทำการแปลโปรแกรมแล้วส่งต่อไปให้ระบบปฏิบัติการจากนั้นก็จะทำแปลงคลาสให้เป็นภาษาเครื่องและทำงานต่อไป
โดยโปรแกรมภาษาจาวาทุกตัวจะต้องทำงานอยู่ในภายใต้ Java Virtual Machine (JVM) ซึ่งมีอยู่ในตัวไม่ว่าจะเป็น Applet servlet และอื่น
ๆ นอกจากนี้แล้ว JVM ยังมีหน้าที่ความรับผิดชอบเตรียมความพร้อมสำหรับความปลอดภัยอีกด้วย
Application Programming Interface (API)
API จะรวบรวม Components
สำหรับสร้างส่วนติดต่อกับผู้ใช้ ที่เรียกว่า Graphical
User Interface (GUI) ซึ่ง
API เป็นกลุ่มของ Libraries ที่มีความสัมพันธ์กับ
Classes และ Interfaces และ Libraries ใน Java เราจะเรียกกันว่า packages
แสดงตัวอย่างของ API และ Java Virtual Machine (JVM) ที่ปกป้องโปรแกรมกับการยึดติดอยู่กับ
Hardware

ด้วยสภาพแวดล้อมของ Platform-independent ของ Java อาจทำให้การทำงานของโปรแกรมช้าลง
แต่อย่างไรก็ดี ด้วยความพิเศษของตัว Compiler และ Virtual
Machine Technologies ก็นำมาซึ่งประสิทธิภาพ ปราศจากการคุกคามของ Platform
Java
Technology สามารถทำอะไรได้บ้าง?
วัตถุประสงค์หลักของภาษาเขียนโปรแกรม Java ซึ่งเป็นภาษาระดับสูงก็คือ การทำงานที่เป็นอิสระจาก Platform
และมีประสิทธิภาพสุงสุด (Powerful Software Platform) ซึ่ง Java
ได้เพิ่มเติมคุณลักษณะเด่น ในด้านต่อไปนี้
- Development Tools : เตรียมเครื่องมือสำหรับเขียนโปรแกรมที่จำเป็นทั้งด้าน การ
Compile , การ Run, การตรวจสอบ (monitoring) , การดีบัก (debugging) และด้านเอกสาร (documenting) โดยใช้ Java compiler (javac), Java launcher (java) และ Java documentation tool (javadoc)
- Application Programming Interface (API) : ตัว API จะจัดเตรียม Function ต่าง ๆ
ในการทำงานทั้งด้าน Network และ Security ตลอดจนการ Generation code เป็น XML และการเข้าถึงฐานข้อมูล
- Deployment Technologies : ใน JDK จะมีกลไกมาตรฐานที่จัดเตรียมการทำงาน
เกี่ยวกับ Java Web Start
และ Java Plug-In
- User Interface Toolkits : มี Swing และ Java 2D toolkits
ทำให้ง่ายในการสร้าง
Graphical User Interfaces (GUI)
- Integration Libraries : มีการรวมกลุ่มของ Libraries ได้แก่ IDL, JDBC, JNDI, RMI,
และ RMI-IIOP สามารถเข้าถึงฐานข้อมูลและจัดการ Remote
object
Java
Technology สามารถเปลี่ยนแปลงชีวิตของคุณได้อย่างไร?
ไม่สามารถที่จะสัญญาได้ว่า มันจะทำให้คุณก้าวหน้าและมีชื่อเสียงในหน้าที่การงานถ้าคุณเรียนรู้ภาษา Java เพราะคุณก็ยังคงต้องเขียนโปรแกรมเหมือนเดิม แต่ Java จะดีกว่าและใช้ความพยายามน้อยกว่าภาษาอื่น และเราสามารถเชื่อมั่นได้ว่าจาวาเทคโนโลยี
(Java Technology) จะช่วยเราในเรื่องต่อไปนี้
- ศึกษาได้เร็ว
(Get started quickly) : จาวาเป็นภาษาเขียนโปรแกรมที่มีประสิทธิภาพและ
ทรงพลัง
(Powerful) จัดเป็นภาษาเขียนโปรแกรมเชิงวัตถุ
(object-oriented) ที่ง่ายต่อการเรียนรู้ โดยเฉพาะอย่างยิ่ง Programmers
ที่มีพื้นฐานภาษา C หรือ C++ อยู่แล้ว
- เขียนโค้ดใช้เวลาน้อย (Write less code)
- เขียนโค้ดได้ดีกว่า (Write better code)
- พัฒนาโปรแกรมได้เร็ว (Develop programs more quickly) เขียนได้เร็วเมื่อเทียบกับ
C++
- หลีกเลี่ยงปัญหาเรื่องแพล็ตฟอร์ม (Avoid platform dependencies) สามารถหลีกเลี่ยง
ปัญหาการใช้
Libraries ที่ต่างจากภาษาอื่น
- เขียนโค้ดที่เดียว Run ได้ทุกที่
(Write once, run anywhere) เพราะจาวา Compile
โปรแกรมเป็น Machine-independent bytecodes
จึง Run ได้ทุกที่โดยไม่ยึดติด Platform
- ง่ายต่อการเผยแพร่ซอฟต์แวร์ (Distribute software more easily) จาวาสามารถทำงานบน
Web จึงง่ายต่อการ Update
ข้อมูลต่าง ๆ
Java Technology
จัดกลุ่มเทคโนโลยีจาวาออกเป็น 3 กลุ่ม
เพื่อใช้งานกับอุปกรณ์ที่มีคุณสมบัติที่แตกต่างกันดังนี้คือ
1. Standard Edition
(J2SE) : เป็นเทคโนโลยีจาวาที่ออกแบบเพื่อนำมาใช้พัฒนางานบน
เครื่องคอมพิวเตอร์เดสก์ท้อปและคอมพิวเตอร์เวิร์กสเตชัน
2.
3. Micro Edition
(J2ME) : มีเป้าหมายสำหรับพัฒนาแอพพลิเคชันที่
ทำงานบนอุปกรณ์ที่ใช้ทรัพยากรจำกัดไม่ว่าจะเป็น ขนาดของหน่วยความจำ
ความสามารถในการการประมวลผล เช่น โทรศัพท์มือถือ เพจเจอร์ ปาล์ม PDA เป็นต้น

(http://www.thaiall.com/class/indexr.htm)
Editor สำหรับเขียนโปรแกรม
Java
- Borland
JBuilder : ช่วยให้การเขียนโปรแกรมง่ายขึ้น
เหมือนกับการเขียนโปรแกรมประเภท Visual
ภาษาอื่น ๆ (แต่ไม่ฟรี) เป็นผลิตภัณฑ์ของบริษัท Borland สามารถ Download เพื่อ
ทดลองใช้งานได้ที่
www.borland.com
-
Sun One Studio : เป็นผลิตภัณฑ์ของบริษัท Sun Microsystem สามารถ Download
เพื่อทดลองใช้งานได้ที่ http://java.sun.com
-Editplus : มีความสามารถในการรองรับภาษาเขียนโปรแกรมได้หลายภาษา
สามารถ Download เพื่อทดลองใช้งานได้ที่ www.editplus.com
- BlueJ : เป็นผลิตภัณฑ์ของมหาวิทยาลัยแห่งหนึ่งในเดนมาร์ก
เมื่อเขียนโปรแกรม Editor ชนิดนี้จะทำการสร้าง Class Diagram
ของโปรแกรมนั้น ๆ และยังเชื่อมโยงให้เห็นความสัมพันธ์กับ Class
หรือโปรแกรมอื่น ๆ อีกด้วย
- NotePad : เป็น Editor ที่มีอยู่ในระบบของ Windows โดยที่คุณไม่จำเป็นต้องติดตั้งเพิ่ม แต่มีข้อเสียคือ
ไม่สามารถแสดงหมายเลขบรรทัดของคำสั่ง (line of code) ได้
-
NetBeans : ทำให้ง่ายและสามารถลดเวลาในการเขียนโปรแกรม สามารถพัฒนาระบบงานได้เร็วขึ้น เหมาะสำหรับการใช้ Swing และสร้างการโต้ตอบแบบ GUI
สามารถ Download โปรแกรมเพื่อติดตั้งใช้งานได้ที่
www.netbeans.org
นอกจากที่กล่าวมาแล้ว ยังมี Editor อื่น ๆ
อีกที่รองรับการเขียนโปรแกรมภาษา Java
แบบฝึกหัดท้ายบทที่ 1
จงตอบคำถามต่อไปนี้
1. อธิบายหลักการเขียนโปรแกรมเชิงวัตถุ
2. อธิบายความสัมพันธ์ระหว่าง Object และ Class
3. บอกคุณสมบัติของการเขียนโปรแกรมแบบ OOP
4. บอกประวัติโดยย่อของภาษา Java
5. บอกข้อดีของ Java กับ
Platform
6. อธิบายความหมายและบอกประโยชน์ของ
Data Encapsulation
7. บอกความหมายของ Inheritance
![]()

8. จงเติมคำ super class หรือ sub class ลงในช่องว่าง
9.
คุณลักษณะเฉพาะ (properties หรือ Attribute) ของ Class รถเก๋งเป็นอย่างไร
และแตกต่างจาก
คุณลักษณะของ Class
รถบรรทุกอย่างไร
10. Class
รถเก๋ง, รถบรรทุก, รถ Bus สามารถมีพฤติกรรมอะไรได้บ้าง (behavior)
11.
Class รถเก๋ง, รถบรรทุก, รถ Bus มีคุณสมบัติอะไรที่เหมือนกัน
ที่รับมาจาก Class รถยนต์
12. จากข้อ 8 ให้นักศึกษายกตัวอย่าง Class และการสืบทอดคลาส
copy right @ ณัฎภัทรศญา ทับทิมเทศ, "การเขียนโปรแกรมเชิงวัตถุ, 2552
บรรณานุกรม
H.M.Deital Deitel &Associates,Inc., P.J.Deitel Deitel&Associates,Inc, " Java How
to Program 4th", Prentice Hall,USA,2002
http://www.netbeans.org/kb/50/index.html
http://java.sun.com/docs/books/tutorial/uiswing/index.html
http://java.sun.com/docs/books/tutorial/uiswing/components/components.html
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JComponent.html
http://java.sun.com/docs/books/tutorial/uiswing/TOC.html
Help, Netbeans 5.0, 2006
Java,จาวา,การเขียนโปรแกรมภาษา Java,กิฟฟารีน,giffarine,บทเรียนคอมพิวเตอร์,ไอที,IT,กรณีศึกษา,สื่อการสอน,โปรเจ็ค,project