java-chapter 12 classes and objects

24
157 © สงวนลิขสิทธิพฤศจิกายน 2553 (ปรับปร ุงครั้งที7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์ ) Computer Programming using Java Classes and Objects - 12 CHAPTER 12 คลาสและอ๊อบเจ็ค (Classes and Objects) 1. ความร้เบื ้องต ้นของ คลาสและอ๊อบเจ็ค (Introduction to Classes and Objects) 1. องค์ประกอบและลักษณะทั ่วไปของคลาสและอ๊อบเจ็ค 2. นิยามและคําศัพท์ที ่เกี ่ยวข้องกับคลาสและอ๊อบเจ็ค Package Constructor Methods Attributes ในคลาส มีแอตทริบิว (Attributes) ตัวสร้าง (Constructors) และเมท็อด (Methods) ในแพ็คเก็จ (Package) มี คลาส (Classes) นเมท็อด มีตัวแปร และคําสั่ง Attributes . . . Method-1 Method-N คลาสแต่ละคลาสสามารถสร้างตัวแทนของ คลาสนั้น (Instance of Class) ขึ้นได ซึ่ง เรียกว่าอ๊อบเจ็ค (Objects) Attributes . . . Method-1 Method-N Attributes . . . Method-1 Method-N new new new อ๊อบเจ็ค เป็นตัวสําเนาของคลาสต้นแบบ ซึ่ง จะมีทั้งแอตทริบิว และเมท็อด ทุกๆ ตัวเหมือน กับที่คลาสต้นแบบ มี (แต่ไม่มีตัวสร้าง) แพ็คเก็จ (Package) คือ สิ่งที่เก็บรวบรวมคลาส และห่อหุ ้มคลาสเอาไว้เป็นกลุ ่มๆ (จะยังไม่กล่าวถึงมากนัก) คลาส (Class) คือ ต้นแบบของโปรแกรม หนึ่งๆ ซึ่งภายในประกอบไปด้วย แอตทริบิว ตัวสร้าง และเมท็อด แอตทริบิว (Attribute) คือ ตัวแปรของคลาส หรือตัวแปรที่ประกาศอยู ่ภายในคลาสแต่อยู ่นอกเมท็อดใดๆ Constructor Methods Attributes Constructor Methods Attributes ตัวสร้าง (Constructor) คือ ส่วนที่กําหนดค่าเริ่มต้นของคลาส ซึ่งจะกําหนดค่าเริ่มต้นให้กับแอตทริบิวทุกตัวในคลาส Class A Class B Class C Object b Object a Object c นําเสนอมุมมองในการเขียนโปรแกรมแบบใหม่ที่เรียกว่า การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) เมท็อด (Method) คือ ส่วนการทํางานย่อยของคลาส หรือโปรแกรมย่อยที่บ่งบอกการกระทําของคลาส ตัวแปร (Variable) คือ ตัวแปรของเมท็อด หรือตัวแปรดๆ ที่ประกาศภายในเมท็อดใดเมท็อดหนึ่ง คําสั ่ง (Statement) คือ คําสั่งภายในเมท็อด หรือคําสั่งใดๆ (if, for, ) ที่ปรากฎภายในเมท็อดใดเมท็อดหนึ่ง อ๊อบเจ็ค (Object) คือ ตัวแทนของคลาส ซึ่งจะมีทุกอย่างเหมือนที่คลาสต้นแบบมี (ยกเว้นตัวสร้างที่ไม่มี )

Upload: wongyos-keardsri

Post on 28-May-2015

1.309 views

Category:

Documents


6 download

DESCRIPTION

Chapter 12 Classes and Objects

TRANSCRIPT

Page 1: Java-Chapter 12 Classes and Objects

157

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

CHAPTER 12

คลาสและออบเจค

(Classes and Objects)

1. ความรเบองตนของ คลาสและออบเจค (Introduction to Classes and Objects)

1. องคประกอบและลกษณะทวไปของคลาสและออบเจค

2. นยามและคาศพททเกยวของกบคลาสและออบเจค

Package

Constructor

Methods

Attributes ในคลาสมแอตทรบว (Attributes) ตวสราง

(Constructors) และเมทอด (Methods)

ในแพคเกจ (Package) ม

คลาส (Classes)

ในเมทอดมตวแปรและคาสง

Attributes

. . .

Method-1

Method-N

คลาสแตละคลาสสามารถสรางตวแทนของ

คลาสนน (Instance of Class) ขนได ซง

เรยกวาออบเจค (Objects)

Attributes

. . .

Method-1

Method-N

Attributes

...

Method-1

Method-N

new new new

ออบเจคเปนตวสาเนาของคลาสตนแบบ ซง

จะมทงแอตทรบวและเมทอดทกๆ ตวเหมอน

กบทคลาสตนแบบม (แตไมมตวสราง)

แพคเกจ (Package) คอ สงทเกบรวบรวมคลาสและหอหมคลาสเอาไวเปนกลมๆ (จะยงไมกลาวถงมากนก)

คลาส (Class) คอ ตนแบบของโปรแกรมหนงๆ ซงภายในประกอบไปดวย แอตทรบว ตวสราง และเมทอด

แอตทรบว (Attribute) คอ ตวแปรของคลาส หรอตวแปรทประกาศอยภายในคลาสแตอยนอกเมทอดใดๆ

Constructor

Methods

Attributes

Constructor

Methods

Attributes

ตวสราง (Constructor) คอ สวนทกาหนดคาเรมตนของคลาส ซงจะกาหนดคาเรมตนใหกบแอตทรบวทกตวในคลาส

Class A Class B Class C

Object b Object a Object c

นาเสนอมมมองในการเขยนโปรแกรมแบบใหมทเรยกวา การเขยนโปรแกรมเชงวตถ (Object-Oriented Programming)

เมทอด (Method) คอ สวนการทางานยอยของคลาส หรอโปรแกรมยอยทบงบอกการกระทาของคลาส

