65
1 บทที 1 ปรแกรมภาษาจาวาเบื ้องต ้น (Basic of Java Programming Language)

บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

1บทท 1

โปรแกรมภาษาจาวาเบองตน

(Basic of Java Programming Language)

Page 2: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

วตถประสงค

แนะนาภาษาจาวาและเทคโนโลยจาวา

อธบายขนตอนการทางานของโปรแกรมภาษาจาวาอธบายขนตอนการทางานของโปรแกรมภาษาจาวา

อธบายจดเดนของภาษาจาวา

อธบายหลกการเขยนโปรแกรมเชงออปเจค โดยอธบายความหมายของ• ออปเจค (object)คลาส (class)• คลาส (class)

• คณลกษณะ (attribute)• เมธอด (method)

อธบายการประกาศคลาสทมคณลกษณะและเมธอดอยในคลาส

Page 3: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

วตถประสงค

อธบายการประกาศและสรางออปเจค

อธบายการเรยกใชคณลกษณะและเมธอดของออปเจคอธบายการเรยกใชคณลกษณะและเมธอดของออปเจค

แนะนาไวยากรณภาษาจาวาสญลกษณและคาตางๆทใชในภาษาจาวา• สญลกษณและคาตางๆทใชในภาษาจาวา

แนะนาขอมลคาคงท (literals) และชนดขอมลแบบพนฐาน (primitive data t ) types)

อธบายการประกาศตวแปร (variables) และคาสงกาหนดคา (assignment statement)

อธบายการแปลงชนดขอมล

Page 4: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

วตถประสงค

อธบายคณลกษณะเดนของโปรแกรมเชงออปเจคสามประการคอ• การหอหม (Encapsulation)

• การสบทอด (Inheritance) • การมไดหลายรปแบบ (Polymorphism)

ป ไป อธบายหลกการของการหอหมทประกอบไปดวย• การซอนเรนขอมล (Information Hiding) • ความเปนโมดล (Modularity) ( y)

แนะนาเมธอดแบบ accessor

อธบายความหมายและการประกาศ Constructor

Page 5: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

วตถประสงค

อธบายขนตอนการทางานของคาสง new

อธบายการใชคยเวรด thisอธบายการใชคยเวรด this

แนะนาโครงสรางโปรแกรมภาษาจาวาทมการใชคาสง package และimportimport

อธบายหลกการใชคมอ API (Application Programming Interface) ของภาษาจาวาภาษาจาวา

Page 6: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ภาษาจาวา

พฒนาขนโดยทมวจยของบรษทซนไมโครซสเตมส

เปนภาษาคอมพวเตอรเชงออปเจค (Object Oriented Programming)เปนภาษาคอมพวเตอรเชงออปเจค (Object Oriented Programming)

สามารถทางานไดกบระบบคอมพวเตอรหลายแพลตฟอรม

เรมเปนทนยมแพรหลายในชวงปลายป ค.ศ. 1995

ชดพฒนาโปรแกรมภาษาจาวาเวอรชนแรก (JDK 1.0) ( )

JDK 1.2 (Java 2) ออกมาในป ค.ศ. 1998

Page 7: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

องคประกอบของเทคโนโลยจาวา

JVM (Java Virtual Machine)• ทาหนาทเปนอนเตอรพรตเตอร

JRE (Java Runtime Environment)ใ ใ โ• ใชในการรนโปรแกรม

J2SDK (Java 2 Software Development Kit)• เปนชดพฒนาโปรแกรมภาษาจาวา

Page 8: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

Java Virtual Machine (JVM)

โปรแกรมภาษาจาวาจะคอมไพลไดไบทโคด โดย JVM จะเปน อนเตอรพรตเตอรทแปลไบทโคดใหเปนคาสงทภาษาเครองเขาใจ

จาวาไบทโคดสามารถจะรนขามแพลตฟอรม (platform) ได ถาแพลตฟอรมนนมJVM อย

