วันศุกร์ที่ 28 มิถุนายน พ.ศ. 2556

การติดตั้งและใช้งานโปรแกรม ตัวแปลภาษาจาวา


          ขั้นตอนการดาวน์โหลดโปรแกรม Java SE Development Kit (ซึ่ง จะรวม JRE-Java Runtime Environment เอาไว้แล้ว)

1. เข้าเว็บไซต์ www.oracle.com

2. เลือกรายการ Downloads ที่รายการย่อย Popular Download เลือก Java for Developers


3. เลือก Java Platform (JDK) 7u2 หรือเวอร์ชั่นหลัง จากนี้




4.เลือกดาวน์โหลดซอฟต์แวร์เวอร์ชั่นที่ต้องการตัวอย่างเช่นสําหรับ Windows32Bit เลือก jdk-7u2-windows-i586.exe หรือสําหรับ Windows64Bit เลือก jdk-7u2-windows-x64.exe



5.ทําการติดตั้ง JavaSEDevelopmentKit โดยการสั่งรันโปรแกรมที่ดาวน์โหลดมาแล้วกดปุ่ม Next จนกระทั้งติดตั้งเสร็จเรียบร้อย


6. ทําการตรวจสอบโปรแกรมที่ติดตั้งว่าเรียบร้อยหรือไม่ โดยการเลือก Control Panel -> Add or Remove Programs แล้วตรวจดวู่า มีโปรแกรม Java และ Java Development Kit ติดตั้ง อยู่หรือไม่


7. ทาการตั้งตําแหน่ง ที่อยู่ของโปรแกรมแปลภาษา Java โดยการเลือก System Properties -> Environment Variables


8.ที่ SystemVariables เลือก Path->Edit



  9. ทาการเพิ่มข้อมูลต่อท้ายดังนี้ ;C:\Program Files\Java\jdk1.7.0_02\bin\ แล้วกด OK




10. สร้างไดเร็กตอรี่สาหรับเก็บโปรแกรม ตัวอย่างเช่น C:\55019999\java 

11.เขียนโปรแกรมโดยใช้โปรแกรม Notepad หรือโปรแกรม Edit ตั้งชื่อแฟ้มข้อมูลและชนิดชนิดข้อมูลจะต้องเป็น java ตัวอย่างเช่น HelloProgram.java แล้วเก็บโปรแกรมไว้ที่ไดเร็กตอรีที่จองไว้ ตัวอย่างเช่น C:\55019999\java\HelloProgram.java



11.เปิดโปรแกรม Command Prompt เปลี่ยนไดเร็กตอรี่ไปท่ีเก็บโปรแกรมอยู่ตัวอย่างเช่น cdc:\55019999\java 

12. ทําการคอมไพล์โปรแกรม โดยใช้คาสั่ง javac HelloProgram.java จะได้โปรแกรมชื่อ HelloProgram.class 

13. ทาการรันโปรแกรมโดยใช้คาสั่ง java HelloProgram



เครติดภาพจาก อ.วิบลูย์ พร้อมพานิชย์

การ ติดตั้ง JAVA Application & Game



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

1. หาไฟล์ Java ที่เราต้องการซะก่อน หากยังไม่รู้จะไปหาที่ไหนละก็ เข้าไปโหลด ที่เว็บไซต์http://www.e398world.th.gs/web-e/398world/download/index.html กันเลย เกมส์เป็นร้อยให้โหลดมาลองเล่นอย่างซะใจไม่เสียตังค์สักบาท

2. เมื่อโหลดมาแล้วก็แตกไฟล์ออกมาก็จะได้ Folder ที่บรรจุแต่ละเกมส์ซึ่งมีเยาะแยะทีเดียวดังตัวอย่างในภาพ

3. เปิดโปรแกรมเอนกประสงค์ตัวเดิมคือ P2ktools ขึ้นมา เลือก Switch To... ไปที่ P2kmode

1). คลิ๊กที่ ... Connect สังเกตุมุมล่างซ้ายหาก Connect ได้ แถบ Status จะบอกสานะ Commected
2). กด Refresh เพื่ออ่านข้อมูล Java ที่มีอยู่ในโทรศัพท์ของเรา จากตัวอย่างของผมจะเห็นว่าตอนนี้ผมมีอยู่ 2 ตัว และบอกขนาดไฟล์ด้วย
3). คลิ๊กที่ Install เพื่อทำการติดตั้ง Java ที่เราต้องการ
4). เลือกไฟล์ (นามสกุล .jar) จาก Folder ที่เรา Unzip ออกมาครั้งแรก ซึ่งก็คือไฟล์เกมส์หรือโปแกรม Java ที่เราต้องการนั้นเอง และคลิ๊ก Open


จะเห็นว่าโปรแกรมกำลังติดตั้ง Java ลงไป และเมื่อเสร็จครบ 100% ก็จะเห็นไฟล์เพิ่มเข้ามาดังที่ Hightlight ไว้ในภาพ หากต้องการเพิ่มไฟล์เข้าไปอีกก็ให้ทำขั้นตอนที่ 3 และ 4 อีกครั้ง เพื่อเลือกไฟล์ที่เราต้องการเพิ่มเข้าไป
5). เมื่อพอใจแล้วให้ Click ที่ Save ซึ่งตอนนี้ มือถือเราก็ได้ทำการติดตั้ง Javas เพิ่มเข้าไปแล้ว แต่ยังไม่แสดงผลให้เราเห็นเท่านั้น
6). คลิ๊กที่ Restart จากนั้นก็รอให้มือถือ Restart จนกลับเข้าหน้าจอปกติลองถอดสาย Data link แล้วก็เข้าสู่ เมนู Java บนมือถือ เพื่อนๆ ก็จะพบกับเกมส์หรือโปรแกรม Java ที่เราติดตั้งเข้าไปแล้ว
ส่วนการลบ Java ออกจากเครื่องนะครับก็ง่ายๆ คลิ๊กเลือกตรงแถบเกมส์หรือโปรแกรมที่เราต้องการลบ แล้วคลิ๊กที่ Uninstall กด Save และก็ Restart เครื่อง เท่านี้ก็จะเป็นการลบ Java ที่ไม่ต้องการออกแล้ว แถมยังทำให้เนื้อที่ใน Phone เรามีมากขึ้นด้วย

* TIP
1. การเก็บ Java นั้น จะเก็บเข้าสู่ Memory ของเครื่องเท่านั้นไม่สามารถเก็บบน T-flash ได้ ฉะนั้นจะเป็นการดีหากเราจะลงเฉพาะโปรแกรมที่เราชอบจริงๆเท่านั้น เพื่อสงวงพื้นที่เอาไว้เก็บอย่างอื่นเช่นเสียงเรียกเข้าเป็นต้น

2. จากการทดสอบ บางเกมส์ก็อาจจะเล่นไม่ได้ฃเพราะ เกมส์นั้นๆ ไม่ได้ถูกสร้างขึ้นมาเพื่อมือถือรุ่น E398 โดยเฉพาะ บางเกมส์หน้าจออาจจะเล็กหรือใหญ่กว่า บางเกมส์ปุ่มควบคุมอาจจะใช้ไม่ได้ทั้งหมด โดยเฉพาะ Soft key ซ้าย ขวา กับบางเกมส์ยังมีปัญหาอยู่ บางเกมส์ใช้ Joy ไม่ได้ ให้ใช้ปุ่ม 2,4,6,8 แทน ในการ ขึ้น-ลง-ซ้าย-ขวา และส่วนใหญ่บางเกมส์ การกดเพื่อเริ่มเกมส์ Enter หรือ Continue ให้ใช้ปุ่มเลข 5 แทน


โปรแกรมที่ใช้ในการพัฒนาภาษาจาวา