ตวแปร (Variable) คอ ตวแปรของเมทอด หรอตวแปรใดๆ ทประกาศภายในเมทอดใดเมทอดหนง

คาสง (Statement) คอ คาสงภายในเมทอด หรอคาสงใดๆ (if, for, …) ทปรากฎภายในเมทอดใดเมทอดหนง

ออบเจค (Object) คอ ตวแทนของคลาส ซงจะมทกอยางเหมอนทคลาสตนแบบม (ยกเวนตวสรางทไมม)

Page 2: Java-Chapter 12 Classes and Objects

158

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

โจทยขอท 1 [ระดบงาย] จงระบสวนประกอบตางๆ ของคลาสจากโปรแกรมตอไปน (10 คะแนน)

จากโจทยขอท 1 สามารถวาดเปน Class Diagram เพอใชประกอบความเขาใจไดดงน

โจทยขอท 2 [ระดบงาย] จงพจารณาขอความตอไปนถก ( ) หรอผด ( ) (15 คะแนน) 1) คลาสทกคลาสตองมเมทอดอยางนอย 1 เมทอดเสมอ (ไมมเมทอดไมได)

2) คลาสทกคลาสตองมเมทอด main(…) เสมอ เพอเปนตวประสานเมทอดอนๆ

3) แอตทรบวของคลาสจะมหรอไมมกได ซงขนอยกบการออกแบบและการใชงานคลาสนน

4) คลาสสามารถมแอตทรบวเพยงสวนเดยวไดโดยไมตองมเมทอด (ประกาศเพยงแอตทรบว)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public class Num { private int x; private double y; public Num() { x = 0; y = 0.0; } public Num(int m, double n) { x = m; y = n; } public int addNX(int n) { return n + x; } public double addNY(double n) { return n + y; } public void showXY() { System.out.println(x); System.out.println(y); } }

1 2 3 4 5 6 7 8 9 10

public class RunNum { public static void main(String[] args){ Num obj = new Num(5, 7.0); obj.showXY(); int a = obj.addNX(4); double b = obj.addNY(13.0); System.out.println(a); System.out.println(b); } }

ผลลพธทได

Num

Num() Num(int m, double n)

int x double y

int addNX(int n) double addNY(double n)void showXY()

obj: Num

x = 5 y = 7.0

addNX(int n) addNY(double n) showXY()

RunNum

public static void main(…) { Num obj = new Num(5, 7.0); obj.showXY(); int a = obj.addNX(4); ...

}

new

Page 3: Java-Chapter 12 Classes and Objects

159

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

5) คลาสสามารถมเมทอดเพยงสวนเดยวไดโดยไมตองมแอตทรบว

6) ออบเจคเปนตวแทนของคลาส และมแอตทรบวและเมทอดทกตวเหมอนทคลาสนนม

7) ตวแปรทประกาศภายในเมทอดใดๆ สามารถเรยกใชไดเฉพาะเมทอดนน

8) ตวแปรทประกาศภายนอกเมทอดใดๆ สามารถเรยกใชไดจากทกๆ เมทอด

9) ตวแปรทประกาศภายนอกเมทอดใดๆ คอแอตทรบว หรอตวแปรของคลาส

10) ตวแปรทประกาศภายในเมทอดใดๆ คอตวแปรทวไป หรอตวแปรของเมทอด

11) แอตทรบวสามารถประกาศชอซากนไดแตจะตองกาหนดคาเรมตนทตางกน

12) เมทอดสามารถประกาศชอซากนไดแตจะตองมรายการพารามเตอรทตางกน

13) ตวสรางจะปรากฎอยในทกออบเจคทสรางจากคลาสตนแบบ

14) ตวสรางทาหนาทในการกาหนดคาเรมตนใหกบแอตทรบวทกตวเมอเรมสรางออบเจคใหม

15) แอตทรบวในคลาสตนแบบจะตองกาหนดคาเรมตนเสมอเมอเรมสรางคลาสตนแบบ

2. คลาส (Classes)

1. การประกาศและสรางองคประกอบของคลาส คลาสหนงๆ มองคประกอบ 3 สวนไดแก แอตทรบว ตวสราง และเมทอด ซงมวธการประกาศและสรางดงตอไปน 1) การประกาศและสรางคลาส

ตวอยาง

2) การประกาศและสรางแอตทรบว ซงจะคลายกบการประกาศและสรางตวแปรในบทท 2

[ตวบงคณลกษณะ] class <ชอคลาส> {

[แอตทรบว (มกตวกได)]

[ตวสราง (มกตวกได)]

[เมทอด (มกตวกได)] } .

[ตวบงคณลกษณะ] <ประเภทขอมล> <ชอแอตทรบว>;

หวคลาส

ตวคลาส

1 2 3 4 5 6 7 8

public class Num { int x; public double y; Num() { x = 0; y = 0.0; } ...

}

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

ถาชอมหลายคาสามารถเขยนแบบหลงอฐได

ตวบงคณลกษณะ (Modifier) จะมหรอไมมกได

ถามจะมไดดงนคอ public และ final

ถาสรางคลาสหลายคลาสอยภายในแฟม *.java เดยว

กน จะตองมเพยง 1 คลาสเทานนทเปนแบบ public แต

ถาสรางคลาสแบบแยกแฟมกน (หนงแฟมหนงคลาส) จะ

สามารถใช public ไดในทกคลาส (ในบทนกาหนดให

แตละคลาสสรางแบบแยกแฟมกน)

ตวบงคณลกษณะ (Modifier) จะมหรอไมมกได ถามจะมไดดงนคอ

+ public - private # protected static final

Page 4: Java-Chapter 12 Classes and Objects

160

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

ตวอยาง

3) การประกาศและสรางตวสราง ตวสราง (Constructor) คอ เมทอดทมชอเดยวกบชอคลาส (เมทอดทชอขนตนดวยตวอกษรพมพใหญ)

