บทท ่ี1 · 2016-02-17 · วัตถุประสงค ์...

Preview:

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

Recommended