การใช้โปรแกรม Edit Plus
1. Download compiler
       Java 2 Platform, Standard Edition (J2SE) [http://java.sun.com/j2se/1.4/download.html] มีตัวแปรที่หลายบริษัทสร้างขึ้น แต่ตัวที่เป็นมาตรฐานคือของ sun และ java กำลังอยู่ในระหว่างการพัฒนาอย่างต่อเนื่อง ผมขอเลือก J2SE ของ sun เพราะใช้งานใน text mode นำไปใช้ใน linux ก็มีหลักการเหมือนกัน แต่
ถ้าเป็นของบริษัทอื่น ส่วนใหญ่ต้องใช้ใน Windows ไม่อย่างยึดติดกับ OS จึงเลือกที่จะใช้ J2SE สอนนักศึกษา แต่บริษัทต่าง ๆ พัฒนาตัวแปลเป็นระบบ IDE (Integrated development environment) ซึ่งใช้ง่ายกว่า ส่วน J2SE แม้ไม่มี IDE ในตัว แต่มีโปรแกรมหลายตัวที่นำมาใช้เป็น editor แล้วเรียก J2SE มาแปล และใช้งานได้สะดวกขึ้น เช่น kawa เป็นต้น

2. เตรียมสภาพแวดล้อม
     2.1 วิธีสร้าง short cut
สร้าง short cut ไว้บน Desk top เพื่อให้เรียกใช้ได้ง่าย

    - Right click บน Desk top จะมี pop-up menu ขึ้นมา
    - เลือก New, Short cut
    - พิมพ์ c:\windows\command.com ในช่องว่างที่อยู่เหนือคำว่า Browse..
    - เมื่อกดปุ่ม Next จะแสดงคำว่า MS-DOS Prompt ให้เปลี่ยนเป็นคำว่า JAVA จะได้จำง่ายแล้ว กดปุ่ม Finish
    - ให้ใช้ Mouse วางเหนือ Icon แล้วกดปุ่ม Right click แล้วเลือก Properties จะปรากฏภาพดังด้านล่าง ให้แก้ Working และ Batch file

     2.2 การสร้าง short cut ชื่อ java เรียก c:\windows\command.com บน desktop
หน้าที่ของ short cut นี้คือการเข้าสู่ DOS ทำให้นักพัฒนาสามารถเขียนโปรแกรมภาษา JAVA ได้โดยง่าย แบบไม่ใช้โปรแกรมช่วยอื่น แต่ใช้โปรแกรมของ Windows ที่เตรียมมาให้เท่านั้น ส่วนนี้ต้องทำหลังจาก install ตัวแปลภาษา J2SDK เรียบร้อยแล้ว
ทุกครั้งที่จะเขียนโปรแกรมให้เรียก short cut นี้ ทำให้มีการ set path ผ่าน setclass.bat อัตโนมัติ และเข้าไปในห้องชื่อ c:\thaiall.com\class ซึ่งกำหนดเป็น working directory สำหรับห้องนี้เป็นห้องที่ผมกำหนดไว้เก็บ .java .class หรือ .htm ทั้งหมดที่เตรียมสำหรับการพัฒนา java สำหรับท่านก็ต้องเปลี่ยนเป็นชื่อห้องที่ท่านคิดจะเก็บ source code ทั้งหมด

2.3 Code ในแฟ้ม setclass.bat (version ของ java ให้เปลี่ยนตามรุ่นที่ท่านมี)
3. เขียนโปรแกรมด้วย editor
        หลักจากเรียก short cut ชื่อ java จะเข้าสู่ DOS mode ให้เรียกโปรแกรมชื่อ edit ซึ่งเป็นโปรแกรมของ dos แล้วตามด้วยชื่อโปรแกรมพร้อมนามสกุลดังตัวอย่าง จากนั้นก็พิมพ์ตัวอย่างโปรแกรมตามด้านล่างนี้เลย ตัวพิมพ์ใหญ่ พิมพ์เล็กต้องเหมือนผมนะครับ

หลังพิมพ์โปรแกรมแล้วให้จัดเก็บด้วยการกด Alt-F-S เพื่อจัดเก็บ แล้วออกจากโปรแกรมด้วย Alt-F-X แต่โดยปกติผมจะกดปุ่ม Alt-F-X แล้วโปรแกรมจะถามว่าจัดเก็บหรือไม่ ก็จะตอบว่า Yes ไม่ต้องเรียกเมนู 2 รอบ จากนั้นก็จะออกมาที่ DOS prompt

4. แปลโปรแกรมใน DOS mode
         การแปลโปรแกรมจะพิมพ์คำสั่งง่าย ๆ ดังตัวอย่างข้างล่าง หากการแปลเสร็จสิ้นจะไม่แสดงผลอะไรบนจอภาพ นอกจากขึ้น DOS prompt บรรทัดใหม่ ข้อย้ำอีกครั้งว่า ถ้าแปลผ่านจะไม่แสดงข้อความใด ๆ ให้เห็นนอกจากขึ้น DOS prompt บรรทัดใหม่
ตัวอย่างข้างล่างนี้ แสดงข้อพิดพลาดที่ตัวแปลภาษาพบ โดยปกติคำว่า System.out.println("hello"); คำว่า S จะเป็นพิมพ์ใหญ่ หากมีใครเขียน พิมพ์เล็กก็จะแปลโปรแกรมไม่ผ่าน ตัวอย่างข้างล่างแสดงให้เห็นว่าเขียนโปรแกรมมาไม่ถูก จึงแปลไม่ผ่าน และพบข้อผิดพลาด 1 error

5. สั่งประมวลผล JAVA application
         เมื่อแปลโปรแกรมแล้ว ก็ต้องสั่งประมวลผลโปรแกรมที่ได้มาจากการแปล แฟ้มที่ได้มาจากการแปลคือ prthello.class แต่การสั่งให้โปรแกรมทำงานต้องอาศัยโปรแกรม java.exe เรียก ดังนั้นทุกครั้งที่จะสั่งให้ .class ทำงานต้องเขียนดังข้างล่างนี้ จึงจะเห็นผลลัพธ์ที่ต้องการ

6. การใช้ editplus ช่วยในการเขียน แปล และประมวลผล
         โปรแกรม editplus เป็นเพียง editor มิใช่ compiler แต่เป็นโปรแกรมที่ช่วยเรียก compiler มาแปลโปรแกรมที่กำลังเขียนอยู่ พร้อมกับ run โดยเพิ่มเข้าไปในส่วนของ Tools, Configure User Tools ... ทำให้สามารถเรียกโปรแกรมอื่น มาทำงาน โดยแสดงผลในส่วนของ Output windows ว่าผลการ run หรือ compile เป็นอย่างไร โดยเรียก program ด้วยการกดปุ่ม CTRL+1 หรือ CTRL+2 เป็นต้น... มีตัวอย่างการสร้างปุ่มดังภาพด้านล่าง
# ตัวอย่างนี้ใช้ชื่อห้องเก็บ compiler เป็น c:\java แต่ถ้าเป็นของท่านจะเป็น c:\j2sdk.. พร้อมชื่อเวอร์ชั่น

ตัวอย่างการเรียก applet ผ่าน DOS mode

C:\j2sdk1.4.1_01\bin>appletviewer j1101.java

ถ้าเรียก applet ผ่าน editplus ต้องเพิ่มบรรทีดแรก
//<applet code=j1101 width=200 height=200></applet>
import java.lang.*;
import java.applet.*;
import java.awt.Graphics;
public class j1101 extends java.applet.Applet {
public void paint(Graphics g) {
g.drawString("test",10,20);
}
}

7. โปรแกรมแรกบนมือถือ ด้วย KToolbar และ Jarโปรแกรมนี้ download burin1.jar ไปใช้กับมือถือได้เลย
โปรแกรม java บนมือถือโปรแกรมแรกของผม ทดสอบในคอมพิวเตอร์
1. ติดตั้ง J2ME ให้ได้หลังติดตั้ง J2SDK แล้ว
2. เปิด KToolbar
3. เลือก New project..
4. กรอก burin1 ในช่อง ProjectName
5. กรอก burin1.TextHelloDemo ในช่อง MIDIet Class Name แล้วกดปุ่ม OK
6. Copy source code ด้านล่างไปไว้ใน notepad
7. Save โปรแกรมนี้ชื่อ TextHelloDemo.java ไว้ใน C:\WTK21\apps\burin1\src
8. กดปุ่ม Build
9. กดปุ่ม Run จะเห็นรูปโทรศัพท์มือถือ และคำว่า burin1 ในโทรศัพท์มือถือ
===============
สร้าง jar อ่านจาก C:\WTK21\docs\UserGuide.pdf
พิมพ์ C:\WTK21\apps\burin1\bin>jar cfm burin1.jar manifest.mf -C ..\classes .
ลองคำสั่ง dir ก็จะเห็น burin1.jar เพื่อดูขนาดแฟ้ม พบขนาดเป็น 1656 Byte จำเลขนี้ไว้
10. ใช้ KToolbar open project burin1 ขึ้นมา แล้วเลือก Settings..
11. เลือก Tab ชื่อ Required แล้ว Click ชื่อ MIDlet-Jar-Size เปลี่ยนขนาด 100 เป็น 1656
12. กดปุ่ม Build เพื่อสร้างแฟ้ม burin1.jad ใหม่
===============
นำ .jar และ .jad เข้ามือถือ
13. ต่อสาย datalink กับคอมพิวเตอร์ผ่าน com1
14. เปิด Start, Program, Siemens Data Suite, Mobile
15. เข้าห้อง Mobile\Java\Jam แล้วสร้างห้องชื่อ burin1
16. คัดลอก burin1.jad และ burin1.jar จาก C:\WTK21\apps\burin1\bin\ ไว้ห้อง burin1 ในมือถือ
17. ทดสอบ run โปรแกรมชื่อ burin1 ก็เหมือนกับที่ run ใน KToolbar

วันพฤหัสบดีที่ 27 มิถุนายน พ.ศ. 2556

แนวทางการพัฒนา Java ( ด้านการเลือกใช้อิดิเตอร์ )



         ด้านการเลือกใช้อิดิเตอร์ (Editor) การเลือกอิดิเตอร์ที่จะใช้สำหรับเขียนโปรแกรมภาษาจาวา สามารถเลือกได้หลากหลาย เช่น
         1) โปรแกรมโน้ตแพด (NotePad) จะมาพร้อมกับการติดตั้งวินโดว์ (Windows) การใช้งานมีข้อเสียคือไม่แสดงหมายเลขบรรทัด (line number) ทำให้ไม่สะดวกในการแก้ไขข้อผิดพลาด (Error) ที่เกิดในแต่ละบรรทัด
         2 ) โปรแกรมอีดิทพลัส (Editplus) รองรับการเขียนโปรแกรมได้หลายภาษา เช่น เอชทีเอ็มแอล (HTML) ซีและซีพลัสพลัส (C/C++) เพิร์ล (Perl) และ จาวา (Java) เป็นโปรแกรมที่เขียนโค้ดได้เฉพาะที่เป็นข้อความ (Text Editor) ใช้งานง่ายสามารถดาวน์โหลดเพื่อทดลองใช้งานได้ที่เว็บไซต์ www.editplus.com
         3) โปรแกรมบลูเจ (BlueJ) พัฒนาโดยมหาวิทยาลัยแห่งหนึ่งในเดนมาร์ค เมื่อทำการเขียนโปรแกรมอิดิเตอร์ (Editor) ชนิดนี้ จะสร้างคลาสไดอะแกรม (Class Diagram) ของโปรแกรมนั้นและยังเชื่อมโยงให้เห็นความสัมพันธ์กับคลาสอื่นที่เกี่ยวข้อง แต่มีข้อเสียคือโปรแกรมทำงานได้ค่อนข้างช้า สามารถดาวน์โหลดโปรแกรมได้ที่เว็บไซต์ http://www.bluej.org
        4) โปรแกรมบอร์แลนด์เจบิลเดอร์ (Borland Jbuilder) เป็นผลิตภัณฑ์ของบริษัทบอร์แลนด์จะช่วยให้การเขียนโปรแกรมแลดูง่ายขึ้น เนื่องจากมีคอมโพเน้นท์ (Component) ให้เลือกใช้มากมายเช่นเดียวกับการเขียนโปรแกรมประเภทวิสชวล (Visual) ภาษาอื่น ๆ แต่มีค่าใช้จ่ายด้านลิขสิทธิ์ค่อนข้างสูง สามารถดาวน์โหลดโปรแกรมเพื่อทดลองใช้งานได้ที่ www.borland.com
        5) โปรแกรมซันวันสตูดิโอ (Sun One Studio) เป็นผลิตภัณฑ์ของบริษัทซันไมโครซีสเทิม (Sun Microsystem) ผู้พัฒนาภาษาจาวา อย่าลืมว่าถึงแม้จาวาจะเป็นโปรแกรมโอเพินซอร์ส (Open Source) แต่ก็ไม่ได้หมายความว่าอิดิเตอร์สำหรับใช้เขียนจาวานั้นจะไม่เสียค่าใช้จ่าย ดังนั้นจึงสามารถ ดาวน์โหลดโปรแกรมเพื่อทดลองใช้งานได้ที่เว็บไซต์ http://java.sun.com เมื่อเกิดความพึงพอใจที่จะใช้งานต่อก็สามารถจ่ายเงินซื้ออิดิเตอร์ดังกล่าว และ
       6)โปรแกรมเน็ตบีนส์ (NetBeans) ช่วยให้เขียนโปรแกรมได้ง่ายและเร็วขึ้น เหมาะสำหรับการใช้สวิง (Swing) และสร้างการโต้ตอบแบบจียูไอ (GUI) สามารถดาวน์โหลดโปรแกรมเพื่อใช้งานได้ฟรีที่เว็บไซต์ www.netbeans.org
       จากที่กล่าวมาแล้วนั้น ในขั้นตอนแรกของการเริ่มต้นเขียนจาวา สามารถเริ่มเขียนภายใต้โปรแกรมด้วยอิดิทพลัส (Editplus) เพราะจะทำให้เข้าใจหลักการและโครงสร้างของภาษาจาวาได้ดี หลังจากนั้นอาจ เปลี่ยนอิดิเตอร์ไปใช้โปรแกรม เน็ตบีนส์ (NetBeans) เนื่องจากจะช่วยย่นระยะเวลาในการเขียนโปรแกรมให้เร็วขึ้น แสดงภาพตัวอย่างการเขียนโปรแกรมจากทั้งสองอิดิเตอร์ดังรูปที่ 3