ตวอยาง

4) การประกาศและสรางเมทอด จะเหมอนกบการประกาศและสรางเมทอดในบทท 8

ตวอยาง

[ตวบงคณลกษณะ] <ประเภทขอมลทสงกลบ > <ชอเมทอด> ([พารามเตอร]) { [ตวแปรและคาสง] } .

หวเมทอด ตวเมทอด

1 2 3 4 5

public class Data { public static int n = 1; private double data; ...

}

โดยทวไปแอตทรบวทม static กากบอย จะกา-

หนดคาเรมตนใหแอตทรบวทนทเมอเรมสรางคลาส

ตนแบบ แตแอตทรบวอนๆ ทไมม static กากบ

จะไมมการกาหนดคาเรมตนใดๆ ทงสน

[ตวบงคณลกษณะ] <ชอตวสราง> ([พารามเตอร]) { [กาหนดคาเรมตนใหกบแอตทรบวทกตว] } .

ตวสรางไมม Return Type

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

public class Number { public long x; private int y; public Number() { x = 0L; y = 0; } public Number(long a, int b) { x = a; y = b; } public Number(double k) { x = y = (int) k; } ...

}

ตวบงคณลกษณะจะมหรอไมมกได ถา

มจะมไดแบบเดยวคอ public

วธการเขยนตวสราง คอ ใหดชอคลาสวาชออะไร ก

จะใหชอตวสรางเปนชอเดยวกบชอคลาสนน

ตวสรางมไดหลายแบบซง Overload กน

ตวสรางถกเรยกใชทกครงเมอมการสรางออบเจคใหม

คลาสใดทไมมตวสราง คอมไพเลอรจะใสตวสรางให

อตโนมตซงเปนตวสรางเรมตน (Default Constructor)

แตถามตวสรางอยแลว คอมไพเลอรจะใชตวสรางนน

ในการทางาน โดยไมมการใสตวสรางเรมตนใหอก

1 2 3 4 5 6 7 8

public class Operation { ... public int incrX(int x) { x = x + 1; return x; } ...

}

มอดดฟายเออรของเมทอดมไดดงนคอ

public, private, protected,

static และ final

ดรายละเอยดเพมเตมในบทท 8 (ทเรยนผานมา)

เมทอดทกเมทอดภายในคลาสสามารถเรยกใชงานแอตทรบวได

Page 5: Java-Chapter 12 Classes and Objects

161

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

โจทยขอท 3 [ระดบงาย] จงเขยนโปรแกรมภาษาจาวาใหสมบรณเพอสร างคลาสชอ Course ซงเปนตนแบบของวชาใดๆ ในจฬาฯ โดยประกอบไปดวยรายละเอยดดงตอไปน (30 คะแนน)

public class Course {

//แอตทรบว 3 ตว (โดยไมตองกาหนดคาใดๆ ใหกบแอตทรบว) มดงตอไปน (3 คะแนน) //แอตทรบวชอ id แบบ private เพอเกบรหสวชา (Course ID) //แอตทรบวชอ title แบบ public เพอเกบชอวชา (Course Title) //แอตทรบวชอ credit แบบ protected เพอเกบจานวนหนวยกต (Credit)

//ตวสรางแบบไมมพารามเตอรใดๆ เพอกาหนดคาเรมตนใหกบแอตทรบวทง 3 ตวตามคาเรมตนของประเภทแอตทรบวนนๆ (เชน int เปน 0, String เปน "" เปนตน) (3 คะแนน)

//ตวสรางแบบมพารามเตอร 3 ตว เพอกาหนดคาเรมตนใหกบแอตทรบวทง 3 ตวตามลาดบ (3 คะแนน)

//เมทอด setID(…)แบบ public ทรบตวเลขจานวนเตมผานทางพารามเตอรหนงคา เพอใชสาหรบกาหนดคาใหกบแอตทรบว id โดยไมตองคนคากลบ (3 คะแนน)

ใหจนตนาการวาแอตทรบวเหลานมคาพรอมแลว สามารถเรยกใชไดเลย

Page 6: Java-Chapter 12 Classes and Objects

162

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

//เมทอด setTitle(…)แบบ public ทรบขอความผานทางพารามเตอรหนงคา เพอใชสาหรบกา-หนดคาใหกบแอตทรบว title โดยไมตองคนคากลบ (3 คะแนน)

//เมทอด setCredit(…)แบบ public ทรบตวเลขจานวนจรงผานทางพารามเตอรหนงคา เพอใชสา-หรบกาหนดคาใหกบแอตทรบว credit โดยไมตองคนคากลบ (3 คะแนน)

//เมทอด getLevel(…)แบบ public เพอคนคาระดบการศกษาทระบในรหสวชา โดยใหตวเลขหลกท 3 จากทางขวามอของรหสวชาแทนระดบการศกษา เชน 2110191 ตวเลข 1 แทนระดบการศกษา เปนตน ซงระดบการศกษาประกอบไปดวย 2 ระดบไดแก Undergraduate (ตวเลข 1-4) และ Graduated (ตวเลข 5 เปนตนไป) โดยกาหนดใหคนคาเปนชอของระดบการศกษานนๆ (3 คะแนน)

//เมทอด getFaculty(…)แบบ public เพอคนคารหสคณะทเปดสอนวชาดงกลาว โดยรหสคณะคอตวเลขสองหลกแรกของรหสวชาเรมจากทางซายมอ เชน 2110191 ตวเลข 21 แทนรหสคณะ เปนตน

(3 คะแนน)

Page 7: Java-Chapter 12 Classes and Objects

163

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

//เมทอด getDepartment(…)แบบ public เพอคนคารหสภาควชาทเปดสอนวชาดงกลาว โดยรหสภาควชาคอตวเลขสองหลกท 3-4 ของรหสวชาเรมจากทางซายมอ เชน 2110191 ตวเลข 10 แทนรหสของภาควชา เปนตน (3 คะแนน)

//เมทอด toString(…)แบบ public เพอคนคารายละเอยดของวชาทเกบอยในแอตทรบวทกตวในรปแบบของขอความดงตวอยางเชน 2110191 Innovative Thinking (3) เปนตน (3 คะแนน)

} //End of class

