Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
1บทท 1
โปรแกรมภาษาจาวาเบองตน
(Basic of Java Programming Language)
วตถประสงค
แนะนาภาษาจาวาและเทคโนโลยจาวา
อธบายขนตอนการทางานของโปรแกรมภาษาจาวาอธบายขนตอนการทางานของโปรแกรมภาษาจาวา
อธบายจดเดนของภาษาจาวา
อธบายหลกการเขยนโปรแกรมเชงออปเจค โดยอธบายความหมายของ• ออปเจค (object)คลาส (class)• คลาส (class)
• คณลกษณะ (attribute)• เมธอด (method)
อธบายการประกาศคลาสทมคณลกษณะและเมธอดอยในคลาส
วตถประสงค
อธบายการประกาศและสรางออปเจค
อธบายการเรยกใชคณลกษณะและเมธอดของออปเจคอธบายการเรยกใชคณลกษณะและเมธอดของออปเจค
แนะนาไวยากรณภาษาจาวาสญลกษณและคาตางๆทใชในภาษาจาวา• สญลกษณและคาตางๆทใชในภาษาจาวา
แนะนาขอมลคาคงท (literals) และชนดขอมลแบบพนฐาน (primitive data t ) types)
อธบายการประกาศตวแปร (variables) และคาสงกาหนดคา (assignment statement)
อธบายการแปลงชนดขอมล
วตถประสงค
อธบายคณลกษณะเดนของโปรแกรมเชงออปเจคสามประการคอ• การหอหม (Encapsulation)
• การสบทอด (Inheritance) • การมไดหลายรปแบบ (Polymorphism)
ป ไป อธบายหลกการของการหอหมทประกอบไปดวย• การซอนเรนขอมล (Information Hiding) • ความเปนโมดล (Modularity) ( y)
แนะนาเมธอดแบบ accessor
อธบายความหมายและการประกาศ Constructor
วตถประสงค
อธบายขนตอนการทางานของคาสง new
อธบายการใชคยเวรด thisอธบายการใชคยเวรด this
แนะนาโครงสรางโปรแกรมภาษาจาวาทมการใชคาสง package และimportimport
อธบายหลกการใชคมอ API (Application Programming Interface) ของภาษาจาวาภาษาจาวา
ภาษาจาวา
พฒนาขนโดยทมวจยของบรษทซนไมโครซสเตมส
เปนภาษาคอมพวเตอรเชงออปเจค (Object Oriented Programming)เปนภาษาคอมพวเตอรเชงออปเจค (Object Oriented Programming)
สามารถทางานไดกบระบบคอมพวเตอรหลายแพลตฟอรม
เรมเปนทนยมแพรหลายในชวงปลายป ค.ศ. 1995
ชดพฒนาโปรแกรมภาษาจาวาเวอรชนแรก (JDK 1.0) ( )
JDK 1.2 (Java 2) ออกมาในป ค.ศ. 1998
องคประกอบของเทคโนโลยจาวา
JVM (Java Virtual Machine)• ทาหนาทเปนอนเตอรพรตเตอร
JRE (Java Runtime Environment)ใ ใ โ• ใชในการรนโปรแกรม
J2SDK (Java 2 Software Development Kit)• เปนชดพฒนาโปรแกรมภาษาจาวา
Java Virtual Machine (JVM)
โปรแกรมภาษาจาวาจะคอมไพลไดไบทโคด โดย JVM จะเปน อนเตอรพรตเตอรทแปลไบทโคดใหเปนคาสงทภาษาเครองเขาใจ
จาวาไบทโคดสามารถจะรนขามแพลตฟอรม (platform) ได ถาแพลตฟอรมนนมJVM อย
JVM เปนโปรแกรมทขนอยกบแพลตฟอรม (platform specific)
ป โป ฟ ไ JVM อาจพฒนาเปนโปรแกรมซอฟตแวรหรอฮารดแวรได
โขนตอนการทางานของโปรแกรมภาษาจาวา
Java Runtime Environment (JRE)
JRE จะรนโคดทแปลมาจาก JVM โดยจะทางาน 3 ขนตอน คอ• โหลดไบทโคดโดยใช Class Loader
ไ โ โ ใ • ตรวจสอบไบทโคดโดยใช Byte Code Verifier• รนไบทโคดโดยใช Runtime Interpreter
ขนตอนการทางานของ JRE
Java Development Kit (JDK)
คอชดพฒนาโปรแกรมภาษาจาวาของบรษทซนไมโครซสเตมส
ชอใหมของ JDK เวอรชน 1 2 คอ Java 2ชอใหมของ JDK เวอรชน 1.2 คอ Java 2
เวอรชนปจจบนคอเวอรช◌น 1.4
ประกอบไปดวยโปรแกรมตางๆ อาทเชน• โปรแกรมคอมไพเลอร (javac.exe)โปรแกรมอนเตอรพรตเตอร (j )• โปรแกรมอนเตอรพรตเตอร (java.exe)
• โปรแกรมดบกเกอร
แตจะไมมโปรแกรมอดเตอรแตจะไมมโปรแกรมอดเตอร
แพลตฟอรมของเทคโนโลยจาวา
ประกอบไปดวย• Java Virtual Machine (JVM)• Java Application Programming Interface (Java API)
แพลตฟอรมของ Java 2
โหลกการของโปรแกรมเชงออปเจค
โปรแกรมเชงกระบวนการ (procedural) จะแบงการทางานของโปรแกรมออกเปนสวนๆตามฟงกชนของการทางาน
การปรบปรงหรอแกไขโปรแกรมเชงกระบวนการทาไดยาก
โปรแกรมเชงออปเจคจะแบงการทางานของโปรแกรมเปนออปเจคโปรแกรมเชงออปเจคจะแบงการทางานของโปรแกรมเปนออปเจค
การปรบปรงหรอแกไขโปรแกรมเชงออปเจคทาไดงายกวา จงเหมาะกบการ โป ใ ป ป ไ โป พฒนาโปรแกรมขนาดใหญทจะตองมการปรบปรงแกไขโปรแกรมอยตลอด
ออปเจค
ออปเจค (object) แบงไดเปนสองประเภทคอ• สงทเปนรปธรรม (tangible) คอสงทเปนวตถและจบตองไดอาทเชน นกศกษา ใบ
ป ป ลงทะเบยน ปากกา และรถ เปนตน• สงทเปนนามธรรม (intangible) คอสงทไมสามารถจบตองไดอาทเชน คะแนนรายชอวชา บญชเงนฝาก และตารางเทยวบน เปนตนญ
ออปเจคประกอบไปดวย• คณลกษณะ (attribute) หรอขอมล (data) ( ) ( )• เมธอด (method) หรอพฤตกรรม (behavior)
ตวอยางของออปเจค
นกศกษา อาจจะประกอบไปดวยคณลกษณะเชน รหส ชอ และเกรดเฉลย
และอาจจะมเมธอดเชน ลงทะเบยน สอบ และเดนและอาจจะมเมธอดเชน ลงทะเบยน สอบ และเดน
รถยนต อาจจะประกอบไปดวยคณลกษณะเชน ยหอ รน และส
และอาจจะมเมธอดเชน เคลอนท หยดและเลยว
สนข อาจจะประกอบไปดวยคณลกษณะเชน ชอ พนธ และส
และอาจจะมเมธอดเชน เหา คลาน และกระดกหาง
คลาส
เปรยบเสมอนพมพเขยว (template) ของออปเจค
ออปเจคทถกสรางมาจากคลาส (class) บางครงเรยกวาเปน instance ของคลาสออปเจคทถกสรางมาจากคลาส (class) บางครงเรยกวาเปน instance ของคลาส
คลาสหนงคลาสสามารถสรางออปเจคไดหลายออปเจค อาทเชน คลาส Studentอาจสรางออปเจค 1 2 หรอ 3 ซงเปนออปเจคของคลาส St d tอาจสรางออปเจค s1,s2 หรอ s3 ซงเปนออปเจคของคลาส Student
ตวอยางของออปเจคและคลาส
การประกาศคลาส
รปแบบการประกาศ
[modifier] class ClassName {[modifier] class ClassName {[class member]
}
ตวอยาง
public class Student {
}}
การประกาศคณลกษณะ
รปแบบการประกาศ
[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;
}}
การประกาศเมธอด
รปแบบการประกาศ
[modifier] return_type methodName([arguments]) {_
[method_body]
}
ตวอยาง
public void setName(String n) {
name = n;;
}
การประกาศและสรางออปเจค
รปแบบการประกาศ
[modifier] ClassName objectName;[modifier] ClassName objectName;
ตวอยาง
Student s1;
รปแบบการสรางรปแบบการสราง
objectName = new ClassName([arguments]);
ตวอยาง
s1 = new Student();s1 = new Student();
ใ การเรยกใชสมาชกของออปเจค
รปแบบการเรยกใชคณลกษณะของออปเจค
objectName attributeNameobjectName.attributeName
ตวอยาง
s1.name
รปแบบการเรยกใชเมธอดของออปเจครปแบบการเรยกใชเมธอดของออปเจค
objectName.methodName([arguments]);
ตวอยาง
s1 setName(“Thana”);s1.setName(“Thana”);
ไวยากรณภาษาจาวา
สญลกษณและคาทใชในภาษาจาวาประกอบดวย• คอมเมนต (comment)
• การตงชอ (identifier)• คยเวรด (keywords)• สญลกษณแยกคา (separators)ญ ( )• ชองวาง (white space)• ขอมลคาคงท (literals)
ชนดขอมลแบบพนฐาน
ชนดขอมลในภาษาจาวาแบงเปนสองประเภทใหญๆคอ• ชนดขอมลแบบพนฐาน (primitive data type)
• ชนดขอมลแบบอางอง (reference data type)
ป 4 ป ชนดขอมลแบบพนฐานแบงออกเปน 4 ประเภทดงน• ชนดขอมลตรรกะ (Logical) คอชนด boolean• ชนดขอมลอกขระ (Textual) คอชนด char ( )• ชนดขอมลตวเลขจานวนเตม (Integral) คอชนด byte,short,int และ long• ชนดขอมลตวเลขทศนยม (Floating point) คอชนด float และ double
ขนาดและชวงคาของชนดขอมลแบบพนฐาน
ชนดขอมล ขนาด (บต) ชวงคา
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
ตวแปรและการกาหนดคา
ตวแปรในภาษาจาวาอาจเปนตวแปรทมชนดขอมลแบบพนฐานหรอชนดขอมลแบบอางอง
ตวแปรทมชนดขอมลแบบพนฐานจะเกบคาของตวแปรในหนวยความจา• เชน int x = 7;
ตวแปรทมชนดขอมลแบบอางองจะเกบตาแหนงอางองในหนวยความจา• เชน String s = new String(“Thana”);
ตวแปรและการกาหนดคา
ภาษาจาวาจะกาหนดตาแหนงอางองเรมตนใหมคาเปน null โดยอตโนมตซงเนอทในหนวยความจาเพอเกบขอมลตางๆ ของตวแปรชนดขอมลแบบ ใ อางองจะถกสรางขน เมอมการเรยกใชคาสง new
ตวอยาง• คาสง Date d;• และคาสง d = new Date(16,8,2002);
การสงตวแปรผาน argument
กรณทสงตวแปรชนดขอมลแบบพนฐานใหกบ argument การเปลยนแปลงคาของargument ในเมธอดจะไมมผลกระทบตอคาของตวแปรทสงมา
กรณทสงตวแปรชนดขอมลแบบอางองใหกบ argument จะเปนการสงตาแหนงอางองใหกบ argument จงทาใหคาของตวแปรทสงมาจะถกเปลยน แปลงตามargument ในเมธอด
โตวอยางโปรแกรม
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;}}
โตวอยางโปรแกรม
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();
}}}
การแปลงชนดขอมล
การแปลงชนดขอมลมสองรปแบบคอ
• การแปลงขอมลทกวางขน (widening conversion) คอการแปลงจากชนดขอมลทม ขนาดเลกกวาไปเปนชนดขอมลทมขนาดใหญกวา
• การแปลงขอมลทแคบลง (narrowing conversion) คอการแปลงจากชนดขอมลทมใ ไป ป ใ ขนาดใหญกวาไปเปนชนดขอมลทมขนาดเลกลง ซงอาจมผลใหเสยความละเอยด
ของขอมลบางสวนไป
ตวอยางของการแปลงชนดขอมล
ภาษาจาวาจะปรบชนดขอมลใหอตโนมต ในกรณตอไปน
กาหนดคาชนดขอมลทเลกกวาใหกบตวแปรชนดขอมลทใหญกวาอาทเชนกาหนดคาชนดขอมลทเลกกวาใหกบตวแปรชนดขอมลทใหญกวาอาทเชนint i = 4;long l = i;นพจน i จะถกปรบชนดขอมลจาก int ใหเปน long โดยอตโนมตนพจน i จะถกปรบชนดขอมลจาก int ใหเปน long โดยอตโนมต
กาหนดคาชนดขอมลจานวนเตมใหกบจานวนเลขทศนยมอาทเชนdouble x = 3;double x 3;นพจน 3 จะถกปรบชนดขอมลจาก int ใหเปน double โดยอตโนมต
Typecasting
ภาษาจาวาจะสามารถทาการแปลงชนดขอมล ใหเปนชนดขอมลทมขนาดเลกลงได โดยใชวธการทเรยกวา typecasting
รปแบบ
(targetT pe) e pression(targetType) expression
ตวอยาง
int amount = (int)3.0;
คณลกษณะเดนของโปรแกรมเชงออปเจค
การหอหม (Encapsulation)
การสบทอด (Inheritance) การสบทอด (Inheritance)
การมไดหลายรปแบบ (Polymorphism)
การหอหม
คณลกษณะของออปเจคจะถกปองกนไวไมใหออปเจคอนทอยภายนอกเขาถงขอมลได
อยางอสระ
ออปเจคอนๆสามารถจะเรยกใชคณลกษณะของออปเจคไดโดยเรยกผานเมธอด
ขอดของการหอหม
การซอนเรนขอมล (Information Hiding) • ออปเจคสามารถตดตอกบออปเจคภายนอกผานเมธอดทเปน public interface ดงนนเรา
ป ป ป โ ไ ใสามารถทจะเปลยนตวแปร หรอเมธอดอนๆของออปเจคโดยไมมผลกระทบใดๆ
ความเปนโมดล (Modularity) โป ป ป ป ป ใ ป• การพฒนาโปรแกรมของแตละออปเจคเปนอสระตอกน ถามการเปลยนแปลงเกดขนภายในออป
เจคหนงกจะไมมผลกระทบตอออปเจคอนๆ
เมธอดแบบ accessor
คณลกษณะของคลาสจะถกซอนไวโดยการกาหนดให modifier เปนprivate
การกาหนดคาหรอเรยกดคณลกษณะของคลาสจะใชเมธอดทม modifier เปนการกาหนดคาหรอเรยกดคณลกษณะของคลาสจะใชเมธอดทม modifier เปนpublic
การกาหนดคาจะใชเมธอดแบบ setter การกาหนดคาจะใชเมธอดแบบ setter
การเรยกดคาคณลกษณะจะใชเมธอดแบบ getter
เมธอดแบบ setter
รปแบบ
public void setAttributeName(dataType arg) {public void setAttributeName(dataType arg) {
attributeName = arg;
}}
ตวอยางตวอยาง
public void setGPA(double GPA) {
gpa = GPA;gpa = GPA;
}
เมธอดแบบ getter
รปแบบ
public dataType getAttributeName() {public dataType getAttributeName() {
return attributeName;
}}
ตวอยาง
bli d bl tGPA() {public double getGPA() {
return gpa;
}}
โตวอยางโปรแกรม
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;
}}
โตวอยางโปรแกรม
public String getID() {return id;
}}public String getName() {
return name;}bli d bl tGPA() {public double getGPA() {
return gpa;}
}}
Constructor
เปนเมธอดทมชอเดยวกบชอคลาส
จะถกเรยกใชงานเมอมการสรางออปเจคโดยใชคาสง newจะถกเรยกใชงานเมอมการสรางออปเจคโดยใชคาสง new
รปแบบ
[modifier] ClassName([arguments]) {
[statements]
}}
constructor จะเปนเมธอดทไมตองระบชนดขอมลของคาทสงกลบและไมตองใชคย idเวรด void
Constructor แบบ default
โดยทวไปคลาสทกคลาสจะม constructor แบบ default
รปแบบรปแบบ
public ClassName() {
}}
constructor แบบ default จะเปน constructor ทไมมคาสงใดๆอยภายใน
ไ ใ ใ โคอมไพเลอรของภาษาจาวาจะใส constructor แบบ default ใหกบโปรแกรมโดยอตโนมต
ตวอยาง constructor แบบ default ของคลาส Student
public Student() {
}
การเขยน 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 ขนใหม
ขนตอนการทางานของคาสง new
กาหนดเนอทในหนวยความจาใหกบออปเจค
กาหนดคาเรมตนใหกบคณลกษณะของออปเจคกาหนดคาเรมตนใหกบคณลกษณะของออปเจค
กาหนดคาของคณลกษณะของออปเจคตามคาสงกาหนดคาทประกาศไว
เรยกใช constructor
ตวอยางคลาส 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;
}}
}
รปแสดงขนตอนการทางานของคาสง new
คาสง MyDate d1 = new MyDate(16,8,1972);
คยเวรด this
คยเวรด this หมายถงออปเจคของตวเอง
คยเวรด this ใชอางองคณลกษณะและเมธอดของออปเจคภายในเมธอด ซงมคยเวรด this ใชอางองคณลกษณะและเมธอดของออปเจคภายในเมธอด ซงมรปแบบดงน
this attirb teNamethis.attirbuteName;
this.methodName();
โตวอยางโปรแกรม
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);
}}}
แพคเกจ
ซอฟตแวรแพคเกจชวยในการจดการการพฒนาโปรแกรมขนาดใหญ
ในโปรแกรมภาษาจาวา แพคเกจจะเปนทรวมของคลาสของภาษาจาวาหลายๆคลาสในโปรแกรมภาษาจาวา แพคเกจจะเปนทรวมของคลาสของภาษาจาวาหลายๆคลาส
โปรแกรมอาจแบงเปนแพคเกจและแพคเกจยอย (Subpackage)
แพคเกจจะเกบไวในไดเรกทอร (Directory) ซงจะเปนชอของแพคเกจ
ตวอยาง
โครงสรางโปรแกรมภาษาจาวา
รปแบบโปรแกรมภาษาจาวามดงน[<package_declaration>]
[<import_declaration>]
[<class_declaration>]
คาสง package
คาสง package เปนการระบวาคลาสอยในแพคเกจใด
รปแบบของคาสง packageรปแบบของคาสง packagepackage <package_name>[<sub_package_name>];
ตวอยางตวอยางpackage faculty.domain;
โปรแกรมภาษาจาวาหนงโปรแกรมจะมคาสง package ไดเพยงคาสงเดยวโปรแกรมภาษาจาวาหนงโปรแกรมจะมคาสง package ไดเพยงคาสงเดยวโดยจะเปนคาสงแรกของโปรแกรม
ไ ไ ใ กรณทไมมคาสง package คลาสจะถกกาหนดไวในแพคเกจ default
คาสง 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 ไดหลายคาสง
คมอ Java API
Java API เปนขอกาหนดทวาดวยคลาสและอนเตอรเฟสตางๆทกาหนดไวในแพคเกจมาตราฐานของภาษาจาวา
คมอ Java API จะแสดงรายละเอยดตางๆของคลาสหรออนเตอรเฟสดงน• ลาดบการสบทอดของคลาส
• คาอธบายเกยวกบคลาสและจดประสงคทวไป• รายชอคณลกษณะตางๆ ของคลาส• รายชอเมธอดตางๆ ของคลาส• รายชอเมธอดตางๆ ของคลาส• รายชอ Constructor ตางๆ ของคลาส• คาอธบายรายละเอยดของคณลกษณะแตละตวของคลาส
• คาอธบายรายละเอยดของเมธอดแตละตวของคลาส• คาอธบายรายละเอยดของConstructor แตละตวของคลาส
สรปเนอหาของบท
เทคโนโลยภาษาจาวาประกอบไปดวยองคประกอบหลกๆสามสวนคอ JVM, JRE และ J2SDK
คอมไพเลอรของภาษาจาวาจะทาหนาทแปลโปรแกรมภาษาจาวาใหเปนโปรแกรมไบทโคด และจะใชจาวาอนเตอรพรตเตอร (JVM) ในการแปลโปรแกรมไบทโคดใหเปนภาษาเครอง ทาใหโปรแกรมภาษาจาวาสามารถทางานขามแพลตฟอรมได ถาระบบคอมพวเตอรนนม JVM อย
JRE จะรนโปรแกรมไบทโคดทแปลมาจาก JVM
ชดพฒนาโปรแกรมภาษาจาวา Java 2 SDK ประกอบไปดวยโปรแกรมตางๆชดพฒนาโปรแกรมภาษาจาวา Java 2 SDK ประกอบไปดวยโปรแกรมตางๆทสาคญคอ โปรแกรมคอมไพเลอร (javac.exe) และโปรแกรมอนเตอรพรตเตอร (java.exe)พรตเตอร (java.exe)
สรปเนอหาของบท
แพลตฟอรมของ Java ประกอบไปดวย JVM และ Java API ซง Java 2 มแพลตฟอรม 3 แบบคอ J2SE, J2EE และ J2ME
โปรแกรมจาวาทอยบนแพลตฟอรม J2SE สามารถพฒนาไดสองรปแบบคอโปรแกรมจาวาประยกตซงจะทางานภายใต JVM โดยตรง และโปรแกรมจาวาแอปเพลตซงจะทางานภายใตเวบบราวเซอรทม JVM
โปรแกรมเชงออปเจคจะมคานยามทสาคญสองคาคอ ออปเจคและคลาสโปรแกรมเชงออปเจคจะมคานยามทสาคญสองคาคอ ออปเจคและคลาส
ออปเจคคอสงตางๆทมอยในชวตประจาวน จะประกอบไปดวยคณลกษณะและ เมธอดและ เมธอด
คลาสเปรยบเสมอนพมพเขยวของออปเจค ออปเจคจะถกสรางมาจากคลาสป ป ไ ออปเจคหลายออปเจคสามารถถกสรางจากคลาสหนงคลาสได
สรปเนอหาของบท
ภาษาจาวามนยามในการเขยนโปรแกรมเชงออปเจค เพอประกาศคลาสคณลกษณะ เมธอด และ ออปเจค
การตงชอในภาษาจาวา• สาหรบคลาส นยมขนตนดวยตวอกษรพมพใหญ
• สาหรบเมธอดและตวแปร นยมขนตนดวยตวอกษรพมพเลก• ถาชอทตงขนมมากกวา 1 คา นยมขนตนคาใหมดวยตวอกษรพมพใหญ• ตองไมตรงกบคยเวรด• ตองไมตรงกบคยเวรด
ชนดขอมลพนฐานทใชในภาษาจาวามทงหมด 8 ชนดคอ char, byte, short, int long float double และ boolean สวน String เปนชนดขอมลคลาสint, long, float, double และ boolean สวน String เปนชนดขอมลคลาส
สรปเนอหาของบท
ขอมลทเกบในหนวยความจาของชนดขอมลแบบอางอง จะเปนตาแหนงอางองทเกบขอมลในหนวยความจา แตในกรณของชนดขอมลแบบพนฐาน ใ ขอมลทเกบในหนวยความจาจะเปนคาของขอมลจรงๆ
ความแตกตางระหวางการแปลงขอมลโดยอตโนมตและ Typecasting
การแปลงขอมลโดยอตโนมตคอ การทชนดขอมลทมขนาดเลกกวาถกแปลงใหเปนชนดขอมลทมขนาดใหญกวาโดยอตโนมตใหเปนชนดขอมลทมขนาดใหญกวาโดยอตโนมต
Typecasting คอการทจะตองระบชนดขอมลทมขนาดเลกกวาใหกบนพจนทมชนดขอมลขนาดใหญกวามชนดขอมลขนาดใหญกวา
โปรแกรมเชงออปเจคจะมคณลกษณะเดนอยสามประการคอ การหอหม ไ ปการสบทอด และการมไดหลายรปแบบ
สรปเนอหาของบท
modifier แบบ private ใชเพอปองกนการถกเรยกใชจากออปเจคอน ซงจะแตกตางจาก modifier แบบ public
Constructor หมายถง เมธอดทมชอเดยวกนกบชอคลาส แตจะไมมการสงคากลบและจะไมมการใสคยเวรด void
คยเวรด this ใชอางองคณลกษณะและเมธอดของออปเจคภายในเมธอด
ป ใ ใคาสง package เปนการระบวาคลาสอยในแพคเกจใด
คาสง import เปนการเรยกใชคลาสในแพคเกจตางๆ
คมอ Java API จะชวยในการคนหารายละเอยดของแพคเกจและคลาสตางๆทมอยในชดพฒนาโปรแกรม Java 2 SDK
แบบฝกหด
ขอท 1• ทดลองคนหาขอมลโดยใชคมอ API ภาษาจาวา
ขอท 2 โ โ ใ • ทดลองเขยนโปรแกรมโดยใชหลกการของการหอหมเพอซอนคณลกษณะของ
ออปเจค
แบบฝกหด
ขอท 3• ทดลองเขยนโปรแกรมจาลองระบบธนาคาร โดยกาหนดใหมคลาสทชอ Account
ใ ใ ฝ ทมคณลกษณะเพอเกบยอดเงนในบญช และมเมธอดในการฝากเงน ถอนเงน และการแสดงยอดเงนคงเหลอในบญช และมคลาสทชอ Customer ทมคณลกษณะคอชอ นามสกล และบญชธนาคาร โดยมเมธอดในการกาหนดคา (set) ของคณลกษณะ ญ และดงคา(get) จากคณลกษณะเหลาน ทงนกาหนดใหเขยนโปรแกรมในแพคเกจทชอ Bank