รูปที่ 3 แสดงหน้าจอการเขียนจาวาด้วยโปรแกรมอิดิทพลัส (Editplus) กับโปรแกรมเน็ตบีนส์ (NetBeans)

         จากรูปที่ 3 ด้านซ้ายมือเป็นการเขียนจาวาด้วยโปรแกรมอิดิทพลัส (Editplus) ซึ่งการใช้โปรแกรมชนิดนี้นักพัฒนาจะต้องเขียนชุดคำสั่งทั้งหมดด้วยตนเองโดยพิมพ์ได้เฉพาะข้อความเท่านั้น (Text Editor)   ดังนั้นจึงใช้เวลานานในการพัฒนาแอพพลิเคชั่น (Application) เมื่อพิมพ์คำสั่งเป็นที่เรียบร้อยจากนั้นจึงสั่งแปล (Compile)และรัน (Run) โปรแกรมเพื่อแสดงผลลัพธ์ ส่วนรูปด้านขวามือเป็นการเขียนจาวาด้วยโปรแกรมเน็ตบีนส์ (NetBeans) จะช่วยประหยัดเวลาให้กับนักพัฒนาเพราะมีเครื่องมือต่าง ๆ ในลักษณะของวิสชวล (Visual) ให้เลือกใช้ระหว่างการออกแบบ และลดจำนวนของการเขียนโค้ดให้น้อยลงเนื่องจากโค้ดใดที่เป็นคำสั่งในโครงสร้างพื้นฐานของจาวาโปรแกรมเน็ตบีนส์จะทำการสร้าง (Generate) ให้โดยอัตโนมัติ ดังนั้นนักพัฒนาเพียงแต่เพิมเติมชุดคำสั่งที่ใช้สำหรับควบคุมเหตุการณ์ (Event) ในการทำงานเท่านั้น
         หลังจากที่มีพื้นฐานการเขียนจาวาโปรแกรมมิง (Java Programming) แล้ว หากต้องการเพิ่มขีดความสามารถโดยการเขียนโปรแกรมบนคอมพิวเตอร์แม่ข่าย (Server) หรือบนเว็บก็สามารถดาวน์โหลด  โปรแกรมเน็ตบีนส์ (NetBeans) สำหรับจาวา J2EE และจาวา J2ME สำหรับเขียนโปรแกรมบนโทรศัพท์มือถือ หรือถ้าต้องการเขียนโปรแกรมบนโทรศัพท์มือถือโดยไม่ใช้โปรแกรมเน็ตบีนส์ (NetBeans) ก็สามารถติดตั้งโปรแกรม J2ME Wireless Toolkit 2.1 ซึ่งจะมี KToolbar สำหรับสร้างโปรเจ็ค (Project) บิลด์ (Build) และ รันโปรเจ็ค (Run project) โดยจะแสดงผลลัพธ์ของชุดคำสั่งที่เขียนโปรแกรมบนโทรศัพท์มือถือที่โปรแกรมมือถือจำลอง (Emulator) แต่ก็ยังคงต้องอาศัยการเขียนโค้ดในโปรแกรม อิดิทพลัส (Editplus) เช่นเดิมแสดงตัวอย่างองค์ประกอบบางส่วนของการเขียนโปรแกรมบนโทรศัพท์มือถือดังรูปที่ 4