2. ขอบเขตของตวแปร พารามเตอร และแอตทรบว 1) ตวแปร คอ ตวแปรทประกาศอยภายในเมทอด โดยจะปรากฏอยทตวเมทอด (Body) ซงถาตวแปรใดประ

กาศในเมทอดไหนแลวจะเรยกใชงานไดแตเพยงในเมทอดนนเทานน (Local Variable)

2) พารามเตอร คอ ตวแปรทประกาศอยภายในเมทอด แตจะปรากฏอยทหวเมทอด (Head) จงเรยกชอเสย

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

3) แอตทรบว คอ ตวแปรทประกาศอยภายในคลาสแตอยนอกเมทอดใดๆ ซงถาแอตทรบวประกาศขนแลว

จะสามารถเรยกใชงานไดจากทกเมทอดภายในคลาสนน (Global Variable)

ตวอยาง

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

public class Test { private static int x = 10; private static int y = 1; public static int getX() { return x; } public static int getX(int x) { return x; } public static int incX(int y) { return x + y; } public static void main(String[] args) { int x = 5; System.out.println(x); 5 System.out.println(y); 1 System.out.println(getX()); 10 System.out.println(getX(2)); 2 System.out.println(incX(x)); 15 } }

x และ y คอ แอตทรบว getX() คนคาแอตทรวบว x

getX(int x) คนคาพารามเตอร

คา x มาจากแอตทรบว x

คา y มาจากพารามเตอร y

แสดงคา x จากตวแปร x

แสดงคา y จากแอตทรบว y

ตวแปร x ในเมทอด main(…) เปนคนละตวกบพารามเตอร x ในเมทอด getX(int x)

Page 8: Java-Chapter 12 Classes and Objects

164

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

4) ภาพรวมของตวแปร พารามเตอร และแอตทรบว

โจทยขอท 4 [ระดบงาย] จงแสดงผลลพธจากโปรแกรมและตอบคาถามตอไปน (10 คะแนน)

3. ออบเจค (Objects)

1. นยามของออบเจค 1) ออบเจคเปนตวแทนของคลาส ซงใชสาหรบอางองแอตทรบวและเมทอดภายในคลาสนน โดยทวไปคลาสท

สรางขนเปนเพยงคลาสตนแบบทไมสามารถใชงานไดจรง ดงนนการสรางออบเจคกเปนเสมอนการคดลอก

คลาสตนแบบเพอนาไปใชงานนนเอง (การคดลองทาใหคลาสตนแบบไมเสยหาย)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

public class Test { private static int x = 5; private static int y = 2; public static void main(String[] args) { int x = 9; System.out.println(x); System.out.println(getX()); System.out.println(showX()); y = 1; System.out.println(y); System.out.println(getY()); System.out.println(showY()); int y = 11; System.out.println(y); System.out.println(getY()); System.out.println(showY()); } public static int getX() { return x; } public static int getY() { return y; }

public static int showX() { int x = 7; return x; } public static int showY() { int y = 12; return y; } }

1) คา y ในบรรทดท 10 คอแอตทรบว y หรอตวแปร y

2) คา y ในบรรทดท 14 คอแอตทรบว y หรอตวแปร y

public class TestClass { public int add( ) { return … ; } //End of method } //End of class

Attribute 1

Parameter2

Variable 3

ตวแปรกบพารามเตอรประ กาศชอซากนไดหรอไม?

ตวแปรกบแอตทรบวประ กาศชอซากนไดหรอไม?

Page 9: Java-Chapter 12 Classes and Objects

165

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

2) กระบวนการเรยกและการทางานของออบเจคมดงน

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

1) การประกาศตวแปรออบเจค

เชน Student std; / Car car; / Account obj;

2) การสรางออบเจค (ใชการ new)

เชน std = new Student(52300121); / car = new Car(); / obj = new Account(101);

3) รวมขนตอน 2 ขนตอนในขอ 1 และ 2 เขาดวยกน (นยมประกาศและสรางออบเจคแบบวธน)

เชน Student std = new Student(52300121); / Account obj = new Account(101);

หมายเหต คาพารามเตอรทจะใสเขาไปภายในวงเลบหลงชอคลาสหรอหลงชอตวสรางนน ใหพจารณาจาก

คลาสตนแบบวามตวสรางแบบใดบางทประกาศขนใชงาน

4) ตวอยางการสรางและใชงานออบเจค

<ชอคลาส> <ชอออบเจค>;

<ชอออบเจค> = new <ชอคลาส>(…);

<ชอคลาส> <ชอออบเจค> = new <ชอคลาส>(…);

a.attr1 = 0 a.method1() a.method2()

Attributes

...

Method-1

Method-N

New Object เรยกใช

เหมอนการประกาศตวแปรทวไปเพยงแตมชนดตวแปรเปนชอคลาส

การคดลอก

Constructor

Methods

Attributes

Class A คลาสตนแบบ

Object a

ออบเจคมทกอยางเหมอน

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

เรยกใชแอตทรบวและเมทอด

ผานทางออบเจค

<ชอคลาส> <ชอออบเจค> = new <ตวสราง>;

สวนของ <ชอคลาส>(…) กคอตวสราง (Constructor) ของคลาสนนเอง

1 2 3 4 5 6 7 8 9 10 11 12

public class Digit { public int x; Digit() { x = 0; } Digit(int n) { x = n; } public int getX(){ return x; }

} คลาสตนแบบ

1 2 3 4 5 6 7 8 9 10