JVM เปนโปรแกรมทขนอยกบแพลตฟอรม (platform specific)

ป โป ฟ ไ JVM อาจพฒนาเปนโปรแกรมซอฟตแวรหรอฮารดแวรได

Page 9: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โขนตอนการทางานของโปรแกรมภาษาจาวา

Page 10: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

Java Runtime Environment (JRE)

JRE จะรนโคดทแปลมาจาก JVM โดยจะทางาน 3 ขนตอน คอ• โหลดไบทโคดโดยใช Class Loader

ไ โ โ ใ • ตรวจสอบไบทโคดโดยใช Byte Code Verifier• รนไบทโคดโดยใช Runtime Interpreter

Page 11: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ขนตอนการทางานของ JRE

Page 12: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

Java Development Kit (JDK)

คอชดพฒนาโปรแกรมภาษาจาวาของบรษทซนไมโครซสเตมส

ชอใหมของ JDK เวอรชน 1 2 คอ Java 2ชอใหมของ JDK เวอรชน 1.2 คอ Java 2

เวอรชนปจจบนคอเวอรช◌น 1.4

ประกอบไปดวยโปรแกรมตางๆ อาทเชน• โปรแกรมคอมไพเลอร (javac.exe)โปรแกรมอนเตอรพรตเตอร (j )• โปรแกรมอนเตอรพรตเตอร (java.exe)

• โปรแกรมดบกเกอร

แตจะไมมโปรแกรมอดเตอรแตจะไมมโปรแกรมอดเตอร

Page 13: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

แพลตฟอรมของเทคโนโลยจาวา

ประกอบไปดวย• Java Virtual Machine (JVM)• Java Application Programming Interface (Java API)

Page 14: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

แพลตฟอรมของ Java 2

Page 15: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โหลกการของโปรแกรมเชงออปเจค

โปรแกรมเชงกระบวนการ (procedural) จะแบงการทางานของโปรแกรมออกเปนสวนๆตามฟงกชนของการทางาน

การปรบปรงหรอแกไขโปรแกรมเชงกระบวนการทาไดยาก

โปรแกรมเชงออปเจคจะแบงการทางานของโปรแกรมเปนออปเจคโปรแกรมเชงออปเจคจะแบงการทางานของโปรแกรมเปนออปเจค

การปรบปรงหรอแกไขโปรแกรมเชงออปเจคทาไดงายกวา จงเหมาะกบการ โป ใ ป ป ไ โป พฒนาโปรแกรมขนาดใหญทจะตองมการปรบปรงแกไขโปรแกรมอยตลอด

Page 16: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ออปเจค

ออปเจค (object) แบงไดเปนสองประเภทคอ• สงทเปนรปธรรม (tangible) คอสงทเปนวตถและจบตองไดอาทเชน นกศกษา ใบ

ป ป ลงทะเบยน ปากกา และรถ เปนตน• สงทเปนนามธรรม (intangible) คอสงทไมสามารถจบตองไดอาทเชน คะแนนรายชอวชา บญชเงนฝาก และตารางเทยวบน เปนตนญ

ออปเจคประกอบไปดวย• คณลกษณะ (attribute) หรอขอมล (data) ( ) ( )• เมธอด (method) หรอพฤตกรรม (behavior)

Page 17: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวอยางของออปเจค

นกศกษา อาจจะประกอบไปดวยคณลกษณะเชน รหส ชอ และเกรดเฉลย

และอาจจะมเมธอดเชน ลงทะเบยน สอบ และเดนและอาจจะมเมธอดเชน ลงทะเบยน สอบ และเดน

รถยนต อาจจะประกอบไปดวยคณลกษณะเชน ยหอ รน และส

และอาจจะมเมธอดเชน เคลอนท หยดและเลยว

สนข อาจจะประกอบไปดวยคณลกษณะเชน ชอ พนธ และส

และอาจจะมเมธอดเชน เหา คลาน และกระดกหาง