รูปที่ 4 องค์ประกอบบางส่วนของการเขียนโปรแกรมบนโทรศัพท์มือถือ

          จากรูปที่ 4 เป็นการเขียนโปรแกรมจาวาบนโทรศัพท์มือถือ โดยใช้ J2ME Wireless Toolkit 2.1 เป็นโปรแกรมอิดิเตอร์ ซึ่งเมื่อติดตั้งอิดิเตอร์เป็นที่เรียบร้อยแล้วจะปรากฏ Wireless Toolkit ที่สตาร์ทเมนู ( Start Menu) พร้อมกับโปรมแกรมที่เกี่ยวข้อง โดยนักพัฒนาสามารถเลือกคำสั่ง KToolbar เพื่อเริ่มต้นการเขียนโปรแกรมจาวาบนโทรศัพท์มือถือ เมื่อเข้าไปในอิดิเตอร์ของ Ktoolbar แล้วสามารถสร้างโปรเจ็ค (Project) เพื่อเริ่มงานโปรแกรม เมื่อนักพัฒนาสร้างโปรเจ็คเป็นที่เรียบร้อย เครื่องจะทำการสร้างโฟลเดอร์ (Folder) ตามชื่อของโปรเจ็คสำหรับเก็บโปรแกรมที่จะถูกสร้างขึ้นในภายหลัง จากให้ผู้พัฒนาจะต้องทำการย้ายโปรแกรมที่มีส่วนขยาย (.java) ที่เขียนไว้แล้วในโปรแกรมอิดิทพลัส (Editplus) ไปเก็บไว้ที่ ไดเรคทอรี่ C:\WTK21\apps\ตาชื่อโฟลเดอร์ของโปรเจ็คที่สร้าง\scr จากนั้นสลับหน้าจอกลับมาที่หน้าต่างของโปรแกรมอิดิเตอร์ Ktoolbar แล้วคลิก (Click) ที่ปุ่มบิลด์ (Build) และปุ่มรัน (Run) เพื่อแสดงผลลัพธ์ของโปรแกรมภายใต้หน้าจอโทรศัพท์จำลอง (Emulator)



แนวทางการพัฒนา Java ( ด้านการพัฒนาซอฟต์แวร์ )



       ด้านการพัฒนาซอฟต์แวร์ การเริ่มต้นการเขียนโปรแกรมในปัจจุบันจะเน้นโปรแกรมที่ทำงานร่วมระหว่างเครื่องคอมพิวเตอร์ลูกข่ายและแม่ข่าย (Client-Server) การทำงานภายใต้สถาปัตยกรรมมัลติเทียร์ (Multi-Tiered) การทำงานบนเว็บ และที่น่าสนใจก็คือ การเขียนโปรแกรมบนโทรศัพท์มือถือและอุปกรณ์ไร้สาย ถ้าเริ่มต้นศึกษาจาวาเพื่อการทำงานดังกล่าว ควรเริ่มจากจาวามาตรฐานที่ทำงานบนเครื่องพีซี (J2SE) โดยเลือกติดตั้งเวอร์ชั่นล่าสุดได้แก่ jdk1.6


แนวทางการพัฒนา Java ( ด้านหลักสูตร )



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

       ดังนั้นสถาบันการศึกษาหลายแห่งที่เปิดสอนในหลักสูตร ปวช. ปวส. ปริญญาตรี หรือปริญญาโท ก็ได้พยายามนำเอาภาษานี้บรรจุเข้าไปในรายวิชาที่มีความเกี่ยวข้องกับการเขียนโปรแกรม หรือบรรจุลงในรายวิชาที่เกี่ยวกับโครงสร้างข้อมูล หรืออาจจะเป็นวิชาเกี่ยวกับการออกแบบโปรแกรมเชิงวัตถุ ล้วนแล้วแต่สามารถทำได้ทั้งสิ้น และนั่นก็นับเป็นโอกาสอันดีของนักศึกษาในรุ่นนั้น ๆ ที่มีโอกาสได้เรียนรู้โปรแกรมภาษาใหม่ ๆ แต่สำหรับผู้ที่จบการศึกษาในหลักสูตรเก่า ความรู้ทางด้านการเขียนโปรแกรมที่เรียนมา จึงล้วนเป็นการโปรแกรมแบบโครงสร้าง (Structure Programming) เช่น โปรแกรมฟอคซ์โปร (FoxPro) ปาสคาล(Pascal) ฟลอแทรน(Fortran) อินฟอร์มิคซ์ (Informix) ดีเบส (dBase) และ พาราดอคซ์ (Paradox) อาจเกิดความล้าสมัยจำเป็นต้องได้รับการปรับเปลี่ยนในทางปฏิบัติ ผู้ที่ทำงานในสายอาชีพด้านเขียนโปรแกรมอยู่แล้ว คงมากด้วยประสบการณ์ที่สั่งสมขึ้นเรื่อย ๆ ในแต่ละปี ดังนั้นการที่จะเรียนรู้ภาษาใหม่เพิ่มอีกหนึ่งภาษา คงไม่ยากนัก แต่สิ่งที่อาจเป็นปัญหาได้คือ ความไม่ต้องการที่จะเปลี่ยนแปลงความเคยชินของตนเอง เมื่อเราใช้ภาษาใดภาษาหนึ่งจนเกิดความคล่องแคล่ว เขียนโปรแกรมด้วยความคุ้นเคยและหลงรักในภาษานั้น เราอาจกลัวกับการที่ต้องเริ่มต้นใหม่กับภาษาอื่นที่ไม่คุ้นเคย ในทางกลับกันบัณฑิตที่จบใหม่ด้วยหลักสูตรเก่า ยังไม่มีโอกาสได้สัมผัสการทำงานจริง ขาดประสบการณ์ และตกอยู่ในสภาวะที่กดกัน ท่ามกลางการแข่งขันกับบัณฑิตต่างสถาบันจำนวนมาก คงเป็นเรื่องยากที่จะทำการศึกษาโปรแกรมใหม่ด้วยตนเอง 
     ดังนั้นอาจกล่าวได้ว่า จาวาเป็นโปรแกรมภาษาทางเลือกในปัจจุบันที่บัณฑิตรุ่นเก่าและรุ่นใหม่ควรศึกษาเพิ่มเติมเป็นภาษาที่ใช้หลักการเชิงวัตถุมีความสอดคล้องกับแนวทางการพัฒนาซอฟต์แวร์ในปัจจุบัน ออกแบบระบบโดยใช้ยูเอ็มแอล (UML) และทำงานร่วมกับฐานข้อมูลเชิงวัตถุ (Object-oriented Databases) เช่นโอทู(O2) ซึ่งเป็นฐานข้อมูลที่มีความซับซ้อนและมีขนาดใหญ่ สามารถเก็บข้อมูลได้ทั้งภาพ  เสียง ข้อความ ตัวเลข และมัลติมีเดีย รวมถึงคุณลักษณะของวัตถุและคลาส

