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

บทที่ 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)

Oval: – ตัวอย่างของ Object   ในโลกแห่งความเป็นจริง  เช่น

Oval: “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 แม่

Oval: เครื่องยนต์

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, Delphi, Smalltalk  เป็นต้น

ดังนั้นการเขียนโปรแกรมในรูปแบบดั้งเดิมเช่นภาษา 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 Bell

Laboratories

1980  พัฒนาภาษา C++   (พัฒนาจากภาษา C)  โดย Bjarne Stroustrup  at Bell

Laboratories

1995 พัฒนาภาษา  Java  โดยเปลี่ยนชื่อมาจาก “Oak”

Note:  อ่านรายละเอียดเพิ่มเติมที่   http://www.java.sun.com  และ  http://www.deitel.com

ภาษา Java  มีความสามารถในการจัดการหน่วยความจำได้ดี สามารถทำงานได้กับเทคโนโลยีหน่วยความจำที่มีความจุขนาดเล็ก อีกทั้งยังรองรับการเชื่อมโยงกับ Internet และ Support  หลักการทำงานแบบ OOP อีกด้วย

ความสามารถของ Java Technology

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. Enterprise Edition (J2EE)  : ถูกออกแบบมาเพื่อให้สามารถใช้ งานบนระบบเครื่องเซิร์ฟเวอร์รองรับการทำงานร่วมกับ Servlets, JSP และ XML
3. Micro Edition (J2ME)  : มีเป้าหมายสำหรับพัฒนาแอพพลิเคชันที่ ทำงานบนอุปกรณ์ที่ใช้ทรัพยากรจำกัดไม่ว่าจะเป็น ขนาดของหน่วยความจำ ความสามารถในการการประมวลผล เช่น โทรศัพท์มือถือ เพจเจอร์ ปาล์ม PDA เป็นต้น

(http://www.thaiall.com/class/indexr.htm)

Editor สำหรับเขียนโปรแกรม Java

– Borland  JBuilder :   ช่วยให้การเขียนโปรแกรมง่ายขึ้น เหมือนกับการเขียนโปรแกรมประเภท  Visual ภาษาอื่น ๆ (แต่ไม่ฟรี) เป็นผลิตภัณฑ์ของบริษัท Borland  สามารถ Download เพื่อ

ทดลองใช้งานได้ที่ http://www.borland.com

– Sun One  Studio  :  เป็นผลิตภัณฑ์ของบริษัท Sun  Microsystem   สามารถ Download เพื่อทดลองใช้งานได้ที่ http://java.sun.com

-Editplus :  มีความสามารถในการรองรับภาษาเขียนโปรแกรมได้หลายภาษา สามารถ Download เพื่อทดลองใช้งานได้ที่ http://www.editplus.com

– BlueJ    :  เป็นผลิตภัณฑ์ของมหาวิทยาลัยแห่งหนึ่งในเดนมาร์ก เมื่อเขียนโปรแกรม Editor ชนิดนี้จะทำการสร้าง Class Diagram ของโปรแกรมนั้น ๆ และยังเชื่อมโยงให้เห็นความสัมพันธ์กับ Class หรือโปรแกรมอื่น ๆ อีกด้วย

– NotePad  :  เป็น Editor ที่มีอยู่ในระบบของ Windows โดยที่คุณไม่จำเป็นต้องติดตั้งเพิ่ม  แต่มีข้อเสียคือ ไม่สามารถแสดงหมายเลขบรรทัดของคำสั่ง (line of code) ได้

– NetBeans  :  ทำให้ง่ายและสามารถลดเวลาในการเขียนโปรแกรม  สามารถพัฒนาระบบงานได้เร็วขึ้น  เหมาะสำหรับการใช้ Swing และสร้างการโต้ตอบแบบ GUI  สามารถ Download  โปรแกรมเพื่อติดตั้งใช้งานได้ที่   http://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 และการสืบทอดคลาส

http://www.No-Poor.com

รายได้เสริม ธุรกิจเสริมกิฟฟารีน (giffarine): ทำธุรกิจกิฟฟารีน ของคุณเอง  สร้างราย ได้กิฟฟารีน ลงทุนเพียง 160 บาท โดยการร่วมเป็นสมาชิกและใช้จ่ายผลิตภํณฑ์บางส่วนของกิฟฟารีน  สามารถสร้างเครือข่ายผ่าน net  เป็นรายได้พิเศษโดยไม่กระทบงานประจำ หรือเป็นสมาชิกเพื่อซื้อสินค้าไว้ใช้เองในราคาพิเศษ (สนใจรายได้เสริม คลิ๊กเลย)

http://www.Stats.in.th

eXTReMe Tracker

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s


%d bloggers like this: