Upload
usablelabs
View
3.299
Download
2
Embed Size (px)
DESCRIPTION
สื่อการเรียนการสอน เรื่อง การโปรแกรมเชิงวัตถุ โดยคุณ Kan
Citation preview
1. Introduction to Java
Faculty of Technology and Environment
Prince of Songkla University, Phuket Campus
2/2551
140-140 Object-Oriented Programming
การโปรแกรมเชิงวัตถุ
2Object-Oriented Programming 2/2551
Objectives
วัตถุประสงค์
เข้าใจความแตกต่างของ Structure Programming กับ OOP
รู้จักเทคโนโลยีจาวา
เข้าใจขั้นตอนการพัฒนาโปรแกรมด้วยภาษาจาวา
เข้าใจโครงสร้างโปรแกรมภาษาจาวา
เขียน คอมไพล์ และรันโปรแกรมจาวาง่าย ๆ ได้
รู้จักข้อผิดพลาดในการเขียนโปรแกรม
อธิบายข้อดีของภาษาจาวาได้
3Object-Oriented Programming 2/2551
Contents
Structure programming VS Object-oriented programming
Java programming language
Java platform
Java Development Kit
Basic Java application
How to compile and run program?
Type of error
4Object-Oriented Programming 2/2551
Structure Programming VS OOP
Structure programming - การโปรแกรมเชิงโครงสร้าง
เขียนโปรแกรมโดยแตกระบบงานออกเป็นหน้าที่งานต่าง ๆ (function)
การแก้ไขหรือข้อผิดพลาดอาจส่งผลกระทบต่อส่วนอื่น เพราะมีการใช้ข้อมูล
บางอย่างร่วมกัน
ตัวอย่างภาษาโปรแกรมเชิงโครงสร้าง ได้แก่ ภาษาซี ปาสคาล
Object-oriented programming - การโปรแกรมเชิงวัตถุ
เขียนโปรแกรมโดยแตกระบบออกเป็นวัตถุ โดยแทนวัตถุที่มีอยู่จริง
วัตถุจะถูกก าหนดให้มีคุณสมบัติและพฤติกรรมเพื่อด าเนินงานต่างๆ
ตัวอย่างภาษา OOP เช่น ภาษาจาวา C#
5Object-Oriented Programming 2/2551
Structure Programming VS OOP
ตัวอย่าง การแตกระบบลงทะเบียน
Structure Programming
ลงทะเบียนเรียน
ช าระเงิน
เพิ่มรายวิชา
OOP
นักศึกษา
ใบลงทะเบียน
รายวิชา
ใบเสร็จรับเงิน
ข้อมูลที่สนใจ-รหัสนักศึกษา- ชื่อ สกุล-สาขาวิชา
พฤติกรรมในระบบ- ลงทะเบียน- เพิ่มวิชา-ช าระเงิน
6Object-Oriented Programming 2/2551
Structure Programming VS OOP
OOP Benefits
การวิเคราะห์ปัญหาใกล้เคียงกับการคิดของคนทั่วไป
การแบ่งระบบเป็นวัตถุ ท าให้เป็นข้อมูลมีความเป็นอิสระ
การ reuse ท าได้ง่ายกว่า Structure Programming พัฒนาโปรแกรมได้เร็ว
แก้ไขและบ ารุงรักษาระบบได้ง่าย
7Object-Oriented Programming 2/2551
Java Programming Language
Programming languages คือ ภาษาที่ใช้ในการเขียนโปรแกรม
โปรแกรมที่เขียนขึ้นสามารถน ามาใช้งานได้ในคอมพิวเตอร์
ภาษาจาวา เป็นภาษาการเขียนโปรแกรมระดับสูง
พัฒนาโดยบริษัท Sun Microsystems (www.sun.com)
เวอร์ชั่นแรกเริ่มใช้ในปี ค.ศ. 1996
ปัจจุบันเวอร์ชั่น 6
ต้องถูกแปลให้เป็นภาษาเครื่องก่อน
จึงจะสามารถประมวลผลหรือท างานได้
8Object-Oriented Programming 2/2551
Java Platform
Platform - hardware or software environment in which a program
runs
เป็นสภาพแวดล้อมหรือระบบที่โปรแกรมอาศัยท างาน
อาจรวมทั้งฮาร์ดแวร์และซอฟต์แวร์ เช่น
• Wintel platform หมายถึง คอมพิวเตอร์ที่ใช้ CPU Intel และ OS Windows
อาจหมายถึงซอฟต์แวร์อย่างเดียว เช่น
• ระบบปฏิบัติการ Windows, Linux, Unix, Mac OS
• โปรแกรมที่เป็นสภาวะแวดล้อมในการพัฒนาซอฟต์แวร์อื่น ๆ (Integrated
Development Environment : IDE) เช่น VB.Net, Eclipse, NetBean
9Object-Oriented Programming 2/2551
Java Platform
Java platform เป็นแพลตฟอร์มที่เป็นซอฟต์แวร์ ซึ่งสามารถรันโปรแกรม
จาวา
Java Development Kit (JDK) คือ ชุดพฒันาโปรแกรมภาษาจาวา สามารถ download ได้ที่ http://java.sun.com
JDK ประกอบด้วย ตัวแปลภาษาจาวา (Java compiler)
สภาพแวดล้อมส าหรับรันโปรแกรมจาวา (Java Runtime Environment หรือ JRE)
• JVM (Java Virtual Machine)
• Java API (Library)
JRE
API
JVM
JavaCompiler JDK
10Object-Oriented Programming 2/2551
http://java.sun.com/javase/technologies/index.jsp#overview
11Object-Oriented Programming 2/2551
Edition of Java
Java platform แบ่งเป็น 3 ประเภทตามการใช้งาน ดงันี้
Java Standard Edition (Java SE) ส าหรับเขียนโปรแกรมทั่วไปและโปรแกรมที่ท างานบนเวบ็บราวเซอร์ท่ีเรียกว่า applet
Java Enterprise Edition (Java EE) ส าหรับเขียนโปรแกรมระดับองค์กร โดยเพิ่มความสามารถจาก Java SE เพื่อรองรับการท างานส าหรับการให้บริการในระบบขนาดใหญไ่ด้
Java Micro Edition (Java ME) เป็น platform ส าหรับเขียนโปรแกรมบนอุปกรณ์อิเล็กทรอนิกส์เช่น โทรศัพท์มือถือ PDA
12Object-Oriented Programming 2/2551
From source code to running program
Editor Compiler InterpretorRunning
ProgramClass files
Library files
Source file
13Object-Oriented Programming 2/2551
Java Compiler
Compiler เป็นโปรแกรมทีใ่ช้แปลภาษาระดับสูงเป็นภาษาเครื่องซึ่งเปน็ชุดค าสั่งที ่CPU สามารถน าไปประมวลผลได้
Java Compiler คือ ตัวแปลภาษาจาวา ท าหน้าที่แปลรหัสค าสั่งภาษาจาวา (source code) ให้เป็นชุดค าสั่งที่เรียกว่า bytecode
Source code compiled by Bytecode
(file.java) Java compiler (file.class)
(javac.exe)
14Object-Oriented Programming 2/2551
Write once, run anywhere (WORA)
ปกติโปรแกรมภาษาอื่น ๆ เช่น ภาษาซี เมื่อถูกแปลจากเครื่องหนึ่งไม่สามารถน าไปใชง้านกับเครื่องที่ใช้ภาษาเครือ่งต่างกันได้
(เครื่องที่มี CPU ต่างยี่ห้อกัน หรือใช้ระบบปฏิบตัิการต่างกัน)
bytecode ท าให้จาวาเป็นภาษาทีไ่ม่ขึ้นกบัระบบปฏิบตัิการ (platform-
independent)
โปรแกรมที่เขียนด้วยภาษาจาวาสามารถน าไปประมวลผลบนระบบปฏิบัติการที่
กันได้ เช่น Windows, Linux, Unix หรือใช้ CPU ต่างกัน เช่น Intel, AMD
Bytecode (file.class)
15Object-Oriented Programming 2/2551
Java Runtime Environment (JRE)
Java Runtime Environment เป็นโปรแกรมที่ใช้ประมวลผล bytecode ประกอบด้วย
Java Virtual Machine (JVM) หรือ โปรแกรมเครื่องจักรเสมือนจาวาส าหรับ
ประมวลผล Bytecode ท าหน้าที่เป็น interpreter แปลไบต์โค้ดเป็นภาษาเครื่อง
ส าหรับระบบปฎิบัติการนั้น
Library files (Java API-Application Programming Interface) คือ คลาสหลัก
ของภาษาจาวา
Bytecode interpreted by JRE Program
(file.class) (java.exe)
Library Files
16Object-Oriented Programming 2/2551
Java Runtime Environment (JRE)
เครื่องคอมพิวเตอร์ที่ติดตั้ง JRE ไว้จะสามารถรันโปรแกรมที่เขียนด้วย
ภาษาจาวาได้
bytecode ท าหน้าท่ีเสมือนเป็นภาษาเครื่องส าหรับ JVM ท าให้สามารถน าbytecode ไปใช้งานในเครื่องที่มีการติดตั้ง JVM
17Object-Oriented Programming 2/2551
Java Version
Toolkit product version – Developer version
JDK 1- Java 1.1 (1996)
SDK 2 - Java 1.2-1.4 (2000)
SDK 5 - Java 1.5 (2004)
SDK 6 - Java 1.6
JDK = Java Development Kit
เป็นชุดพัฒนาโปรแกรมจาวา
18Object-Oriented Programming 2/2551
Basic Java Application
JDK ประกอบด้วย Java Compiler และ Java Runtime Enviroment
แต่ไม่มีโปรแกรมส าหรับเขียน java source code
สามารถเขียนโปรแกรมจาวาได้โดยใช ้Text editor เช่น Notepad,
EditPlus
หรือใช้โปรแกรมที่มีเครื่องมืออ านวยความสะดวกในการเขียนโปรแกรม
ซึ่งเรียกว่า Integrated Development Environment(IDE) เช่น NetBeans
และ Eclipse เป็นต้น
19Object-Oriented Programming 2/2551
Basic Java Application
องค์ประกอบหลักของโปรแกรมจาวา
Class คือ ชิ้นส่วนของโปรแกรมที่เล็กที่สุดของภาษาจาวา
แต่ละชิ้นส่วนสามารถน ามาประกอบกันเพื่อสร้างเป็นโปรแกรมขนาดใหญ่ๆ ได้
แต่ละคลาสประกอบด้วย method ซึ่งเป็นชุดของการด าเนินงาน
แต่ละเมธอด ประกอบด้วยค าสั่งในการด าเนินงานต่าง ๆ (statement)
Class
Method1Statement;
Method2Statement;
Statement;
20Object-Oriented Programming 2/2551
Ex. 1 Java application HelloWorld
comments
ค าสั่งให้แสดงผลไปยังจอภาพ ข้อความที่แสดง statement
ค าที่บอกว่าเป็นคลาส ชื่อคลาส
ไม่มี return type ชื่อเมธอด
class
method
21Object-Oriented Programming 2/2551
Java Comment
บรรทัดที่ 1,2 – เรียกว่า comments
เป็นค าอธบิายโปรแกรม ไม่ถูกคอมไพล์เป็น bytecode ด้วย java compiler
รูปแบบการเขียน comment
บรรทัดเดียว ให้ใช้เครื่องหมาย // น าหน้า
//……your comment……..
หลายบรรทัด จะอยู่ภายในเครือ่งหมาย /*…………..*/
/*…………your comment
……………………………………..….*/
22Object-Oriented Programming 2/2551
Ex.1 Java application HelloWorld
บรรทัดที่ 4 - ประกาศคลาส
ค าว่า class เป็นเหมือนตัวบอกถึงชิ้นส่วนของโปรแกรม
รายละเอียดในแต่ละคลาสจะอยู่ภายในวงเล็บปีกกา class {………..}
ภายในคลาสประกอบด้วยเมธอดได้หลายเมธอด
ค าว่า public ระบุให้คลาสอื่นทุกคลาสเรียกใช้งานคลาสนี้ได้
HelloWord เป็นชื่อคลาส
23Object-Oriented Programming 2/2551
Ex. 1 Java application HelloWorld
บรรทัดที่ 6 - method signature
main เป็นชื่อ method ในจาวา main() จะเป็นเมธอดแรกที่ถูกเรียกให้ท างาน
แต่ละเมธอด มีค าสั่งอยู่ภายในวงเล็บปีกกา {………..}
บรรทัดที่ 8 - statement
เป็นค าสั่งในการพิมพ์ข้อความออกทางจอภาพ
ในโปรแกรมมีได้หลายค าสั่ง แต่ละค าสั่งต้องจบด้วยเครื่องหมาย semicolon ;
24Object-Oriented Programming 2/2551
Compile and Run program
การ compile โปรแกรม
เปิด command prompt และย้าย prompt ไปที่ folder ที่จัดเก็บโปรแกรม
ท าการคอมไพล์โดยพิมพ์ค าสั่ง
javac HelloWorld.java
การรันโปรแกรม
พิมพ์ค าสั่ง
java HelloWorld
ผลลพัธ์
25Object-Oriented Programming 2/2551
Class with a main method
ในจาวา ท างานด้วย class – การรันโปรแกรมคือ การรันคลาส
การรันโปรแกรม เป็นการบอกให้ JVM ให้โหลดคลาส Hello ขึ้นมา
จากน้ันท างานใน method main() ซึ่งจะท างานจนหมดค าสั่งใน main()
26Object-Oriented Programming 2/2551
Syntax Errors
Syntax error หรือ Compile-time error
Syntax error คือข้อผิดพลาดจากการฝ่าฝืนกฏหรือไวยากรณ์ของภาษา
การตรวจสอบไวยากรณ์ว่าถูกต้องหรือไม่ จะเกิดขึ้นขณะคอมไพลโ์ปรแกรมโดย
คอมไพเลอร์
หากเราเขียนไม่ถูกต้อง คอมไพเลอร์จะแจ้งข้อผิดพลาดให้ทราบ และไม่สร้าง
bytecode ให้
เช่น จบค าสั่งโดยไม่มีเครื่องหมาย ; หรือ ใส่วงเล็บปีกกาไม่ครบ เป็นต้น
ระวัง ตัวอักษรตัวใหญ่และตัวเล็กในภาษาจาวา ถือว่าเป็นคนละตัวกัน
27Object-Oriented Programming 2/2551
Syntax Errors
Compile…..
28Object-Oriented Programming 2/2551
Syntax Errors
Compile…..
29Object-Oriented Programming 2/2551
Syntax Errors
Compile…..
30Object-Oriented Programming 2/2551
Syntax Errors
Compile…..
31Object-Oriented Programming 2/2551
Logic Errors
Logic error หรือ Run-time error
Logic error คือข้อผิดพลาดจากการที่โปรแกรมท างานไม่ตรงกับที่เราต้องการ
โปรแกรมที่เขียนขึ้นถูกต้องตามหลักไวยากรณ์ของภาษาจาวา สามารถคอมไพล์
ได้
อาจสามารถรันโปรแกรมได้แต่ท างานได้ไม่ตรงกับที่เราคิดไว้ หรือท างานไม่ได้
Programmer ต้องตรวจสอบข้อผิดพลาดนี้เอง ตัวอย่างเช่น
• ไม่ใส่วงเล็บในการค านวณ
• ล าดับค าสั่งผิด
32Object-Oriented Programming 2/2551
Logic Errors
Exception คือ ข้อผิดพลาด
Compile…..Run…..
33Object-Oriented Programming 2/2551
Logic Errors
-5
ต้องการให้ท าการค านวณตามล าดับคือ (10-3)*5 = 35
แต่โปรแกรมค านวณให้คือ 10-(3x5) = -5
Compile…..Run…..
34Object-Oriented Programming 2/2551
ข้อดีของภาษาจาวา
Write once, run anywhere
Code security มีกลไกการตรวจสอบไบต์โค้ด ( ฺBytecode verifier) ว่าต้องเป็นโค้ดที่ไม่ท าให้ระบบเสียหาย
Exception มีกลไกให้โปรแกรมเมอร์จัดการข้อผิดพลาดที่เกิดขึ้นในการรัน
โปรแกรม
มี Garbage collection เป็นกลไกจัดการคืนพื้นที่ในหน่วยความจ าอัตโนมัติ โปรแกรมเมอร์ไม่ต้องจัดการเอง
มี library ให้ใช้มากมาย – database storage, cryptography, networking, GUI
สนับสนุน OOP
Free !!!
35Object-Oriented Programming 2/2551
Summary
Structure programming เน้นการแตกระบบเป็นฟังก์ชั่นการท างาน OOP เน้นการแตก
ระบบเป็นวัตถุในระบบ
Java Compiler แปลโปรแกรมที่เขียนด้วยภาษาระดับสูงเป็นภาษาเครื่องส าหรับ JVM
เรียกว่า bytecode
โครงสร้างโปรแกรมจาวาประกอบด้วย คลาส ภายในคลาสมีเมธอด แต่ละเมธอดมีค าสั่ง
เมธอด main() เป็นเมธอดที่จะถูกเรียกให้ท างานตอนรันโปรแกรม
Syntax error เกิดในขณะคอมไพล์จากข้อผิดพลาดจากการเขียนโปรแกรมผิด syntax
Logic error เกิดขณะรันจากการที่โปรแกรมท างานได้ไม่ตรงกับที่ต้องการหรือรันไม่ได้