วันอังคารที่ 25 มิถุนายน พ.ศ. 2556

การพัฒนาโปรแกรมภาษา Java


           ขั้นตอนการพัฒนาโปรแกรมภาษา Java ไม่ได้มีแตกต่างจากการพัฒนาโปรแกรมภาษาอื่นมากนัก การพัฒนาโปรแกรมเริ่มต้นจากการเขียนคำสั่งภาษา Java ลงบนเท็กซ์ไฟล์ (Text File) โดยเรียกชุดคำสั่งเหล่านั้นว่า ซอร์สโค้ด (Source Code) และเมื่อสร้างซอร์สโค้ดภาษา Java ขั้นตอนการบันทึกไฟล์ซอร์สโค้ด คือ การบันทึกไฟล์ซอร์สโค้ดนั้นต้องบันทึกไฟล์ให้มีนามสกุลเป็น .java เท่านั้น

           เมื่อสร้างและบันทึกซอร์สโค้ดเสร็จแล้ว ขั้นตอนต่อมา คือ การคอมไพล์ (Compile) ซอร์สโค้ด การคอมไพล์ซอร์สโค้ด ก็คือ การแปลงซอร์สโค้ดภาษา Java ให้เป็นภาษาเฉพาะที่ตัว JVM เข้าใจโปรแกรมที่ทำหน้าที่ในการคอมไพล์ซอร์สโค้ด เรียกว่า Java Compiler หรือคำสั่ง java.exe ภาษาเฉพาะที่ตัว JVM เข้าใจ นั้นก็คือ Java Byte Code ซึ่ง Java Compiler จะเก็บ Java Bite Code ไว้ในไฟล์ที่มีนามสกุล .class ที่ได้จากการคอมไพล์ .class ไปรันบน JVM ซึ่งขั้นตอนนี้จะถูกทำงานโดย Java Interpreter หรือคำสั่ง javac.exe ขั้นตอนการพัฒนาโปรแกรมแสดงได้ดังรูปดังต่อไปนี้


แสดงขั้นตอนการพัฒนาโปรแกรมภาษา Java

          การทำงานของ Java Interpreter จะใช้หลักการทำงานของตัวแปลภาษา (Interoperation) ซึ่งการทำงานของตัวแปลภาษาตัวนี้ คือ จะอ่านคำสั่งจาก Java Byte Code ทีละบรรทัด แล้วทำการแปลคำสั่งชุดนั้นให้เป็น Executable Code แล้ส่งไปให้ CPU ทำการประมวลผล Executable Code ก็คือ ภาษาเครื่องที่ CPU เข้าใจนั่นเอง เมื่อทำงานคำสั่งชุดนั้นเสร็จก็จะกลับมาอ่านคำสั่งในบรรทัดต่อไป แล้วไปแปลงคำสั่งชุดนั้นให้เป็น Executable Code อีก แล้วก็ส่งไปให้ CPU ประมวลผล และจะทำเช่นนี้ไปเรื่อยๆ จนกว่าจะจบโปรแกรม การทำงานแบบนี้ดูแล้วรู้สึกว่าการทำงานนั้นช้าอยู่ แต่มีข้อดีคือ จะทำให้โปรแกรมมีความยืดหยุ่นในการพัฒนาโปรแกรม เนื่องจากในขณะที่กำลังแปลงอยู่นั้น แล้วเกิดข้อผิดพลาดหรือ Error ที่ไม่ใหญ่หลวงขึ้นมา เครื่องจะอนุญาตให้โปรแกรมแก้ไขโปรแกรมได้ทันที แล้วจึงทำงานในบรรทัดนั้นต่อไปได้

ข้อดี - ข้อเสีย ของ Java



ข้อดีของ Java

          โปรแกรมจาวาที่เขียนขึ้นสามารถทำงานได้หลาย platform โดยไม่จำเป็นต้องแก้ไขหรือ compile ใหม่ ทำให้ช่วยลดค่าใช้จ่ายและเวลาที่ต้องเสียไปในการ port หรือทำให้โปรแกรมใช้งานได้หลาย platform
          ภาษาจาวาเป็นภาษาเชิงวัตถุ ซึ่งเหมาะสำหรับพัฒนาระบบที่มีความซับซ้อน การพัฒนาโปรแกรมแบบวัตถุจะช่วยให้เราสามารถใช้คำหรือชื่อ ต่าง ๆ ที่มีอยู่ในระบบงานนั้นมาใช้ในการออกแบบโปรแกรมได้ ทำให้เข้าใจได้ง่ายขึ้น
         ภาษาจาวามีความซับซ้อนน้อยกว่าภาษา C++ ทำให้ใช้งานได้ง่ายกว่าและลดความผิดพลาดได้มากขึ้น
         ภาษาจาวามีการตรวจสอบข้อผิดพลาดทั้งตอน compile time และ runtime ทำให้ลดข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม และช่วยให้ debug โปรแกรมได้ง่าย
         ภาษาจาวาถูกออกแบบมาให้มีความปลอดภัยสูงตั้งแต่แรก ทำให้โปรแกรมที่เขียนขึ้นด้วยจาวามีความปลอดภัยมากกว่าโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น
         มี IDE, application server, และ library ต่าง ๆ มากมายสำหรับจาวาที่เราสามารถใช้งานได้โดยไม่ต้องเสียค่าใช้จ่าย ทำให้เราสามารถลดค่าใช้จ่ายที่ต้องเสียไปกับการซื้อ tool และ s/w ต่าง ๆ

ข้อเสียของ Java
         ทำงานได้ช้ากว่า native code (โปรแกรมที่ compile ให้อยู่ในรูปของภาษาเครื่อง) หรือโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น อย่างเช่น C หรือ C++ ทั้งนี้ก็เพราะว่าโปรแกรมที่เขียนขึ้นด้วยภาษาจาวาจะถูกแปลงเป็นภาษากลางก่อน แล้วเมื่อโปรแกรมทำงานคำสั่งของภาษากลางนี้จะถูกเปลี่ยนเป็นภาษาเครื่องอีกทีหนึ่ง ทีล่ะคำสั่ง (หรือกลุ่มของคำสั่ง) ณ runtime ทำให้ทำงานช้ากว่า native code ซึ่งอยู่ในรูปของภาษาเครื่องแล้วตั้งแต่ compile โปรแกรมที่ต้องการความเร็วในการทำงานจึงไม่นิยมเขียนด้วยจาวา
         tool ที่มีในการใช้พัฒนาโปรแกรมจาวามักไม่ค่อยเก่ง ทำให้หลายอย่างโปรแกรมเมอร์จะต้องเป็นคนทำเอง ทำให้ต้องเสียเวลาทำงานในส่วนที่ tool ทำไม่ได้ ถ้าเราดู tool ของ MS จะใช้งานได้ง่ายกว่า และพัฒนาได้เร็วกว่า (แต่เราต้องซื้อ tool ของ MS และก็ต้องรันบน platform ของ MS)

ลักษณะที่ดีของภาษา Java




