ข้อมูลองค์ความรู้โดย
Web Master (IT)
ตำแหน่ง อาจารย์

การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming: OOP)

ประเภททางด้าน IT หลัก :   Development & Integration
ประเภททางด้าน IT ย่อย :   Web Design
  ลงข้อมูลเมื่อ 14:13:14 14/07/2010
  Page View (6998) แบ่งปัน

 

แนวคิดการโปรแกรมแบบโครงสร้าง (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 สามารถ”

 

ตัวดำเนินการ (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 แม่”  สามารถสืบทอดคุณสมบัติของตัวเอง (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

 

การออกแบบเชิงวัตถุ 

ปัจจุบันมีภาษาเฉพาะด้านที่ใช้ในการออกแบบเชิงวัตถุ ซึ่งขอแนะนำให้รู้จักกับภาษาที่ได้รับ

ความนิยม ดังนี้

 

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  นั้นจะต้องรู้ว่า “ระบบสามารถทำอะไรได้บ้าง?”   โดยยังไม่ต้องสนใจวิธีการ หรือกลไกในการทำงาน

 

Class diagram

                เป็น Diagram ที่สร้างขึ้นเพื่อแสดงให้เห็นถึงการใช้งาน Class และ Object  ตลอดจนแสดงความสัมพันธ์ระหว่าง  Class กับ Object  และการสืบทอด Class

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

                Class diagram  จะใช้เป็น diagram หลักเพื่อนำไปขยายในการสร้าง  Diagram อื่น ๆ

 

Activity diagram

                จะแสดงขั้นตอนการทำงานของ Use-Case เช่นเดียวกับ Sequence diagram  และ Collaboration Diagram  แต่จะเน้นงานย่อยของ Object จึงเหมาะกับการนำไปเขียน Module ในเชิงธุรกิจ

(ฺBusiness Process)  ใช้ประโยชน์เช่นเดียวกับ Flowchart

* คล้าย state chart แต่ไม่มีจุดจบ

 

 

Sequence diagram

                ใช้เพื่อบรรยายการทำงานระหว่าง Object ย่อยแต่ละ Object ของทุก ๆ  Use-Case ที่อยู่ภายใน Use-Case Diagram

 

Collaboration diagram

                จะคล้ายกับ  Sequence diagram  แต่ไม่ต้องแสดงเกี่ยวกับเวลา ดังนั้นแกนเวลาในแนว Column จะหายไป

 

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:  อ่านรายละเอียดเพิ่มเติมที่   www.java.sun.com  และ  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

 

Java Compiler

                จะทำหน้าที่ในการแปลงชุดคำสั่ง Text file หรือ Source file  ที่มีส่วนขยายเป็น (.java)  ให้เป็นภาษาเครื่อง  และใช้   JVM  เป็นตัวดำเนินการเพื่อให้สามารถนำไปใช้กับทุก ๆ  Platform

(ทุก ๆ ระบบปฏิบัติการ) ได้

 

Java Interpreter

                ทำการแปลงชุดคำสั่งของ  JVM ให้ออกมากเป็นผลลัพธ์ของโปรแกรม (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 เป็นต้น

  

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



องค์ความรู้ที่มีผู้อ่านมากสุด
เรียนรู้เรื่อง เมนบอร์ด (Mainboard, mother board)
แผงวงจรหลัก เป็นหัวใจสำคัญที่สุดที่อยู่ภายในเครื่อง เมื่อเปิดฝาเครื่องออกมาจะเป็นแผงวงจรขนาดใหญ่วางนอนอยู่ นั่นคือส่วนที่เรียกว่า "เมนบอร์ด"

โดย... Web Master (IT)

รายละเอียดของระบบ e-Purchasing Online ของกรมส่งเสริมอุตสาหกรรม กระทรวงอุตสาหกรรม
รายละเอียดของระบบ e-Purchasing Online ของกรมส่งเสริมอุตสาหกรรม กระทรวงอุตสาหกรรม

โดย... Web Master (IT)

AutoCAD คืออะไร
AutoCAD (Computer Aided Drefting/Dedign, CAD) เป็นซอฟต์แวร์ช่วยออกแบบด้วยคอมพิวเตอร์ ที่สามารถรองรับการทำงานทั้งใน 2 มิติ และ 3 มิติ

โดย... Web Master (IT)

ทำความรู้จักกับ IIG (International Internet Gateway ) & NIX(National Internet Exchange )
การใช้งานอินเตอร์เน็ตของเราทุกคน จำเป็นต้องผ่านระบบการให้ บริการของ IIG และ NIX เพราะว่า เป็นเหมือนเส้นทางหลักของศูนย์กลางโครงข่าย ของประเทศไทย ทั้งภายในและ ภายนอกประเทศ ที่จากเดิมเราจะทราบกันอยู่แล้วว่า บริการทั้งสองประเภทนี้จะมีผู้ให้บริการ แบบผูกขาดอยู่เพียงรายเดียวเท่านั้น คือ การสื่อสารแห่งประเทศไทย เพียงเท่านั้น แต่ ณ ปัจจุบันนี้ได้มีหน่วยงานที่เข้ามา กำกับดูแลในเรื่องของโทรคมนาคมของเมืองไทยอย่างเป็น รูปธรรมมากยิ่งขึ้น จึงก่อให้เกิดการแข่งขันอย่างเสรี และปัจจุบัน ทาง กทช. ผู้เป็นหน่วยงานหลัก ของ การกำกับดูแลได้เปิดอนุญาตให้กลุ่มบริษัทเอกชนทั่วไป สามารถขอรับใบอนุญาต การให้ บริการทั้งสองประเภทได้ เพื่อให้เกิดการแข่งขันกันอย่างเป็นธรรม และก่อให้ เกิดประโยชน์สูงสุด แก่ผู้บริโภคกันเลยละครับ

โดย... Web Master (IT)

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

โดย... Web Master (IT)

Windows XP Service Pack 3 Overview
ภาพรวม Windows XP Service Pack 3 จะประกอบด้วย security updates hotfix และ patch ต่างๆ ที่ไมโครซอฟท์ปล่อยหลังออก SP2 เป็นต้นมาไม่มีการเปลี่ยนแปลงในเชิงฟังก์ชั่นและการทำงานที่สำคัญ แต่จะอัพเดตองค์ประกอบต่างๆ อย่าง Microsoft Management Console (MMC) 3.0 และ Microsoft Core XML Services 6.0 (MSXML6) เป็นเวอร์ชั่นปัจจุบัน สิ่งที่น่าสนใจประการหนึ่งคือ ไมโครซอฟท์ไม่ได้รวมเอา Windows Internet Explorer 7 เข้ามาไว้ใน SP3 แต่จะใส่มาเฉพาะส่วนที่เป็นอัพเดตและ fix เท่านั้น คล้ายกับว่าไมโครซอฟท์ตั้งใจจะไม่บีบให้ลูกค้าต้องเปลี่ยนจาก IE6 มาใช้ IE7 ใครที่ต้องการอยู่กับ IE6 (ด้วยเหตุผลใดก็ตาม) ก็จะยังสามารถใช้ IE6 ได้ สำหรับใครที่เปลี่ยนไปเป็น IE7 แล้วจะมีอัพเดตมาให้เช่นเดียวกัน

โดย... Web Master (IT)

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

โดย... Web Master (IT)

เรียนรู้เรื่อง CPU
CPU (Central Processing Unit) หรือ โปรเซสเซอร์ (Processor) คือ ส่วนหนึ่งของเครื่องคอมพิวเตอร์ที่มีหน้าที่ควบคุมกา รทำงานของส่วนอื่นๆ โดยทั่วไปแล้ว ซีพียูจะประกอบไปด้วย หน่วยควบคุม (Control Unit), หน่วยประมวลผลคณิตศาสตร์และตรรกศาสตร์ (Arithmetic and Logic Unit; ALU) และหน่วยความจำ ได้แก่ รีจีสเตอร์ (Register), แคช (Cache), แรม (RAM) และรอม (ROM)

โดย... Web Master (IT)

การประยุกต์ใช้ DATA WAREHOUSEING
มีการประมาณการณ์เอาไว้ว่า ถ้าไม่มีการนำเอาระบบ Data Warehouse มาประยุกต์ใช้ในองค์กร จะมีคน เพียง 10 เปอร์เซ็นต์เท่านั้นที่จะสามารถใช้งานระบบสารสนเทศได้ตามความต้องการ และนั่นก็คือจำนวนคนที่มีระดับความรู้ ทาง IT เพียงพอที่จะสร้าง Query ขึ้นด้วยตนเองเพื่อสนองความต้องการด้านข้อมูลของตน นอกจากนั้นแล้ว ระบบ EIS (Executive Information System) และ DSS (Decision Support System) ก็มักจะทำงานได้ไม่ตรงกับที่ต้องการ เพราะข้อมูล ดิบจากฐานข้อมูลประจำวันนั้น เข้าถึงยาก หรือไม่ก็ทำความเข้าใจได้ไม่ง่ายนัก ยิ่งไปกว่านั้น การอนุญาตให้ผู้ใช้ระดับสูง สามารถเข้าถึงและค้นหาฐานข้อมูลได้โดยตรงอาจจะส่งผลต่อประสิทธิภาพของงานข้อมูล รวมไปถึงความเป็นระเบียบ (Data Integrity) ของฐานข้อมูลด้วย

โดย... Web Master (IT)

iTAP เตือนใช้ ?เราท์เตอร์- เครื่องมืองานไม้?ต้องรู้จริง เร่งหนุนทักษะ เสริมทัพอุตฯเฟอร์นิเจอร์
iTAP หนุนทักษะการใช้ “เราท์เตอร์- เครื่องมืองานไม้” ซึ่งใช้ในการตกแต่งขอบไม้ หรือแกะลวดลายต่างๆของชิ้นงานตกแต่งบ้าน หรือเฟอร์นิเจอร์ฯลฯ ย้ำเครื่องมือเฉพาะทางเหล่านี้ต้องมีทักษะ ใส่ใจในการทำงาน และระมัดระวังเพื่อปลอดภัยต่อผู้ใช้งานมากที่สุด เชื่อหากภาคอุตสาหกรรมสร้างบุคลากรมีความรู้ นอกจากจะได้ผลงานคุณภาพ ยังสร้างศักยภาพการแข่งขันในตลาด

โดย... Web Master (IT)