Page 18: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

คลาส

เปรยบเสมอนพมพเขยว (template) ของออปเจค

ออปเจคทถกสรางมาจากคลาส (class) บางครงเรยกวาเปน instance ของคลาสออปเจคทถกสรางมาจากคลาส (class) บางครงเรยกวาเปน instance ของคลาส

คลาสหนงคลาสสามารถสรางออปเจคไดหลายออปเจค อาทเชน คลาส Studentอาจสรางออปเจค 1 2 หรอ 3 ซงเปนออปเจคของคลาส St d tอาจสรางออปเจค s1,s2 หรอ s3 ซงเปนออปเจคของคลาส Student

Page 19: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวอยางของออปเจคและคลาส

Page 20: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การประกาศคลาส

รปแบบการประกาศ

[modifier] class ClassName {[modifier] class ClassName {[class member]

}

ตวอยาง

public class Student {

}}

Page 21: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การประกาศคณลกษณะ

รปแบบการประกาศ

[modifier] dataType attributeName;[modifier] dataType attributeName;

ตวอยางการประกาศคณลกษณะทชอ id และ ในคลาสตวอยางการประกาศคณลกษณะทชอ id,name และ gpa ในคลาสStudent

public class Student {public class Student {

public String id;

public String name;public String name;

public double gpa;

}}

Page 22: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การประกาศเมธอด

รปแบบการประกาศ

[modifier] return_type methodName([arguments]) {_

[method_body]

}

ตวอยาง

public void setName(String n) {

name = n;;

}

Page 23: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การประกาศและสรางออปเจค

รปแบบการประกาศ

[modifier] ClassName objectName;[modifier] ClassName objectName;

ตวอยาง

Student s1;

รปแบบการสรางรปแบบการสราง

objectName = new ClassName([arguments]);

ตวอยาง

s1 = new Student();s1 = new Student();

Page 24: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ใ การเรยกใชสมาชกของออปเจค

รปแบบการเรยกใชคณลกษณะของออปเจค

objectName attributeNameobjectName.attributeName

ตวอยาง

s1.name

รปแบบการเรยกใชเมธอดของออปเจครปแบบการเรยกใชเมธอดของออปเจค

objectName.methodName([arguments]);

ตวอยาง

s1 setName(“Thana”);s1.setName(“Thana”);

Page 25: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ไวยากรณภาษาจาวา

สญลกษณและคาทใชในภาษาจาวาประกอบดวย• คอมเมนต (comment)

• การตงชอ (identifier)• คยเวรด (keywords)• สญลกษณแยกคา (separators)ญ ( )• ชองวาง (white space)• ขอมลคาคงท (literals)

Page 26: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ชนดขอมลแบบพนฐาน

ชนดขอมลในภาษาจาวาแบงเปนสองประเภทใหญๆคอ• ชนดขอมลแบบพนฐาน (primitive data type)

• ชนดขอมลแบบอางอง (reference data type)

ป 4 ป ชนดขอมลแบบพนฐานแบงออกเปน 4 ประเภทดงน• ชนดขอมลตรรกะ (Logical) คอชนด boolean• ชนดขอมลอกขระ (Textual) คอชนด char ( )• ชนดขอมลตวเลขจานวนเตม (Integral) คอชนด byte,short,int และ long• ชนดขอมลตวเลขทศนยม (Floating point) คอชนด float และ double

Page 27: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ขนาดและชวงคาของชนดขอมลแบบพนฐาน

ชนดขอมล ขนาด (บต) ชวงคา

boolean 1 true หรอ falseboolean 1 true หรอ false

char 16 '\u0000' ถง '\uFFFF'

byte 8 -128 ถง +127

short 16 -32,768 ถง +32,767

int 32 -231 ถง +231-1

long 64 263 ถง +263 1long 64 -2 ถง +2 -1

float 32 -3.40E+38 ถง +3.40E+38