public class TestDigit { public static void main(String[] args){ Digit d = new Digit(); Digit e = new Digit(1); Digit f = new Digit(2); int digit1 = d.getX(); int digit2 = e.getX(); int digit3 = f.getX(); }

}

ตวสราง แอตทรบวทกตวของ

ออบเจคจะถกกาหนด

คาเรมตนโดยตวสราง

คลาสประมวลผล

ภายในเมทอด main มการเรยกใชงานคลาสตนแบบผานทาง

ออบเจค โดยการเอา ชอออบเจค + จด + สงทจะเรยก

Page 10: Java-Chapter 12 Classes and Objects

166

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

โจทยขอท 5 [ระดบงาย] จงหาผลลพธจากการทางานของโปรแกรมตอไปน (8 คะแนน)

โจทยขอท 6 [ระดบงาย] จงเขยนคลาส TestNumber ใหสมบรณ เพอเรยกใชงานคลาส Number โดยการสรางออบเจคทมชนดเปน Number และเรยกใชงานเมทอดตามเงอนไขตอไปน (10 คะแนน)

//ประกาศหวคลาส TestNumber import java.util.Scanner; public static void main(String[] args) { Scanner kb = new Scanner(System.in);

//สรางออบเจคชอ no1 ทมชนดเปนคลาส Number (เปนตวแทนของคลาส Number)

1 2 3 4 5 6 7 8 9 10 11 12

public class Student { public int id; public String name; Student() { id = 0; name = ""; } Student(int i, String n) { id = i; name = n; }

public String getName() { return name; } public int getID() { return id; } public char calGrad(int score) { if(score > 60) { return 'S'; } else { return 'U'; } } }

1 2 3 4 5 6 7 8 9 10 11 12

public class TestStudent { public static void main(String args[]){ Student y = new Student(101,"Taksin"); Student z = new Student(102,"Apisit"); Student x = new Student(); System.out.println(x.getID() + "," + x.getName()); System.out.println(y.getID() + "," + y.getName()); System.out.println((z.getID() + 1) + "," + z.getName()); System.out.println(y.getName()+ ":" + y.calGrad(49)); System.out.println(z.getName()+ ":" + z.calGrad(79)); } }

คลาสประมวลผล

คลาสตนแบบ

1 2 3 4 5 6 7 8 9 10 11

public class Number { private double x; private double y; Number() { x = y = 0; } Number(double a, double b) { x = a; y = b; }

public double add() { return x + y; } public double sub() { return x - y; } public double mul() { return x * y; } public double div() { return x / y; } public double mod() { return x % y; } }

คลาสตนแบบ

Page 11: Java-Chapter 12 Classes and Objects

167

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

//รบคาจานวนจรงจากแปนพมพ 2 คาเพอใชในการสรางออบเจคชอ no2 ทมชนดเปนคลาส Number

//แสดงผลการบวก การลบ การคณ การหาร และการมอด โดยเรยกเมทอดผานทางออบเจค no2

} //End of main } //End of class

4. การกาหนดคณสมบตและการใชงานคลาสและออบเจค

1. การกาหนดตวบงคณลกษณะใหกบแอตทรบวและเมทอด 1) ตวบงคณลกษณะทใชกาหนดขอบเขตการเรยกใชแอตทรบวและเมทอดไดแก public, private และ

protected ซงจะเปนตวบอกวาแอตทรบวและเมทอดจะถกเรยกใชงานจากทไหนไดบาง (Where)

หมายถง เรยกใชเมทอด modifier me(…) จากภายในคลาสเดยวกน (คลาส A)

หมายถง เรยกใชเมทอด modifier me(…) จากตางคลาสกนแตอยภายในแพคเกจเดยวกน

หมายถง เรยกใชเมทอด modifier me(…) จากตางแพคเกจกนแตคลาสทเรยกใชเปนสบคลาสกน

หมายถง เรยกใชเมทอด modifier me(…) จากตางแพคเกจกนหรอจากทใดๆ

2

3

4

Class B

Class A

modifier me(…)

Class D

Package java.test1 Package java.test2

Class C Extends A

Methods in A call modifier me(…)1

Methods in B call modifier me(…)

2

Methods in C call modifier me(…)3

Methods in D call modifier me(…)4

1

Page 12: Java-Chapter 12 Classes and Objects

168

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

สรปเปนตารางขอบเขตการเรยกใชงานไดดงน

รายละเอยดของ ตวบงคณลกษณะ

คลาสเดยวกน แพคเกจเดยวกน

ตางคลาสกน แพคเกจเดยวกน

เปนสบคลาสกน (คลาสแมลก )

ตางคลาสกน ตางแพคเกจกน

public me(…) private me(…) protected me(…) me(…)

หมายเหต โดยทวไปแอตทรบวนยมประกาศเปน private และเมทอดนยมประกาศเปน public แตถา

ไมเชนนนกใหประกาศไปตามความตองการหรอตามทโจทยกาหนด

2) ตวบงคณลกษณะทใชกาหนดคาประจาคลาสหรอประจาออบเจคของแอตทรบวและเมทอดไดแก static

ซงจะเปนตวบอกวาแอตทรบวและเมทอดจะถกเรยกใชงานอยางไรไดบาง (How)

รายละเอยดของ ตวบงคณลกษณะ

เรยกใชผานทางคลาส เรยกใชผานทางออบเจค

คาประจาคลาส (ม static) คาประออบเจค (ไมม static)

โจทยขอท 7 [ระดบงาย] จงประกาศและสรางแอตทรบวหรอหวเมทอดตามขอกาหนดตอไปน (18 คะแนน) 1) แอตทรบวประจาออบเจคชอ data ชนดจานวนจรง โดยสามารถเรยกใชงานไดจากคลาสใดๆ