ภาษา Java ออกแบบให้มีลักษณะที่ดี ดังต่อไปนี้
        1. ภาษา Java เป็นภาษาที่ง่ายในการเรียนรู้และใช้งาน โดยคำที่ว่าง่ายนี้ก็มาจากหลายๆ เหตุผล เช่น ภาษา Java มีคำสั่งและไวยากรณ์ที่คล้ายกับภาษา C และ C++ ผู้ที่เคยเขียนภาษาทั้งสองมาแล้ว จะสามารถเข้าใจภาษา Java ได้ง่ายหรือไม่ก็ใช้เวลาศึกษาไม่นานนัก

        2. โปรแกรมที่สร้างขึ้นด้วยภาษา Java จะไม่มีความผิดพลาดจากข้อบกพร่องของภาษา หรือโปรแกรมจะต้องไม่มีการล้มเหลวลงด้วยความผิดปกติเพียงเล็กน้อยที่ไม่เกี่ยวกับตรรกะของโปรแกรมเอง ด้วยการใช้วิธีการดังนี้
                2.1 ภาษา Java มีกลไก Exception Handing เพื่อให้โปรแกรมสามารถจัดการกับข้อผิดพลาดบางอย่างที่เกิดขึ้นในขณะที่โปรแกรมกำลังทำงาน เพื่อให้มีการทำงานต่อไปได้โดยไม่ต้องหยุดลงกลางครัน
                2.2 ภาษา Java ได้ตัดกลไกบางอย่างในภาษา C และ C++ ที่อาจจะทำให้เกิดความผิดพลาดได้หากใช้ไม่ระวัง เช่น Global Variables, คำสั่ง Goto และการอ้างถึง Address ของตัวแปร และการใช้ Pointers สำหรับอ่านหรือเขียนข้อมูลในหน่วยความจำโดยตรง
       3. จุดมุ่งหมายที่สำคัญของการพัฒนาภาษา Java คือ โปรแกรมที่เขียนด้วยภาษา Java จะสามารถทำงานบนระบบปฏิบัติการที่แตกต่างกันได้ (Platform Independent) โดยการทำงานของภาษา Java จะทำงานอยู่บน JVM (Java Virtual Machine)

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

แนวคิดเชิงวัตถุ (Object)



แนวคิดเชิงวัตถุ (Object)
         เป็นแนวคิดรูปแบบใหม่ที่นำมาใช้กันในปัจจุบัน เพื่อแก้ปัญหาดังกล่าวของการเขียนโปรแกรมแบบ Structure ถึงแม้รูปแบบการเขียนจะค่อนข้างยากและมีความซับซ้อน แต่จะส่งผลดีต่อการแก้ไขโปรแกรม
ในระยะยาว ซึ่งแนวคิดนี้จะแยกปัญหา หรือแยกระบบงานออกเป็นส่วนย่อยเช่นกัน เพื่อลดความซับซ้อนให้น้อยลง ส่วนย่อยหรือโปรแกรมย่อยที่ว่า เรียกว่า “Class” ซึ่งภาย Class จะสร้างตัวแทนขึ้นมาทำงานแทนตนเอง เรียกว่า “Object” ตัว Object นี้เองจะเป็นตัวที่เก็บข้อมูลต่าง ๆ รวมกันเอาไว้ให้เป็นวัตถุชิ้นเดียวกัน เพื่อให้ง่ายต่อการเรียกใช้งาน ง่ายต่อการแก้ไข (Modify) และง่ายต่อการนำกับมาใช้ใหม่ (Reuse) ของระบบในอนาคต

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

โปรแกรมภาษาจาวา
          จาวาพัฒนาจากแนวคิดการเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming:OOP) ซึ่งมีหลักการทำงานโดยอาศัยคลาส(Class) และอ็อบเจ็ค (Object) คลาสทำหน้าที่เป็นต้นแบบสำหรับจัดกลุ่ม (Group) อ็อบเจ็คเข้าไว้ด้วยกัน ส่วนอ็อบเจ็คเป็นตัวแปรชนิดหนึ่งของคลาสสร้างขึ้นเพื่อใช้เข้าถึงข้อมูลและเมธอด (Mothod) ภายในคลาส จาวายังสามารถจัดการกับโปรแกรมขนาดใหญ่ที่มีความซับซ้อนสูง รวมถึงมีความสามารถในการสืบทอดคลาส (Inheritance) โดยสามารถสืบทอดข้อมูลหรือคุณลักษณะทั้งหมดของคลาสแม่ (Super Class) สู่คลาสลูก(Sub Class) และคลาสลูกก็สามารถเขียนชุดคำสั่งพิเศษเพื่อเพิ่มเติมความสามารถได้
          นอกจากนี้ยังมีจุดเด่นในเรื่องของการเขียนโปรแกรมเพียงครั้งเดียวแล้วสามารถนำกลับมาใหม่ได้อีก (Reuseable) ทำให้ลดระยะเวลาในการเขียนโปรแกรม และลดการเขียนโค้ด (Code) ที่ซ้ำซ้อน
พร้อมกันนั้น สิ่งที่ทำให้จาวาแตกต่างจากภาษาเขียนโปรแกรมอื่น ๆ คือ ความสามารถของจาวาเวอชวลแมชชีน (Java Virtual Machine:JVM) ที่ทำหน้าที่เป็นตัวกลางในการแปลงไฟล์ดอทคลาส (.class) ให้สามารถนำไปใช้งานได้กับทุกแพลทฟอร์ม (Platform) โดยไม่ยึดติดอยู่กับระบบปฏิบัติการ เรียกได้ว่าเป็นการเขียนโปรแกรมเพียงครั้งเดียวและสามารถรัน (Run) ได้กับทุกระบบปฏิบัติการ(Multi-platform) ดังตัวอย่างในรูปที่ 1


รูปที่ 1 โครงสร้างการแปลโปรแกรม (Compile) ภาษาจาวา

         จากรูปที่ 1 เมื่อทำการเขียนโปรแกรมด้วยภาษาจาวาเป็นที่เรียบร้อยแล้ว จากนั้นสั่งบันทึกโปรแกรม(Save) ไฟล์ที่ได้จากการบันทึกจะมีส่วนขยายเป็นดอทจาวา (.java) เรียกไฟล์นี้ว่าไฟล์ต้นฉบับ โดยไฟล์นี้จะยังไม่สามารถทำงานได้ ต้องผ่านกระบวนการแปลภาษา (Compile) จากภาษาระดับสูง (High-level language) ให้เป็นภาษาเครื่อง โดยจะแปลโปรแกรมด้วยคำสั่งจาวาซี (javac) จากนั้นจะได้ไฟล์ที่มีส่วนขยายเป็นดอทคลาส (.class) ซึ่งจะเก็บข้อมูลในลักษณะไบต์โค้ด (Bytecode) กล่าวคือพร้อมใช้งานแต่จะไม่สามารถแก้ไขข้อมูลที่อยู่ในไฟล์นี้ได้ หากต้องการแก้ไขจะต้องย้อนกลับไปแก้ไขที่ไฟล์ต้นฉบับแล้วสั่งแปลโปรแกรมซ้ำอีกครั้ง และสามารถสั่งรัน (Run) โปรแกรมเพื่อแสดงผลลัพธ์โดยใช้คำสั่งจาวา (java) ในการแปลโปรแกรมนั้นจาวาจะทำการแปลสองรอบ (Double Compile) การแปลในรอบที่สองจะถูกกระทำจาวาเวอชวลแมชชีน (Java Virtual Machine:JVM) จะทำการแปลงไฟล์ที่มีส่วนขยายดอทคลาส (.class) ให้สามารถนำไฟล์นั้นไปทำงานได้กับทุก ๆ ระบบปฏิบัติการ ซึ่งภาษาเขียนโปรแกรมอื่นไม่สามารถทำได้