double 64 -1.80E+308 ถง +1.80E+308

Page 28: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวแปรและการกาหนดคา

ตวแปรในภาษาจาวาอาจเปนตวแปรทมชนดขอมลแบบพนฐานหรอชนดขอมลแบบอางอง

ตวแปรทมชนดขอมลแบบพนฐานจะเกบคาของตวแปรในหนวยความจา• เชน int x = 7;

ตวแปรทมชนดขอมลแบบอางองจะเกบตาแหนงอางองในหนวยความจา• เชน String s = new String(“Thana”);

Page 29: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวแปรและการกาหนดคา

ภาษาจาวาจะกาหนดตาแหนงอางองเรมตนใหมคาเปน null โดยอตโนมตซงเนอทในหนวยความจาเพอเกบขอมลตางๆ ของตวแปรชนดขอมลแบบ ใ อางองจะถกสรางขน เมอมการเรยกใชคาสง new

ตวอยาง• คาสง Date d;• และคาสง d = new Date(16,8,2002);

Page 30: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การสงตวแปรผาน argument

กรณทสงตวแปรชนดขอมลแบบพนฐานใหกบ argument การเปลยนแปลงคาของargument ในเมธอดจะไมมผลกระทบตอคาของตวแปรทสงมา

กรณทสงตวแปรชนดขอมลแบบอางองใหกบ argument จะเปนการสงตาแหนงอางองใหกบ argument จงทาใหคาของตวแปรทสงมาจะถกเปลยน แปลงตามargument ในเมธอด

Page 31: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โตวอยางโปรแกรม

import java.util.*;

public class ArgumentPassing {p g g {public void method1(int x) {

x = 3;}bli id th d2(D t d) {public void method2(Date d) {

d.setDate(1);d.setMonth(1);d.setYear(2002);( )

}public int method3() {

return 0;}}

Page 32: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โตวอยางโปรแกรม

public static void main(String args[]) {int x = 4;ArgumentPassing obj = new ArgumentPassing();g g j g g()Date d1 = new Date(16,12,1980);obj.method1(x);System.out.println("x = "+x);bj th d2(d1)obj.method2(d1);System.out.println("Date = "+d1);obj.method3();

}}}

Page 33: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การแปลงชนดขอมล

การแปลงชนดขอมลมสองรปแบบคอ

• การแปลงขอมลทกวางขน (widening conversion) คอการแปลงจากชนดขอมลทม ขนาดเลกกวาไปเปนชนดขอมลทมขนาดใหญกวา

• การแปลงขอมลทแคบลง (narrowing conversion) คอการแปลงจากชนดขอมลทมใ ไป ป ใ ขนาดใหญกวาไปเปนชนดขอมลทมขนาดเลกลง ซงอาจมผลใหเสยความละเอยด

ของขอมลบางสวนไป

Page 34: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวอยางของการแปลงชนดขอมล

ภาษาจาวาจะปรบชนดขอมลใหอตโนมต ในกรณตอไปน

กาหนดคาชนดขอมลทเลกกวาใหกบตวแปรชนดขอมลทใหญกวาอาทเชนกาหนดคาชนดขอมลทเลกกวาใหกบตวแปรชนดขอมลทใหญกวาอาทเชนint i = 4;long l = i;นพจน i จะถกปรบชนดขอมลจาก int ใหเปน long โดยอตโนมตนพจน i จะถกปรบชนดขอมลจาก int ใหเปน long โดยอตโนมต

กาหนดคาชนดขอมลจานวนเตมใหกบจานวนเลขทศนยมอาทเชนdouble x = 3;double x 3;นพจน 3 จะถกปรบชนดขอมลจาก int ใหเปน double โดยอตโนมต

Page 35: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

Typecasting

ภาษาจาวาจะสามารถทาการแปลงชนดขอมล ใหเปนชนดขอมลทมขนาดเลกลงได โดยใชวธการทเรยกวา typecasting