2) แอตทรบวประจาคลาสชอ var ชนดจานวนเตม โดยมคาเรมตนเทากบ 10 และสามารถเรยกใชงานไดจากภายในคลาสเดยวกนเทานน

3) แอตทรบวประจาคลาสชอ check ชนดคาความจรง โดยสามารถเรยกใชงานไดจากสบคลาส

4) แอตทรบวประจาออบเจคชอ stdName เกบรายชอนสตจานวน 351 คน โดยสามารถเรยกใชงานไดจากภายในคลาสเดยวกนเทานน

Page 13: Java-Chapter 12 Classes and Objects

169

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

5) แอตทรบวประจาคลาสชอ m เกบเมตรกซชนดจานวนเตมขนาด 8 x 5 โดยสามารถเรยกใชจากทใดกได

6) เมทอดประจาออบเจคชอ show เพอแสดงชอนสตและผลการเรยนเฉลยทรบจากพารามเตอรขนบนจอภาพ โดยสามารถเรยกใชงานไดเฉพาะคลาสทประกาศเมทอด show นเทานน

7) เมทอดประจาคลาสชอ search เพอใชคนหาตวเลขจานวนเตม x ทรบเขามาวามปรากฎอย ณ ตาแหนงใดในอาเรย num ทรบเขามาเชนกน โดยสามารถเรยกใชงานไดจากคลาสลก หลาน

8) เมทอดประจาออบเจคชอ mulMatrix เพอคานวณคาหาผลคณของเมตรกซสองมตชนดจานวนจรง 2 ตวใดๆ โดยสามารถเรยกใชจากทใดกได

9) เมทอดประจาคลาสชอ union เพอใชยเนยนเซตของจานวนเตม 2 เซตใดๆ โดยเปนแบบสาธารณะ

2. วธการเรยกใชงานแอตทรบวและเมทอด 1) เรยกโดยตรง เปนการเรยกแอตทรบวหรอเมทอดทอยภายในคลาสเดยวกน (ตามหลกการเรยกเมทอดใน

บทท 8-11 ทผานมา) โดยจะพจารณาเมทอดทม static และไมม static ดงเงอนไขตอไปน

2) เรยกผานคลาส เปนการเรยกแอตทรบวหรอเมทอดประจาคลาส (ม static) ทอยตางคลาสกน

(1) เรยกแอตทรบวผานคลาส ซงเรยกแอตทรบวประเภทนวา ตวแปรประจาคลาส (Class Variable)

เชน Math.PI; Color.RED;

<ชอคลาส>.<ชอแอตทรบว>;

ขนตนดวยตวพมพใหญ ลงทายไมมวงเลบ

เมทอดผถกเรยก

ม ไมม

เมทอ

ดผเรยก

ไมม

ม static เรยก ม static ได ม static เรยก ไมม static ไมได ไมม static เรยก ม static ได ไมม static เรยก ไมม static ได

Page 14: Java-Chapter 12 Classes and Objects

170

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

(2) เรยกเมทอดผานคลาส ซงเรยกเมทอดประเภทนวา เมทอดประจาคลาส (Class Method)

เชน Math.pow(2,3); Time.start();

3) เรยกผานออบเจค เปนการเรยกแอตทรบวหรอเมทอดประจาออบเจค (ไมม static) ทอยตางคลาสกน

(1) เรยกแอตทรบวผานออบเจค ซงเรยกแอตทรบวประเภทนวา ตวแปรประจาออบเจค (Object Variable)

หรอ ตวแปรตวแทน (Instance Variable)

เชน objStd.id; no.x; g.y;

(2) เรยกเมทอดผานออบเจค ซงเรยกเมทอดประเภทนวา เมทอดประจาออบเจค (Object Method) หรอ

เมทอดตวแทน (Instance Method)

เชน std.get(5230121); c.stop();

จงตอบคาถาม

โจทยขอท 8 [ระดบงาย] จงใชตวเลอกตอไปนเพอระบประเภทของแอตทรบวหรอเมทอด (20 คะแนน) (A) Class Variable (B) Class Method (C) Object Variable (D) Object Method

ขอ แอตทรบวหรอเมทอด คาตอบ ขอ แอตทรบวหรอเมทอด คาตอบ

1. Math.sqrt(x) 11. std.grad

2. p.colorCode(s) 12. Sqt.borders(a,b)

3. Array.equals(a, b) 13. in.readLine()

4. v.x 14. System.in

5. System.getProperties() 15. Math.random()

6. Integer.MAX_VALUE 16. in.hasNext()

7. kb.nextInt() 17. i.id_code

8. rectangle.setSize(w, h) 18. out.close()

9. Math.PI 19. String.format("%4d", x)

10. a.appendArrays(x,y) 20. o.name

<ชอคลาส>.<ชอเมทอด>(…);

<ชอออบเจค>.<ชอแอตทรบว>;

<ชอออบเจค>.<ชอเมทอด>(…);

แอตทรบวหรอเมทอดทเปนแบบ static จะสามารถเรยกใชงานผานทางออบเจคไดหรอไม ……………………………………………………………………………………………………………….. ได เราสามารถเรยกใชทกอยางผานทางออบเจคไดไมวาจะเปน static หรอไมกตาม

ขนตนดวยตวพมพใหญ ลงทายมวงเลบ

ขนตนดวยตวพมพเลก ลงทายไมมวงเลบ

ขนตนดวยตวพมพเลก ลงทายมวงเลบ

Page 15: Java-Chapter 12 Classes and Objects

171

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

โจทยขอท 9 [ระดบปานกลาง] จงหาผลลพธจากการทางานของโปรแกรมตอไปน (15 คะแนน)

โจทยขอท 10 [ระดบปานกลาง] จงเขยนคลาส Dice ซงเปนตวแทนของลกเตา n หนาใดๆ เชน ลกเตา 6 หนา ลกเตา 12 หนาเปนตน และเขยนคลาส TestDice เพอเรยกใชเมทอดจากคลาส Dice (20 คะแนน)