เทคโนโลยีจาวา (Java Technology)
       ได้จัดกลุ่มการทำงานออกเป็น 3 กลุ่ม ได้แก่
        1) J2SE (Standard Edition) สำหรับใช้เขียนโปรแกรมบนเครื่องคอมพิวเตอร์ส่วนบุคคล (Personal Computer:PC) และเครื่องสถานีงานวิศวกรรม (Work Station)
        2) J2EE (Enterprise Edition) สำหรับทำงานบนเครื่องแม่ข่าย (Server) และรองรับการทำงานของ เซิร์ฟเลท (Servlets) เจเอสพี (JSP) และเอ็กซ์เอ็มแอล ( XML)
        3) J2ME (Micro Edition) สำหรับเขียนโปรแกรมบนอุปกรณ์ไร้สายที่มีหน่วยความจำจำกัด เช่น โทรศัพท์มือถือ(Mobile Phone) เครื่องปาล์ม(Palm) หรือเครื่องพีดีเอ (PDA)
ซึ่งการเริ่มศึกษาภาษาจาวานั้น แนะนำให้เริ่มจาก J2SE จากนั้นก็จะสามารถเรียนรู้ J2EE และ J2ME ได้ไม่ยากนัก นอกจากนี้การเลือกเขียนโปรแกรมด้วยภาษาจาวายังมีความสอดคล้องกับแนวทางการพัฒนาซอฟต์แวร์ในปัจจุบันอีกด้วย

แนวทางการพัฒนาซอฟต์แวร์
          จากที่กล่าวมาแล้วข้างต้น ว่าการเขียนโปรแกรมด้วยจาวานั้นใช้หลักการและแนวคิดเชิงวัตถุ(Object Oriented Programming:OOP) เป็นแนวคิดที่ใช้ในการพัฒนาซอฟต์แวร์ในปัจจุบัน มีความแตกต่างจากแนวคิดการเขียนโปรแกรมในอดีตที่ใช้แนวคิดของการโปรแกรมแบบโครงสร้าง (Structure programming) เรียกอีกชื่อหนึ่งว่า การเขียนโปรแกรมเชิงกระบวนการ (Procedure programming) แนวคิดแบบเดิมนี้จะส่งผลเสียต่อการพัฒนาโปรแกรมเมื่อระบบงานมีขนาดใหญ่และซับซ้อนมากขึ้น และไม่รองรับความสามารถของการนำโค้ดของระบบงานเดิมกลับมาใช้พัฒนาใหม่ (Reuseable) เมื่อเขียนชุดคำสั่งให้ขยายความสามารถเพิ่มเติม
จากข้อจำกัดของแนวคิดดังกล่าว ส่งผลให้แนวคิดของการเขียนโปรแกรมแบบเดิมสิ้นสุดลง และถูกแทนที่ด้วยแนวคิดแบบใหม่ที่เรียกว่า “การเขียนโปรแกรมเชิงวัตถุ” และเพื่อให้สอดคล้องกับแนวคิดแบบใหม่นี้ จึงได้มีการปรับเปลี่ยนวิธีในการออกแบบระบบสารสนเทศซึ่งแต่เดิม การออกแบบระบบทางด้านตรรกะ (Logic) จะใช้แผนภาพบริบท (Context Diagram) ในการแสดงภาพรวมการทำงานของระบบสารสนเทศดังกล่าว และใช้แผนภาพกระแสข้อมูล (Data Flow Diagrm:DFD) เพื่อแสดงการทำงานในกระบวนการย่อยในแต่ละส่วนของระบบ ซึ่งการใช้แผนภาพบริบทกับแผนภาพกระแสข้อมูลนี้อาจส่งผลเสียในส่วนที่ไม่สามารถทำให้นักพัฒนามองภาพฟังก์ชั่น (Function) การทำงานของระบบได้ชัดเจนอย่างที่ควรจะเป็น
สำหรับการเขียนโปรแกรมเชิงวัตถุนี้จะใช้หลักการออกแบบที่แตกต่างไปจากแบบเดิม เรียกว่า “การออกแบบโปรแกรมเชิงวัตถุ” ซึ่งยังคงใช้กระบวนการวิเคราะห์ระบบตามแบบของวัฎจักรการพัฒนาระบบ (System Development Life Cycle:SDLC) ที่ประกอบด้วย 4 ขั้นตอน ได้
         1) การวางแผน (Planing)
         2) การวิเคราะห์ระบบ (Analysis)
         3) การออกแบบระบบ (Design) และ
         4) การพัฒนาและนำระบบไปใช้งาน (Implementation) แต่กระบวนการออกแบบนั้นจะเปลี่ยนไปใช้วิธีการของยูเอ็มแอล (Unified Modeling Language:UML) ซึ่ง เป็นภาษาสัญลักษณ์รูปภาพมาตรฐานที่ใช้สำหรับสร้างแบบจำลองเชิงวัตถุ แทนที่การใช้แผนภาพบริบทกับแผนภาพกระแสข้อมูล ซึ่ง UML มีผู้คิดค้นร่วมกันหลายคนได้แก่ เกรดี้ บูช (Grady Booch) เจมส์ รัมบักช์(James Raumbaugh) และไอวา เจคอบสัน ( lvar Jacobson) โดยแผนภาพ (Diagram) ที่ใช้ในการออกแบบนั้นประกอบด้วย (Alan Dennis,Barbara Haley Wixom and Tegarden , 2001)
1) ยูสเคสไดอะแกรม (Use-Case diagram) เป็นแผนภาพที่แสดงความต้องการของผู้ใช้(User) และบรรยายความสามารถของระบบ ซึ่งแสดงภาพตัวอย่างของยูสเคสไดอะแกรมของระบบจัดทำใบนัดหมายระหว่างคนไข้กับแพทย์ ดังรูปที่ 2 2)คลาสไดอะแกรม (Class diagram) เป็นแผนภาพที่แสดงความสัมพันธ์ระหว่างคลาสกับอ๊อบเจ็ค 3) แอคทิวิตี้ไดอะแกรม (Activity diagram) เป็นแผนภาพที่แสดงขั้นตอนการทำงานของยูสเคสและกิจกรรมย่อยที่เกิดขึ้นในแต่ละขั้นตอน 4)สเตทชาร์ทไดอะแกรม (Statechart diagram) เป็นแผนภาพที่แสดงการเปลี่ยนแปลงสถานะต่าง ๆ ของอ๊อบเจ็ค 5)ซีเควนซ์ไดอะแกรม (Sequence diagram) เป็นแผนภาพที่ใช้บรรยายการทำงานระหว่างอ๊อบเจ็คย่อยของทุก ๆ ยูสเคส เพื่อให้ทราบว่าภายใน ยูสเคสนั้นมีเมธอด (Method) ใดบ้างและแสดงลำดับเวลาในการทำงาน 6) คะแลบบะเรชันไดอะแกรม (Collaboration diagram) จะคล้ายกับซีเควนซ์ไดอะแกรมแต่ไม่แสดงลำดับของเวลา แต่จะบอกลำดับการทำงานของแต่ละเมธอด (Method) และ 7)ดีพลอยเมนท์ไดอะแกรม
(Deployment diagram) ใช้ออกแบบแผนภาพที่เกี่ยวข้องกับฮาร์ดแวร์หรือทางด้านสถาปัตยกรรมของระบบ ทั้งด้านโครงสร้างและด้านเครือข่าย (Network Topology)ซึ่งในที่นี้อาจกล่าวได้ว่ายูสเคสไดอะแกรมและคลาสไดอะแกรม เป็นแผนภาพที่มีความสำคัญ จะขาดไม่ได้สำหรับการออกแบบโปรแกรมเชิงวัตถุ แต่ก็ไม่ได้หมายความว่าในการออกแบบระบบนั้น นักวิเคราะห์หรือนักพัฒนาจะวาดแผนภาพเพียง 2 แผนภาพนี้เท่านั้น ยังคงจำเป็นต้องวาดแผนภาพอื่นเพื่ออธิบายการทำงานของโปรแกรมและระบบควบคู่ไปด้วย