รปแบบ

(targetT pe) e pression(targetType) expression

ตวอยาง

int amount = (int)3.0;

Page 36: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

คณลกษณะเดนของโปรแกรมเชงออปเจค

การหอหม (Encapsulation)

การสบทอด (Inheritance) การสบทอด (Inheritance)

การมไดหลายรปแบบ (Polymorphism)

Page 37: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การหอหม

คณลกษณะของออปเจคจะถกปองกนไวไมใหออปเจคอนทอยภายนอกเขาถงขอมลได

อยางอสระ

ออปเจคอนๆสามารถจะเรยกใชคณลกษณะของออปเจคไดโดยเรยกผานเมธอด

Page 38: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ขอดของการหอหม

การซอนเรนขอมล (Information Hiding) • ออปเจคสามารถตดตอกบออปเจคภายนอกผานเมธอดทเปน public interface ดงนนเรา

ป ป ป โ ไ ใสามารถทจะเปลยนตวแปร หรอเมธอดอนๆของออปเจคโดยไมมผลกระทบใดๆ

ความเปนโมดล (Modularity) โป ป ป ป ป ใ ป• การพฒนาโปรแกรมของแตละออปเจคเปนอสระตอกน ถามการเปลยนแปลงเกดขนภายในออป

เจคหนงกจะไมมผลกระทบตอออปเจคอนๆ

Page 39: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

เมธอดแบบ accessor

คณลกษณะของคลาสจะถกซอนไวโดยการกาหนดให modifier เปนprivate

การกาหนดคาหรอเรยกดคณลกษณะของคลาสจะใชเมธอดทม modifier เปนการกาหนดคาหรอเรยกดคณลกษณะของคลาสจะใชเมธอดทม modifier เปนpublic

การกาหนดคาจะใชเมธอดแบบ setter การกาหนดคาจะใชเมธอดแบบ setter

การเรยกดคาคณลกษณะจะใชเมธอดแบบ getter

Page 40: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

เมธอดแบบ setter

รปแบบ

public void setAttributeName(dataType arg) {public void setAttributeName(dataType arg) {

attributeName = arg;

}}

ตวอยางตวอยาง

public void setGPA(double GPA) {

gpa = GPA;gpa = GPA;

}

Page 41: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

เมธอดแบบ getter

รปแบบ

public dataType getAttributeName() {public dataType getAttributeName() {

return attributeName;

}}

ตวอยาง

bli d bl tGPA() {public double getGPA() {

return gpa;

}}

Page 42: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โตวอยางโปรแกรม

public class EncapStudent {private String id;private String name;private double gpa;private double gpa;public void setID(String ID) {

id = ID;}public void setName(String n) {

name = n;}public void setGPA(double GPA) {public void setGPA(double GPA) {

if ((GPA<0) || (GPA>4.00)) {System.out.println("Incorrect Format!");

} else {gpa = GPA;

}}

Page 43: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โตวอยางโปรแกรม

public String getID() {return id;

}}public String getName() {

return name;}bli d bl tGPA() {public double getGPA() {

return gpa;}

}}

Page 44: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

Constructor

เปนเมธอดทมชอเดยวกบชอคลาส

จะถกเรยกใชงานเมอมการสรางออปเจคโดยใชคาสง newจะถกเรยกใชงานเมอมการสรางออปเจคโดยใชคาสง new

รปแบบ

[modifier] ClassName([arguments]) {

[statements]

}}

constructor จะเปนเมธอดทไมตองระบชนดขอมลของคาทสงกลบและไมตองใชคย idเวรด void

Page 45: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

Constructor แบบ default

โดยทวไปคลาสทกคลาสจะม constructor แบบ default

รปแบบรปแบบ

public ClassName() {

}}

constructor แบบ default จะเปน constructor ทไมมคาสงใดๆอยภายใน

ไ ใ ใ โคอมไพเลอรของภาษาจาวาจะใส constructor แบบ default ใหกบโปรแกรมโดยอตโนมต