public class Dice {

//แอตทรบวประจาออบเจคแบบ public ชอ face เพอเกบจานวนหนาของลกเตา //แอตทรบวประจาออบเจคแบบ public ชอ value เพอเกบหมายเลขหนาหงายของลกเตา

//ตวสรางแบบไมมพารามเตอร เพอกาหนดจานวนหนาของลกเตาเปน 2 และกาหนดหนาหงายของ ลกเตาโดยการสมคา

1 2 3 4 5 6 7 8 9 10 11 12

public class Val { public static int x; public static int y; public static String s; public Val() { x = 0; y = 0; s = ""; } public Val(int x, int y) { this.x = x; this.y = y; } public static int getX() { return x; } public static int getY() { return y; } public static int getY(int y) { return y; } public static String getS() { return s; } public static String getS(String s) { return s; } }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public class Test { public static void main(String[] args) { System.out.println(Val.x + "," + Val.y); Val.x = 6; Val.y = 10; System.out.println(Val.getX()+ "," + Val.getY()); Val.s = "Good By A"; System.out.println(Val.getS()); System.out.println(Val.getS("See You F")); Val v = new Val(); System.out.println(v.x + "," + v.y); v.x = 5; v.y = 7; System.out.println(v.getX() + "," + v.getY()); System.out.println(Val.getX() + "," + Val.getY()); Val w = new Val(9, 7); System.out.println(w.getX() + "," + w.getY()); System.out.println(v.getX() + "," + v.getY()); v.s = "I love Java"; System.out.println(w.getS()); } }

ขอนแสดงใหเหนถงผลกระ

ทบในการประ กาศแอตทร-

บวใหเปนแบบ static ซง

จะทาใหคาของแอตทรบวนน

เปลยนแปลงแบบ Global

Page 16: Java-Chapter 12 Classes and Objects

172

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

//ตวสรางแบบมพารามเตอรหนงตว เพอกาหนดจานวนหนาของลกเตาตามตวเลขทระบทางพารามเตอร และกาหนดหนาหงายของลกเตาโดยการสมคา

//ตวสรางแบบมพารามเตอรสองตว เพอกาหนดจานวนหนาของลกเตาและกาหนด หนาหงายของลกเตา ตามตวเลขทระบทางพารามเตอรตามลาดบ

//เมทอดประจาออบเจคชอ roll เพอใชโยนลกเตา ซงจะสมหมายเลขหนาหงายของลกเตาทมคาตงแต 1 จนถงจานวนหนาทเปนไปไดของลกเตานน และเมอสมหนาหงายไดแลว กจะนาไปกาหนดคาใหกบ แอตทรบว value ทเกบหมายเลขหนาหงายของลกเตา โดยทเมทอดนไมตองมการคนคากลบ

//เมทอดประจาออบเจคชอ setValue เพอใชในการพลกหนาหงายของลกเตาตามทตองการ ซงจะรบ คาหมายเลขหนาหงายของลกเตา ผานทางพารามเตอร และจะนาไปกาหนดคาใหกบแอตทรบว value ทเกบหมายเลขหนาหงายของลกเตา โดยทเมทอดนไมตองมการคนคากลบ

//เมทอดประจาออบเจคชอ getFace เพอคนคาจานวนหนาของลกเตา

Page 17: Java-Chapter 12 Classes and Objects

173

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

//เมทอดประจาออบเจคชอ getValue เพอคนคาหมายเลขหนาหงายของลกเตา //เมทอดประจาออบเจคชอ show เพอแสดงจานวนหนาและหมายเลขหนาหงายของลกเตาทละบรรทด

} //End of class public class TestDice {

/* สรางลกเตาขนมา 3 ลก ในรปของออบเจคทมชอเปน d1, d2 และ d3 ตามลาดบมรายละเอยดดงน ออบเจค d1 เปนลกเตาทไมไดระบจานวนหนาและหมายเลขหนาหงาย ออบเจค d2 เปนลกเตา 13 หนา ทไมไดระบหมายเลขหนาหงาย ออบเจค d3 เปนลกเตา 30 หนา ทมหมายเลขหนาหงายเปน 9 พรอมทงแสดงขอมลของลกเตาทง 3 ลกขนบนจอภาพ แลวทาการโยนลกเต าทง 3 ลกพรอมๆ กน 20 ครง โดยในแตละครงใหแสดงหมายเลขหนาหงายของลกเตาทง 3 ลก ขนบนจอภาพ */

} //End of class

Page 18: Java-Chapter 12 Classes and Objects

174

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

โจทยขอท 11 [ระดบปานกลาง] จงเขยนคลาส RealNumber ซงเปนตวแทนของจานวนจรงใดๆ หนงจา-นวน และเขยนคลาส TestRealNumber เพอเรยกใชเมทอดจากคลาส RealNumber (15 คะแนน) public class RealNumber {

//แอตทรบวประจาออบเจคแบบ public ชอ num เพอเกบคาจานวนจรง

//ตวสรางแบบไมมพารามเตอร เพอกาหนดคาใหกบแอตทรบว num ตามคา Default //ตวสรางแบบมพารามเตอร เพอกาหนดคาใหกบแอตทรบว num ตามคาทระบ

//เมทอดประจาออบเจคชอ plus เพอรบคาจานวนจรงหนงจานวนเขามาทางพารามเตอร แลวนามาหา ผลบวกระหวางแอตทรบว num กบคาตวเลขนนพรอมทงคนคากลบ

//เมทอดประจาออบเจคชอ diff เพอรบคาจานวนจรงหนงจานวนเขามาทางพารามเตอร แลวนามาหา ผลตางระหวางแอตทรบว num กบคาตวเลขนนพรอมทงคนคากลบ

} //End of class

Page 19: Java-Chapter 12 Classes and Objects

175

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

