Computer Programming 1
-
Upload
saranyu-srisrontong -
Category
Education
-
view
48 -
download
0
Transcript of Computer Programming 1
เบื้��องต้�นเกี่��ยวกี่�บื้ภาษาจาวา
คำ��จำ��กั�ดคำว�มของโปรแกัรม ชุ�ดคำ��สั่��งที่��ผู้��ใชุ�ง�นเข�ยนข��นเพื่!�อให้�เคำร!�องคำ��นวณ
(Computer) ที่��ง�นต�มลำ��ด�บข��นตอนที่��ผู้��ใชุ�ต�องกั�ร
ชุ�ดคำ��สั่��งห้ร!อภ�ษ�เข�ยนที่��ใกัลำ�เคำ�ยงกั�บกั�รที่��ง�นของ เคำร!�องคำอมพื่*วเตอร+ม�กัที่��สั่�ด คำ!อ ภ�ษ�เคำร!�อง (Machine Language)
ภ�ษ�ระด�บสั่�ง (High Level Language) ที่��ใกัลำ�เคำ�ยงกั�บภ�ษ�ที่��มน�ษย+ใชุ�ในชุ�ว*ตประจำ��ว�น ได�แกั. Assembly, COBOL, Pascal, C, C++, Java ฯลำฯ ซึ่��งในแต.ลำะภ�ษ�ต�องม�ต�วแปลำภ�ษ� (Translator) เพื่!�อแปลำงชุ�ดคำ��สั่��งเป1นภ�ษ�เคำร!�องอ�กัรอบห้น��ง
ต�วแปลำภ�ษ�ด�งกัลำ.�วม� 2 สั่องประเภที่ คำ!อ คำอมไพื่เลำอร+ (Compiler) แลำะอ*นเที่อร+พื่ร�เตอร+ (Interpreter)
พื่�ฒน�กั�รของภ�ษ�จำ�ว� ปลำ�ยป3 คำ.ศ. 1995 ผู้��คำ*ดต�นแบบ คำ!อ James Gosling แลำะคำณะ
จำ�กับร*ษ�ที่ Sun Microsystems ว�ตถุ�ประสั่งคำ+เด*ม คำ!อ Oak สั่��ห้ร�บกั�รเข�ยน
โปรแกัรมเพื่!�อฝั7งต�วในอ�ปกัรณ+อ*เลำ8กัที่รอน*กัสั่+ ผู้ลำ คำ!อ ภ�ษ�สั่��ห้ร�บเข�ยนโปรแกัรม
(Application Programming) ซึ่��งเป1นลำ�กัษณะของโปรแกัรมเชุ*งว�ตถุ� (Object Oriented Programming) ซึ่��งสั่�ม�รถุใชุ�ง�นบนเว8บได�ด�วย
Java 2 SDK Standard Edition ห้ร!อ J2SDK ประกัอบด�วย features ต.�ง ๆ Class Libraries ห้ร!อที่��เร�ยกัว.� Application Programmer Interfaces ห้ร!อ APIs
ภ�ษ�เชุ*งกัระบวนคำ��สั่��ง (Procedural
Programming) กั��ห้นดต�วแปร (Variable) เพื่!�อจำองเน!�อที่��ใน
ห้น.วยคำว�มจำ��แลำะเตร�ยมเน!�อที่��ในกั�รจำ�ดเกั8บข�อม�ลำ
เข�ยนข��นตอนต�มลำ��ด�บ เพื่!�อสั่��งให้�คำอมพื่*วเตอร+ที่��ง�นต�มที่��กั��ห้นด ซึ่��งลำ��ด�บในกั�รที่��ง�นจำะม�กั�รจำ�ดห้มวดห้ม�.ในกั�รที่��ง�น เพื่!�อให้�ได�ผู้ลำลำ�พื่ธ์+ที่��ต�องกั�รน��ม�รวมในห้ม�.เด�ยวกั�น โดยอ�จำสั่.งคำ.�ต�วแปรไปให้�แลำะสั่.งข�อม�ลำคำ!นเม!�อกั�รคำ��นวณเร�ยบร�อย
กั�รเข�ยนโปรแกัรมเชุ*งว�ตถุ� (Objected Oriented
Programming) ผู้��พื่�ฒน�ต�องม�ว*สั่�ยที่�ศน+เชุ*งว�ตถุ� เพื่!�อห้�คำว�มต.�ง
ของว�ตถุ�แต.ลำะอย.�งห้ร!อคำ�ณลำ�กัษณะประจำ�� (Attribute) ออกัม� ขณะเด�ยวกั�นต�องพื่*จำ�รณ�พื่ฤต*กัรรม (Method) ของว�ตถุ� แลำะน��ม�เข�ยนเป1นคำลำ�สั่ (Class) ด�งน��น คำลำ�สั่จำะเป1นแม.แบบห้ร!อพื่*มพื่+เข�ยวในกั�รสั่ร��งว�ตถุ� (Object) ห้ร!อ Instance ให้�เกั*ดข��นแลำะม�ชุ�ว*ตในระบบ โดย Object ที่��สั่ร��งจำะม�ร�ยลำะเอ�ยดที่��ต.�งกั�นไป
ต�วอย.�ง คำลำ�สั่ของรถุ ต�วแปรห้ร!อคำ�ณลำ�กัษณะที่��ใชุ�อธ์*บ�ยคำว�มต.�งของรถุแต.ลำะคำ�น คำ!อ ย��ห้�อ เชุ.น โตโยต��, ฮอนด��, น*สั่สั่�น เป1นต�น สั่�ของรถุ ห้ร!อจำ��นวนคำนที่��สั่�ม�รถุโดยสั่�รได� กั8เป1นอ�กัต�วแปรห้น��งที่��ใชุ�อธ์*บ�ยคำว�มต.�งของรถุ เป1นต�น สั่.วนพื่ฤต*กัรรมของรถุ เชุ.น กั�รข�บเคำลำ!�อนไปข��งห้น�� ถุอยห้ลำ�ง ห้ร!อห้ย�ด เป1นต�น จำะถุ�กัรวบรวมเป1นเสั่ม!อนพื่*มพื่+เข�ยวในกั�รผู้ลำ*ตรถุ โดยรถุแต.ลำะคำ�นที่��ผู้ลำ*ตออกัม�เร�ยกัว.�เป1น Instance ซึ่��งจำะม�ลำ�กัษณะประจำ�� (Attribute) แลำะพื่ฤต*กัรรม (Method)
ห้ลำ�กัที่��สั่น�บสั่น�นกั�รโปรแกัรมเชุ*งว�ตถุ�
คำว�มสั่�ม�รถุในกั�รสั่!บที่อด (Inheritance) เป1นกั�รสั่!บที่อดคำ�ณสั่มบ�ต*ของคำลำ�สั่ โดยสั่ร��งคำลำ�สั่ห้ลำ�กัซึ่��งม�คำ�ณสั่มบ�ต*ต.�ง ๆ โดยรวมที่��คำลำ�สั่อ!�นจำ��เป1นต�องม� จำ�กัน��นจำ�งสั่ร��งคำลำ�สั่อ!�นข��นม� เพื่!�อร�บกั�รถุ.�ยที่อดคำ�ณสั่มบ�ต*ที่��งห้มดจำ�กัคำลำ�สั่ห้ลำ�กัโดยอ�ตโนม�ต* โดย ไม.ต�องสั่ร��งข��นให้ม. แลำะสั่�ม�รถุสั่ร��งคำ�ณสั่มบ�ต*อ!�น ๆ นอกัจำ�กัคำลำ�สั่ห้ลำ�กัข��นได�
คำว�มสั่�ม�รถุในกั�รเกั8บซึ่.อน (Encapsulation) เป1นกั�รซึ่.อนสั่.วนของกั�รที่��ง�นภ�ยในที่��ไม.เกั��ยวข�องกั�บภ�ยนอกัไว�โดยผู้.�นคำลำ�สั่ เพื่!�อไม.ให้�ผู้��น��คำลำ�สั่ไปใชุ�เห้8น ห้ร!อที่ร�บร�ยลำะเอ�ยดข��นตอนกั�รที่��ง�นของคำลำ�สั่ เพื่!�อไม.ให้�ม�กั�รแกั�ไขเปลำ��ยนแปลำงสั่.วนที่��ซึ่.อนไว� ผู้��น��คำลำ�สั่ไปใชุ�จำะด�ดแปลำงได�เฉพื่�ะสั่.วนที่��อน�ญ�ตเที่.�น��น
Superclass
attribute
method()
Subclass
extends
Quadruped+ food+ location+ eat()+ sleep()+ roar()
Dog Cat Tiger
extends
คำว�มสั่�ม�รถุในกั�รแปลำงร.�ง (Polymorphism) :- ไม.จำ��เป1นต�องสั่!บที่อดคำ�ณสั่มบ�ต*ที่�กัอย.�งเสั่มอไป เน!�องจำ�กักั�รแกั�ไขลำ��ด�บกั�รที่��ง�นของฟั7งกั+ชุ�นเด*ม ที่��ให้�เสั่�ยเวลำ�ในกั�รต�มแกั�ไข ที่�งที่��ด� คำ!อ อน�ญ�ตให้�ม�กั�รเข�ยนชุ�ดคำ��สั่��งให้ม.ภ�ยใต�ชุ!�อฟั7งกั+ชุ�นเด*มที่��ม� ต�วอย.�งเชุ.น กั�ร Save To File ของ Memo จำะได� Text File ที่��เกั8บข�อคำว�มน��น ขณะที่�� Save To File ของ Image จำะได�ไฟัลำ+ร�ปภ�พื่
คำว�มสั่�ม�รถุในกั�รจำ�ดโคำรงสั่ร��งแบบเชุ*งน�ม (Abstract) ข�อม�ลำแบบเชุ*งน�ม คำ!อ ข�อม�ลำห้ร!อกัระบวนกั�รที่��ย�งไม.เกั*ดข��น กั�รสั่ร��งคำลำ�สั่แบบเชุ*งน�มเป1นว*ธ์�ห้น��งที่��ชุ.วยไม.ให้�กั�รพื่�ฒน�ระบบง�นต�องห้ย�ดชุะง�กั เน!�องจำ�กัข�อม�ลำอ�จำจำะย�งไม.เกั*ด ห้ร!อย�งไม.สั่�ม�รถุอธ์*บ�ยได�ว.� ข� �นตอนกั�รที่��ง�นจำะเป1นอย.�งไร
ข�อด�ของกั�รพื่�ฒน�โปรแกัรมด�วยจำ�ว�
ง.�ย เน!�องจำ�กัเลำ�ยนแบบภ�ษ� C/C++ ไม.ม�คำ��สั่��ง GOTO แลำะ pointer
เป1นภ�ษ�เชุ*งว�ตถุ�ที่��สั่มบ�รณ+ ม�กั�รป@องกั�นกั�รผู้*ดพื่ลำ�ด (Robust) กั�รกั��จำ�ดสั่*�งที่��
ไม.ใชุ� (Garbage Collection) แบบอ�ตโนม�ต* แลำะกั�รจำ�ดกั�รคำว�มผู้*ดพื่ลำ�ด (Exception Handling) แบบอ�ตโนม�ต*
ม�คำว�มปลำอดภ�ยในกั�รที่��จำะประมวลำผู้ลำ (Secure) โดยไม.ที่��ลำ�ยที่ร�พื่ย�กัรของเคำร!�อง
Multithread ใน java.lang :- คำว�มสั่�ม�รถุในกั�รประมวลำผู้ลำห้ลำ�ยง�นพื่ร�อมกั�น
Architecture neutral and portable :- สั่�ม�รถุเคำลำ!�อนย��ยได�ง.�ย รวมที่��งใชุ�ง�นในสั่ภ�วะแวดลำ�อมที่��ต.�งกั�น แลำะใชุ�กั�บคำอมพื่*วเตอร+ได�ที่�กัระบบ (Multi Platform) โดยไม.ต�องปร�บแต.ง
กั�รเชุ!�อมโยงแบบพื่ลำว�ต (Dynamic Link) แลำะกั�รประมวลำผู้ลำแบบกัระจำ�ย (Distributed) ในระบบเคำร!อข.�ย
Java Platform
Hardware
Java Virtual Machine(Java VM)
Java API(Java Application Programming
Interface)
โปรแกัรมภ�ษ�จำ�ว�
ข�อกั��ห้นดเบ!�องต�นในกั�รเข�ยนโปรแกัรม
แต.ลำะประโยคำต�องจำบด�วยเคำร!�องห้ม�ย ; เสั่มอ สั่�ญลำ�กัษณ+อ!�นที่��ใชุ�แยกัข�อคำว�มห้ร!อคำ��สั่��งอ�กั เชุ.น
( ) ใชุ�สั่��ห้ร�บแยกัลำ��ด�บในกั�รประมวลำผู้ลำ { } ใชุ�สั่��ห้ร�บแยกัชุ�ดคำ��สั่��ง ห้ร!อรวมชุ�ดคำ��สั่��ง
เป1นบลำ8อกั , ให้�คำว�มต.อเน!�องในกั�รที่��ง�น เชุ.น กั�ร
กั��ห้นดต�วแปรที่��ม�ประเภที่ข�อม�ลำแบบเด�ยวกั�น . ใชุ�ในกั�รแยกั package กั�บ class ห้ร!อ
object กั�บ method
ห้ลำ�กัเกัณฑ์+กั�รต��งชุ!�อต.�ง ๆ เชุ.น ชุ!�อ class, ชุ!�อ data, ชุ!�อ method แลำะชุ!�อต�วแปร ประกัอบด�วยต�วอ�กัษรภ�ษ�อ�งกัฤษ ต�วเลำข แลำะ
สั่�ญลำ�กัษณ+ _ ห้ร!อ $ เชุ.น age, int2float, _name$ เป1นต�น
คำว�มย�วไม.คำวรเกั*น 65535 ต�วอ�กัษร ไม.คำวรใชุ�ต�วเลำขเป1นต�วแรกั เชุ.น 101database,
2name ไม.คำวรใชุ�ชุ.องว.�ง (spaces) ห้ร!อ . (periods) ต�วอ�กัษรต�วพื่*มพื่+เลำ8กัแลำะต�วพื่*มพื่+ให้ญ.ถุ!อว.�ต.�งกั�น
เชุ.น Count, count แลำะ CoUnT ถุ!อว.�เป1นคำนลำะชุ!�อ
ต�องไม.ตรงกั�บคำ��ศ�พื่ที่+สั่งวน (Key Word) ในภ�ษ�จำ�ว�
ชุ!�อ class คำวรข��นต�นด�วยต�วพื่*มพื่+ให้ญ. สั่.วนที่��เห้ลำ!อเป1นต�วเลำ8กั
ชุ!�อ data ห้ร!อต�วแปรคำวรเป1นต�วพื่*มพื่+เลำ8กัที่��งห้มด ชุ!�อคำ.�คำงที่��คำวรเป1นต�วพื่*มพื่+ให้ญ.ที่��งห้มด ชุ!�อ method คำ��แรกัคำวรเป1นต�วเลำ8กัที่��งห้มด คำ��ถุ�ด
ไปต�วแรกัคำวรเป1นต�วพื่*มพื่+ให้ญ. ที่��เห้ลำ!อจำ�งเป1นต�วเลำ8กั เชุ.น setCount, testFirst เป1นต�น
คำ��ศ�พื่ที่+สั่งวน (Key Word) ในภ�ษ�จำ�ว�
abstract
boolean
break byte case
catch char class const continue
default
do double else extendsfinal finally float for goto
if implements
import instanceof
int
interface
long native new package
private
protected
public return short
static super switch synchronized
this
throw throws transient
try void
volatile
while
กั�รเข�ยนห้ม�ยเห้ต� (Comment) สั่�ม�รถุที่��ได� 3 ร�ปแบบ คำ!อ
//single line comment /* multiple line comments …*/ /** This is a javadoc comment*/
โปรแกัรมที่��สั่ร��งจำ�กัจำ�ว�ต�องสั่�ม�รถุสั่ร��งได�อย.�งน�อยห้น��งคำลำ�สั่โดยม�ร�ปแบบโคำรงสั่ร��งด�งน��
[<access_specifier>] class <class_name> { //data members
//methods } access_specifier :- ระด�บกั�รเข��ถุ�งข�อม�ลำ เชุ.น
public แลำะ private public ห้ม�ยถุ�ง ระด�บกั�รเข��ถุ�งข�อม�ลำที่��ไม.ม�ข�อจำ��กั�ด
ใดๆ private ห้ม�ยถุ�ง ระด�บกั�รเข��ถุ�งข�อม�ลำสั่��ห้ร�บกั�รใชุ�
ง�นในคำลำ�สั่ ในห้น��งโปรแกัรมต�องม�เพื่�ยงห้น��งคำลำ�สั่ที่��ม�ชุ!�อเด�ยวกั�บ
โปรแกัรมแลำะต�องเป1นชุน*ด public เสั่มอ
data members เป1นสั่.วนประกัอบห้น��งของคำลำ�สั่ ใชุ�สั่��ห้ร�บกั��ห้นดชุ!�อแลำะชุน*ดของต�วแปรที่��ใชุ�สั่��ห้ร�บเกั8บข�อม�ลำ โดยม�ร�ปแบบด�งน��
[<access_specifier>] [<modifier>] <datatype> <variable_name>
modifier เป1นกั�รกั��ห้นดคำ�ณลำ�กัษณะพื่*เศษในกั�รใชุ�ง�น ต�วแปรแลำะ method เชุ.น static แลำะ final
static ห้�กั Data ใดน��ห้น��ด�วยคำ��ศ�พื่ที่+สั่งวน static แลำ�ว Data น��น จำะถุ�กัโห้ลำดลำงในห้น.วยคำว�มจำ��แลำะพื่ร�อมใชุ�ง�นที่�นที่� เม!�อม�กั�รอ��งถุ�งต�มข�อกั��ห้นดของระด�บกั�รเข��ถุ�ง (Accessibility)
final ห้�กั Data ใดน��ห้น��ด�วยคำ��ศ�พื่ที่+สั่งวน final แลำ�ว Data น��นใชุ�สั่��ห้ร�บเกั8บข�อม�ลำคำ.�คำงที่�� (Constant) ซึ่��งไม.สั่�ม�รถุเปลำ��ยนคำ.�ได�
methods ม�ร�ปแบบด�งน�� [<access_specifier>] [<modifier>] <
return_type > <method_name> ([argument_list]){ //Statements }
return_type :- ชุน*ดของข�อม�ลำที่��ถุ�กัสั่.งคำ!นห้ลำ�งสั่*�นสั่�ดกั�รที่��ง�นของ method
argument_list :- ชุ.องที่�งในกั�รผู้.�นข�อม�ลำเพื่!�อสั่.งให้� method ใชุ�ในกั�รที่��ง�น
Statement :- คำ��สั่��งคำวบคำ�มกั�รที่��ง�นของน*พื่จำน+ เพื่!�อกั��ห้นดห้ลำ�กักั�รแลำะว*ธ์�กั�รประมวลำผู้ลำภ�ยใน method
ในห้น��งโปรแกัรมจำะต�องม� Method ที่��ชุ!�อ main เสั่มอ โดย Method main จำะเป1น Method แรกัที่��โปรแกัรมเร�ยกัใชุ� ซึ่��งในห้น��งโปรแกัรมจำะต�องม�เพื่�ยง 1 main Method เที่.�น��น ซึ่��งจำะต�องม�คำ.� Accessibility เป1น static เสั่มอ แลำะเน!�องจำ�กัไม.ม�กั�รสั่.งคำ.�กัลำ�บ จำ�งใชุ� Accessibility void ร.วมด�วยเสั่มอ
ที่��ยชุ!�อของ Method ต�องต�มด�วยเคำร!�องห้ม�ย ( ) ห้�กัไม.ม�กั�รสั่.งคำ.�พื่�ร�ม*เตอร+ใดไปด�วย ห้�กัม�กั�รสั่.งคำ.� จำะต�องอย�.ในร�ปแบบใดแบบห้น��งเสั่มอ เชุ.น (String args[ ]) ห้ร!อ (String[ ] args)
กั�รแสั่ดงผู้ลำที่�งจำอภ�พื่สั่�ม�รถุที่��ด�วย method ที่��ชุ!�อว.� println ซึ่��งอย�.ใน System.out โดยคำ��สั่��งน��ต�องกั�รข�อม�ลำที่��เป1น String เพื่!�อน��ไปแสั่ดงบนจำอภ�พื่ แต.ที่��งน��อ�จำสั่.งข�อม�ลำที่��เป1น Integer ร.วมด�วยได�โดยใชุ�เคำร!�องห้ม�ย + ข�อม�ลำที่��งห้มดจำะถุ�กัแปลำงเป1น String โดยอ�ตโนม�ต*
ต�วอย.�งโปรแกัรม
โปรแกัรมที่��เข�ยนแบบ Applet ต�องม�กั�รเพื่*�มคำลำ�สั่ต.�ง ๆ โดยเฉพื่�ะ java.applet.* แลำะ java.awt.Graphics
Package ห้ร!อ Java Class Library เป1นที่��เกั8บรวบรวม Class ต.�ง ๆ แต.ลำะ Package จำะถุ�กัเกั8บแยกัไว�ในแต.ลำะ Directory แลำะแต.ลำะ Package จำะเกั8บ Class ต.�ง ๆ แยกัไว�ในแต.ลำะ Directory เชุ.นเด�ยวกั�น ในแต.ลำะ Class จำะม� methods ให้�เลำ!อกัน��ม�ใชุ�ให้�เห้ม�ะกั�บง�นที่��ต�องกั�รโดยไม.ต�องเข�ยนข��นม�เอง
Class ใน Package ห้น��งสั่�ม�รถุเร�ยกัใชุ� Class อ!�นใน Package เด�ยวกั�นได� แต.จำะเร�ยกัใชุ� Class ที่��อย�.ต.�ง Package กั�นได�ห้ร!อไม.ข��นอย�.กั�บกั�รกั��ห้นดคำ.� Accessible
ข�อกั��ห้นดเพื่*�มเต*มในกั�รเข�ยน Java Applet
กั�รเร�ยกัใชุ� Package สั่�ม�รถุที่��ได�ด�วยคำ��สั่��ง import ซึ่��งต�องว�งไว�ตอนแรกัสั่�ดของโปรแกัรมเสั่มอ เพื่!�อให้� Compiler น�� Package ต.�ง ๆ ที่��อ��งถุ�งม�เชุ!�อมโยงเข��กั�บโปรแกัรม กั.อนที่��จำะม�เร�ยกัใชุ� methods ต.�ง ๆ ภ�ยในโปรแกัรม
โปรแกัรม Applet ต�องเข�ยนในร�ป public class hello2 extends Applet
ซึ่��งเป1นกั�รสั่!บที่อดคำ�ณสั่มบ�ต*ของคำลำ�สั่ Applet
กั�รแสั่ดงข�อม�ลำบนจำอภ�พื่ ต�องใชุ�คำ��สั่��ง drawString ซึ่��งเป1น method ของคำลำ�สั่ Graphics
ต�วอย.�งกั�รเข�ยน Java Applet
import java.applet.*;import java.awt.Graphics;public class hello2 extends Applet{
public void paint(Graphics g) {
g.drawString("Hello World!",20,60);}
}
ต�วอย.�ง Standard Package ในภ�ษ� Java
Package Class ที่��เป็�นส่�วนป็ระกี่อบื้
java.applet Class ที่��จำ��เป1นต.อกั�รสั่ร��ง Applet
java.awt Class ที่�ใชุ�ประโยชุน+ในกั�รสั่ร��ง GUI
java.io Class สั่��ห้ร�บปฏิ*บ�ต*ง�นด��น I/O
java.lang Class พื่!�นฐ�นของ Java ไม.ต�อง import
java.net Class ที่��ใชุ�ต*ดต.อกั�บเคำร!อข.�ย ใชุ�คำวบคำ�.กั�บ java.io
java.util Class ที่��เป1น Utility เชุ.น กั�รเข��รห้�สั่ กั�รถุอดรห้�สั่
java.awt.images
Class ที่��ใชุ�ในกั�รสั่ร��งแลำะที่��ง�นกั�บร�ปภ�พื่
java.swing Class ที่��ใชุ�สั่ร��ง Swing ชุ.วยให้�ที่��ง�นง.�ยกัว.� java.awt