ตวอยาง constructor แบบ default ของคลาส Student

public Student() {

}

Page 46: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

การเขยน constructor

เราสามารถทจะเขยน constructor ของคลาสใดๆกได

ตวอยางการเขยน constructor ของคลาส Studentตวอยางการเขยน constructor ของคลาส Student

public Student(String ID,String n,double GPA) {

id = ID;id ID;

name = n;

gpa = GPA;gp

}

constructor แบบ default จะหายไปเมอมการเขยน constructor ขนใหมconstructor แบบ default จะหายไปเมอมการเขยน constructor ขนใหม

Page 47: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ขนตอนการทางานของคาสง new

กาหนดเนอทในหนวยความจาใหกบออปเจค

กาหนดคาเรมตนใหกบคณลกษณะของออปเจคกาหนดคาเรมตนใหกบคณลกษณะของออปเจค

กาหนดคาของคณลกษณะของออปเจคตามคาสงกาหนดคาทประกาศไว

เรยกใช constructor

Page 48: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวอยางคลาส MyDate

public class MyDate {

private int day = 1;

private int month = 1;

private int year = 2000;

bli (i d i i ) {public MyDate(int d,int m,int y) {

day = d;

month = m;month = m;

year = y;

}}

}

Page 49: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

รปแสดงขนตอนการทางานของคาสง new

คาสง MyDate d1 = new MyDate(16,8,1972);

Page 50: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

คยเวรด this

คยเวรด this หมายถงออปเจคของตวเอง

คยเวรด this ใชอางองคณลกษณะและเมธอดของออปเจคภายในเมธอด ซงมคยเวรด this ใชอางองคณลกษณะและเมธอดของออปเจคภายในเมธอด ซงมรปแบบดงน

this attirb teNamethis.attirbuteName;

this.methodName();

Page 51: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โตวอยางโปรแกรม

public class Student {private String id;private String name;private double gpa;public Student(String id,String name, double gpa) {

this.id = id;this name = name;this.name = name;this.gpa = gpa;

}public void showDetails() {

System.out.println("ID: "+id);System.out.println("Name: "+name);System.out.println("GPA: "+gpa);

}}}

Page 52: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

แพคเกจ

ซอฟตแวรแพคเกจชวยในการจดการการพฒนาโปรแกรมขนาดใหญ

ในโปรแกรมภาษาจาวา แพคเกจจะเปนทรวมของคลาสของภาษาจาวาหลายๆคลาสในโปรแกรมภาษาจาวา แพคเกจจะเปนทรวมของคลาสของภาษาจาวาหลายๆคลาส

โปรแกรมอาจแบงเปนแพคเกจและแพคเกจยอย (Subpackage)

แพคเกจจะเกบไวในไดเรกทอร (Directory) ซงจะเปนชอของแพคเกจ

Page 53: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

ตวอยาง

Page 54: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

โครงสรางโปรแกรมภาษาจาวา

รปแบบโปรแกรมภาษาจาวามดงน[<package_declaration>]

[<import_declaration>]

[<class_declaration>]

Page 55: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

คาสง package

คาสง package เปนการระบวาคลาสอยในแพคเกจใด

รปแบบของคาสง packageรปแบบของคาสง packagepackage <package_name>[<sub_package_name>];

ตวอยางตวอยางpackage faculty.domain;

โปรแกรมภาษาจาวาหนงโปรแกรมจะมคาสง package ไดเพยงคาสงเดยวโปรแกรมภาษาจาวาหนงโปรแกรมจะมคาสง package ไดเพยงคาสงเดยวโดยจะเปนคาสงแรกของโปรแกรม

ไ ไ ใ กรณทไมมคาสง package คลาสจะถกกาหนดไวในแพคเกจ default

Page 56: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

คาสง import

คาสง import เปนการเรยกใชคลาสในแพคเกจตางๆ