public class TestRealNumber {

/* สรางจานวนจรง 1 จานวนในรปของออบเจค r ทมคาเปน 70 ประเภท RealNumber พรอม คานวณหาคาผลบวกของตวเลขนนกบ 15 และผลตางของตวเลขนนกบ 50 พรอมทงแสดงผลลพธ ขนบนจอภาพ*/

} //End of class

โจทยขอท 12 [ระดบปานกลาง] จงสรางคลาส Account ใหสมบรณ ซงเปนคลาสทใชในการ ดาเนนการเกยวกบระบบบญชธนาคาร โดยมรายละเอยดดงตอไปน (10 คะแนน) 1) แอตทรบวชอ balance ซงเปน Object Variable เพอเกบยอดเงนในบญช 2) คอนสตรกเตอร 2 แบบเพอใชในการกาหนดคาเรมตนใหกบยอดเงนเมอเรมเปดบญช

ถาไมไดระบจานวนเงนเมอเรมตนเปดบญชใหยอดเงนเปน 0 บาท ถามการระบจานวนเงนเมอเรมตนเปดบญชใหยอดเงนเปนไปตามคาทระบ

3) เมทอด deposit(…) ซงเปน Object Method เพอใชในการฝากเงนตามจานวนเงนทระบโดยไมมการคนคากลบ

4) เมทอด withdraw(…) ซงเปน Object Method เพอใชในการถอนเงนตามจานวนเงนทระบและตองตรวจสอบยอดเงนกอนเสมอวามเพยงพอในการถอนเงนหรอไม พรอมทงคนเงนทถอนดวย

5) เมทอด getbalance(…) ซงเปน Object Method เพอคนคายอดเงนคงเหลอในบญช

Page 20: Java-Chapter 12 Classes and Objects

176

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

ใหสรางคลาส TestAccount เพอเรยกใชงานคลาส Account โดยใหเปดบญชขนมา 1 บญชพรอมฝากเงนเรมตนเปดบญชจานวน 2000 บาท หลงจากนนจงทาการถอนเงน 1500 บาท และฝากเพมอก 800 บาท ตามลาดบ (ในแตละกระบวนการใหแสดงยอดเงนในบญชหลงทารายการทกครง) (10 คะแนน)

Page 21: Java-Chapter 12 Classes and Objects

177

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

โจทยขอท 13 [ระดบปานกลาง] จงสรางคลาส PiggyBank ใหสมบรณเพอสรางกระปกออมสนลกหมซง เกบเฉพาะเหรยญ 1 บาท 2 บาท 5 บาท และ 10 บาท โดยมรายละเอยดดงตอไปน (20 คะแนน)

public class PiggyBank {

(1) แอตทรบวประจาออบเจคแบบ public ชอ one, two, five และ ten ตามลาดบ เพอเกบจานวนของเหรยญแตละเหรยญ

(2) แอตทรบวประจาออบเจคแบบ public ชอ size เพอเกบความจของคาเงนรวมสงสดทสามารถเกบไดในกระปก

(3) ตวสราง 2 แบบเพอกาหนดคาเรมตนของกระปก 1) ถาไมมการกาหนดคาใดๆ ใหแอตทรบว size เปน 100 แอตทรบวอนเปน 0 2) ถามการกาหนดคาใหกบแอตทรบว size กให size เทากบคาทกาหนดมาสวนแอตทรบวอน

เปน 0

(4) เมทอดประจาออบเจคชอ clear(…) เพอทาการนาเหรยญออกจากกระปกโดยไมมการคนคากลบ (การนาเหรยญออกจากกระปกคอใหจานวนเหรยญทกเหรยญเทากบ 0)

Page 22: Java-Chapter 12 Classes and Objects

178

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

(5) เมทอดประจาออบเจคชอ getTotal(…) เพอคนคาเงนรวมทงหมดทเกบสะสมในกระปก

(6) เมทอดประจาออบเจคชอ full(…) เพอตรวจสอบวากระปกเตมหรอไม ถาเตมจะคนคา true

ถาไมเตมจะคนคา false

(7) เมทอดประจาออบเจคชอ addOne(…) เพอใชหยอดเหรยญ 1 บาท ตามจานวนเหรยญทระบลงในกระปก โดยกอนหยอดเหรยญจะตองตรวจสอบกอนวากระปกออมสนเตมหรอไม

(8) เมทอดประจาออบเจคชอ addTwo(…) เพอใชหยอดเหรยญ 2 บาท ตามจานวนเหรยญทระบลงในกระปก โดยกอนหยอดเหรยญจะตองตรวจสอบกอนวากระปกออมสนเตมหรอไม

Page 23: Java-Chapter 12 Classes and Objects

179

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java Classes and Objects - 12

(9) เมทอดประจาออบเจคชอ addFive(…) เพอใชหยอดเหรยญ 5 บาท ตามจานวนเหรยญทระบลงในกระปก โดยกอนหยอดเหรยญจะตองตรวจสอบกอนวากระปกออมสนเตมหรอไม

(10) เมทอดประจาออบเจคชอ addTen(…) เพอใชหยอดเหรยญ 10 บาท ตามจานวนเหรยญทระบ

ลงในกระปก โดยกอนหยอดเหรยญจะตองตรวจสอบกอนวากระปกออมสนเตมหรอไม

}//End of class

Page 24: Java-Chapter 12 Classes and Objects

180

© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)

Computer Programming using Java 12 - Classes and Objects

จงสรางคลาส TestPiggyBank เพอเรยกใชงานคลาส PiggyBank โดยสรางกระปกออมสนขนาดความจ 500 บาท พรอมทงมการเกบเหรยญสองบาท 34 เหรยญ และเหรยญสบบาท 13 เหรยญ โดยในการเพมเหรยญแตละครงใหแสดงคาเงนรวมทงหมดในกระปกใหเหนทกครง

public class TestPiggyBank { public static void main(String[] args) { }//End of main }//End of class