รูปที่ 2 ยูสเคสไดอะแกรมของระบบจัดทำใบนัดหมายคนไข้ 


          จากรูปที่ 2 แสดงแผนภาพการทำงานของการจัดทำใบนัดหมาย ซึ่งมีบุคคลที่เกี่ยวข้องกับระบบสามคนได้แก่ คนไข้ (Patient) แพทย์ (Doctor) และคนจัดทำใบนัดหมาย (Management) ในการทำงานของระบบนั้นได้จำแนกสถานะของคนไข้ออกเป็นสองสถานะ ได้แก่ คนไข้เก่า(Old patient) และคนไข้ใหม่ (New patient) ข้อมูลของคนไข้เหล่านี้จะเกี่ยวข้องกับยูสเคสในการสร้างใบนัดหมาย (Make appointment) โดยยูสเคสนี้ประกอบด้วยการทำงานสองส่วนย่อยได้แก่ ยูสเคสจัดทำใบนัดหมายสำหรับคนไข้เก่า (Make old patient appt) และทำใบนัดหมายสำหรับคนไข้ใหม่ (Make new patient appt) ดังนั้นเมื่อมีการนัดหมายเกิดขึ้นระหว่างแพทย์กับคนไข้ใหม่ ข้อมูลของคนไข้ใหม่จะต้องถูกส่งเข้ามาทำงานในกระบวนการของยูสเคสทำใบนัดหมายสำหรับคนไข้ใหม่ (Make new patient appt) ก่อน โดยคนไข้ทุกคนมีสิทธิ์เป็นคนไข้ใหม่ได้เพียงหนึ่งครั้งเท่านั้น จากนั้นก็จะเปลี่ยนสถานะของตนเองกลายเป็นคนไข้เก่า ส่วนคนไข้เก่าเมื่อมีการนัดหมายเกิดขึ้นก็จะส่งข้อมูลไปทำงานในกระบวนการของการจัดทำใบนัดหมายสำหรับคนไข้เก่า (Make old patient appt) โดยคนไข้เก่าสามารถมีการนัดหมายกับแพทย์ได้หลายครั้ง นอกจากนี้พบว่าในยูสเคสจัดทำใบนัดหมายสำหรับคนไข้เก่า (Make old patient appt) ยังได้แยกการทำงานย่อยออกไปอีก กล่าวคือ มีการจัดเรียงลำดับเวลาในการนัดหมายของคนไข้แต่ละรายในยูสเคสของการจัดลำดับรายการนัดหมาย (Make payment arrangements) ส่วน ยูสเคสสร้างใบนัดหมาย (Make appointment) ก็ได้แยกการทำงานย่อยออกไปอีกเพื่อให้สามารถปรับปรุงข้อมูลข่าวสารการนัดหมายของคนไข้ได้ เช่น การยกเลิกการนัดหมาย การเปลี่ยนแปลงวันและเวลานัดหมาย เป็นต้น โดยทำงานผ่านยูสเคสย่อยที่ชื่อว่าปรับปรุงข่าวสารคนไข้ (Update patient information)
คนจัดทำใบนัดหมาย (Management) จะมีหน้าที่รวบรวมข้อมูลข่าวสารเพื่อใช้ดำเนินการในการสร้างตารางนัดหมาย (Produce schedule information) จากนั้นนำข้อมูลในกระบวนการนี้ไปสร้างเป็นตารางการนัดหมาย (Manage schedule) ซึ่งก่อนที่จะสร้างเป็นตารางการนัดหมายได้นั้นต้องใช้ข้อมูลของแพทย์ (Record avilability) เป็นองค์ประกอบด้วยและแพทย์ (Doctor) ก็เป็นองค์ประกอบหนึ่งของยูสเคสไดอะแกรมที่สามารถเข้าใช้งานตารางการนัดหมายได้
          ดังนั้น เมื่อเลือกใช้แนวทางการออกแบบเชิงวัตถุเนื่องจากทำการเขียนด้วยโปรแกรมที่มีลักษณะเป็นการโปรแกรมเชิงวัตถุซึ่งสอดคล้องกับแนวทางการพัฒนาซอฟแวร์ในปัจจุบันอย่างเช่นภาษาจาวา ก็จำเป็นต้องเลือกเครื่องมือ (Tools) ที่มีความสามารถรองรับการทำงานดังกล่าว ในปัจจุบันพบว่าโปรแกรมแรชชันนัลโรซ (Rational Rose) ก็เป็นอีกหนึ่งเครื่องมือที่ใช้ออกแบบการโปรแกรมเชิงวัตถุ และเป็นโปรแกรมที่ได้รับความนิยมเป็นอย่างมาก

แนวคิดเกี่ยวกับการโปรแกรมเชิงวัตถุ (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)



         คือ การมองภาพสิ่งต่าง ๆ เป็นวัตถุเป้าหมาย ภายใน 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: ปุ่มคำสั่ง” ประกอบด้วย

ตัวดำเนินการ (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 ลูกเพิ่มเติมให้กับตัวเอง
“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 รายวิชา” ในเรื่องของการลงทะเบียนเรียน

วันจันทร์ที่ 24 มิถุนายน พ.ศ. 2556

ความหมายของการเขียนโปรแกรมเชิงวัตถุ (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 ยังมีหลักการและความสามารถอีกเช่น วัตถุ

ประวัติความเป็นมาของภาษาจาวา



          ในปี ค.ศ. 1991 ทีมวิศวกรของ Sun Microsystems นำทีมโดย James Gosling ได้พัฒนาโปรเจ็คขึ้นมาชิ้นหนึ่งชื่อว่า "Green Project" เพื่อทำการวิจัยพัฒนาและสร้างอุปกรณ์อิเล็กทรอนิกส์ที่ชาญฉลาด สามารถควบคุมการทำงานได้ด้วยรีโมทคอนโทรล

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

          สิ่งสำคัญอีกข้อหนึ่งคือภาษาที่สร้างขึ้นนี้จะต้องเป็นภาษาที่ไม่ยึดติดกับอุปกรณ์ฮาร์ดแวร์เพียงแบบใดแบบหนึ่งด้วย (เรียกว่า platform-independent)

          ต่อมาภาษานี้ก็ได้รับการพัฒนาจนออกมาเป็นผลสำเร็จ พวกเขาได้ตั้งชื่อภาษานี้ว่า "Oak" แต่หลังจากได้ทำการตรวจสอบพบว่ามีผู้จดทะเบียนชื่อ "Oak" เป็นภาษาโปรแกรม (programming language) แล้ว พวกเขาจึงได้เปลี่ยนชื่อจาก "Oak" มาเป็น "Java" แทน

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

          ต่อมาในปี ค.ศ. 1994 Bill Joy ได้เสนอความคิดว่า "ทำไมจึงไม่นำภาษาจาวามาใช้งานบนอินเตอร์เน็ต" นี้เป็นจุดเริ่มต้นที่ทำให้เกิดความเปลี่ยนแปลงขึ้น เพราะต่อมาได้มีการพัฒนา "WebRunner" ขึ้น (ภายหลังเปลี่ยนชื่อเป็น "HotJava") ซึ่งเป็นโปรแกรมเว็บบราวเซอร์ที่มีความสามารถมากกว่าการเป็นได้แค่ตัวแสดงผลข้อมูล โดย WebRunner สามารถเรียกโปรแกรมที่เขียนด้วยภาษาจาวา คือ Java applet ให้มาทำงานใหเว็บเพจได้ ซึ่งการเปิดตัว Netscape browser ด้วย นับจากนั้นมาจาวาก็ได้รับความนิยมเพิ่มมากขึ้นเรื่อยๆจนถึงปัจจุบัน

เครดิตประวัติ java หนังสือคู่มือเขียนโปรแกรม ภาษา JAVA ของ อรพิน ประวัติริสุทธิ์

แนะนำภาษาจาวา


สวัสดีครับ ก่อนจะฝึกเรียนรู้ด้วยภาษาจาวา ผมขออธิบายอะไรซักหน่อยนะครับ

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

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