รปแบบของคาสง importรปแบบของคาสง importimport <package_name>[.<sub_package_name>].<Class_name>• หรอimport <package name>[ <sub package name>] *;import <package_name>[.<sub_package_name>].*;

ตวอยางimport faculty.reports.Report;import faculty.reports.Report; • หรอimport java.awt.*;

ปคาสง import จะอยกอนหนาการประกาศคลาส

โปรแกรมภาษาจาวาหนงโปรแกรมสามารถมคาสง import ไดหลายคาสง

Page 57: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

คมอ Java API

Java API เปนขอกาหนดทวาดวยคลาสและอนเตอรเฟสตางๆทกาหนดไวในแพคเกจมาตราฐานของภาษาจาวา

คมอ Java API จะแสดงรายละเอยดตางๆของคลาสหรออนเตอรเฟสดงน• ลาดบการสบทอดของคลาส

• คาอธบายเกยวกบคลาสและจดประสงคทวไป• รายชอคณลกษณะตางๆ ของคลาส• รายชอเมธอดตางๆ ของคลาส• รายชอเมธอดตางๆ ของคลาส• รายชอ Constructor ตางๆ ของคลาส• คาอธบายรายละเอยดของคณลกษณะแตละตวของคลาส

• คาอธบายรายละเอยดของเมธอดแตละตวของคลาส• คาอธบายรายละเอยดของConstructor แตละตวของคลาส

Page 58: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้
Page 59: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

สรปเนอหาของบท

เทคโนโลยภาษาจาวาประกอบไปดวยองคประกอบหลกๆสามสวนคอ JVM, JRE และ J2SDK

คอมไพเลอรของภาษาจาวาจะทาหนาทแปลโปรแกรมภาษาจาวาใหเปนโปรแกรมไบทโคด และจะใชจาวาอนเตอรพรตเตอร (JVM) ในการแปลโปรแกรมไบทโคดใหเปนภาษาเครอง ทาใหโปรแกรมภาษาจาวาสามารถทางานขามแพลตฟอรมได ถาระบบคอมพวเตอรนนม JVM อย

JRE จะรนโปรแกรมไบทโคดทแปลมาจาก JVM

ชดพฒนาโปรแกรมภาษาจาวา Java 2 SDK ประกอบไปดวยโปรแกรมตางๆชดพฒนาโปรแกรมภาษาจาวา Java 2 SDK ประกอบไปดวยโปรแกรมตางๆทสาคญคอ โปรแกรมคอมไพเลอร (javac.exe) และโปรแกรมอนเตอรพรตเตอร (java.exe)พรตเตอร (java.exe)

Page 60: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

สรปเนอหาของบท

แพลตฟอรมของ Java ประกอบไปดวย JVM และ Java API ซง Java 2 มแพลตฟอรม 3 แบบคอ J2SE, J2EE และ J2ME

โปรแกรมจาวาทอยบนแพลตฟอรม J2SE สามารถพฒนาไดสองรปแบบคอโปรแกรมจาวาประยกตซงจะทางานภายใต JVM โดยตรง และโปรแกรมจาวาแอปเพลตซงจะทางานภายใตเวบบราวเซอรทม JVM

โปรแกรมเชงออปเจคจะมคานยามทสาคญสองคาคอ ออปเจคและคลาสโปรแกรมเชงออปเจคจะมคานยามทสาคญสองคาคอ ออปเจคและคลาส

ออปเจคคอสงตางๆทมอยในชวตประจาวน จะประกอบไปดวยคณลกษณะและ เมธอดและ เมธอด

คลาสเปรยบเสมอนพมพเขยวของออปเจค ออปเจคจะถกสรางมาจากคลาสป ป ไ ออปเจคหลายออปเจคสามารถถกสรางจากคลาสหนงคลาสได

Page 61: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

สรปเนอหาของบท

ภาษาจาวามนยามในการเขยนโปรแกรมเชงออปเจค เพอประกาศคลาสคณลกษณะ เมธอด และ ออปเจค

การตงชอในภาษาจาวา• สาหรบคลาส นยมขนตนดวยตวอกษรพมพใหญ

• สาหรบเมธอดและตวแปร นยมขนตนดวยตวอกษรพมพเลก• ถาชอทตงขนมมากกวา 1 คา นยมขนตนคาใหมดวยตวอกษรพมพใหญ• ตองไมตรงกบคยเวรด• ตองไมตรงกบคยเวรด

ชนดขอมลพนฐานทใชในภาษาจาวามทงหมด 8 ชนดคอ char, byte, short, int long float double และ boolean สวน String เปนชนดขอมลคลาสint, long, float, double และ boolean สวน String เปนชนดขอมลคลาส

Page 62: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

สรปเนอหาของบท

ขอมลทเกบในหนวยความจาของชนดขอมลแบบอางอง จะเปนตาแหนงอางองทเกบขอมลในหนวยความจา แตในกรณของชนดขอมลแบบพนฐาน ใ ขอมลทเกบในหนวยความจาจะเปนคาของขอมลจรงๆ

ความแตกตางระหวางการแปลงขอมลโดยอตโนมตและ Typecasting

การแปลงขอมลโดยอตโนมตคอ การทชนดขอมลทมขนาดเลกกวาถกแปลงใหเปนชนดขอมลทมขนาดใหญกวาโดยอตโนมตใหเปนชนดขอมลทมขนาดใหญกวาโดยอตโนมต

Typecasting คอการทจะตองระบชนดขอมลทมขนาดเลกกวาใหกบนพจนทมชนดขอมลขนาดใหญกวามชนดขอมลขนาดใหญกวา

โปรแกรมเชงออปเจคจะมคณลกษณะเดนอยสามประการคอ การหอหม ไ ปการสบทอด และการมไดหลายรปแบบ

Page 63: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

สรปเนอหาของบท

modifier แบบ private ใชเพอปองกนการถกเรยกใชจากออปเจคอน ซงจะแตกตางจาก modifier แบบ public

Constructor หมายถง เมธอดทมชอเดยวกนกบชอคลาส แตจะไมมการสงคากลบและจะไมมการใสคยเวรด void

คยเวรด this ใชอางองคณลกษณะและเมธอดของออปเจคภายในเมธอด

ป ใ ใคาสง package เปนการระบวาคลาสอยในแพคเกจใด

คาสง import เปนการเรยกใชคลาสในแพคเกจตางๆ

คมอ Java API จะชวยในการคนหารายละเอยดของแพคเกจและคลาสตางๆทมอยในชดพฒนาโปรแกรม Java 2 SDK

Page 64: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

แบบฝกหด

ขอท 1• ทดลองคนหาขอมลโดยใชคมอ API ภาษาจาวา

ขอท 2 โ โ ใ • ทดลองเขยนโปรแกรมโดยใชหลกการของการหอหมเพอซอนคณลกษณะของ

ออปเจค

Page 65: บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์ แนะนําภาษาจาวาและเทคโนโลยีจาวา อธอธบายขนตอนการทางานของโปรแกรมภาษาจาวาิบายขนตอนการทั้

แบบฝกหด

ขอท 3• ทดลองเขยนโปรแกรมจาลองระบบธนาคาร โดยกาหนดใหมคลาสทชอ Account

ใ ใ ฝ ทมคณลกษณะเพอเกบยอดเงนในบญช และมเมธอดในการฝากเงน ถอนเงน และการแสดงยอดเงนคงเหลอในบญช และมคลาสทชอ Customer ทมคณลกษณะคอชอ นามสกล และบญชธนาคาร โดยมเมธอดในการกาหนดคา (set) ของคณลกษณะ ญ และดงคา(get) จากคณลกษณะเหลาน ทงนกาหนดใหเขยนโปรแกรมในแพคเกจทชอ Bank