lec07 :: object-oriented programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ...
TRANSCRIPT
![Page 1: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/1.jpg)
11/01/61Page 1
Lec07 :: Object-Oriented Programming
โดย อ. นฐพงศ สงเนยมhttp://[email protected]
Last Update 12-01-2561
Class , Enum , Package , Interface , Inheritance , Generics , Inner Class
![Page 2: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/2.jpg)
Agenda
• Object Oriented Programming Topic– PART I : Java Syntax [ Lec01 – Lec05,
Lec06]– PART II : Java OOP [ Lec07 …]
11/01/61Page 2
![Page 3: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/3.jpg)
Agenda (cont.)• Unified Process• Class diagram• Class
– Attributes– Method
• Empty Class• Constructor• Overloading Constructor Method• Modifier
– Public– Private– Protected– Default
11/01/61Page 3
![Page 4: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/4.jpg)
• SDLC : Software Development Life Cycle– วฏจกรในการพฒนาระบบแบบดงเดม
• 7 ขนตอน– 1. วเคราะหปญหา– 2. ออกแบบปญหา– 3. พฒนาโปรแกรม– 4. ทดสอบ– 5. ตดตงใชงาน– 6. บารงรกษา– 7. ทาเอกสารประกอบ
• Unified Process– กรรมวธทใชสาหรบการพฒนาระบบเชงวตถ
11/01/61Page 4
![Page 5: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/5.jpg)
Unified Process โครงสรางกรรมวธ - Lifecycle Phases
เตรยมงาน (Inception) – นยามขอบเขตของโครงการ , ขอบเขตของระบบทจะพฒนา
OOAD : Object-Oriented Analysis and Design5
Inception Elaboration Construction Transition
time
Unified process แบงการพฒนาออกเปน 4 เฟส (phases)
ทารายละเอยด (Elaboration) – วางแผนโครงการ จดทารายละเอยดความตองการ จดสรางสถาปตยกรรมระบบ
จดสราง (Construction) – สรางและทดสอบโปรแกรม
ถายโอน (Transition) – ตดตงถายโอนระบบใหกบผใช
5
OOP
OOAD
![Page 6: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/6.jpg)
UP
• สมมตไดรบงาน Project มา 1 Project UP คอจะแบง Project ออกเปนชวงเวลา 4 ชวงเวลา– Inception เตรยมงาน– Collaboration การลงรายละเอยด– Construction– Transition
11/01/61Page 6
12 เดอน
1-2 เดอน
1-2 เดอน
3-6 เดอน
1-2 เดอน
![Page 7: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/7.jpg)
Abstractions
7
Classification
Generalization/Specialization
Association
Aggregation
Is member of
Is member of
Is member of
Is part of Is part of
Is part of
Is kind of Is kind of Is relate to Is relate to
Reviews OOAD concept
เราจะทาอยางไร จงจะไดคลาส ขน กอาศย กระบวนการเหลาน
หาคลาส และ หาวตถ และวตถ นนอยในคลาสใด
![Page 8: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/8.jpg)
• เปนการทาความรจกคลาส และ ออบเจกต
• แลวออกมาเปนคลาส เปนออบเจกต
• จะไดคลาสพนฐานfundamental classes
11/01/61Page 8
Classification
Is member of
Is member of
Is member of
![Page 9: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/9.jpg)
จงพฒนาระบบคลกนกรกษาโรคทวไป
• มคลาสอะไรบาง• ออบเจกตอะไรบาง
11/01/61Page 9
Class / Object คออะไร
ยา
เภสช
คนไข / ลกคา
ยาพารา
ยาแกอกเสบ
ยาดม
ยาหมอง
![Page 10: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/10.jpg)
คลาส
Objects• Attribute คณสมบต/คณลกษณะทบงบอกถง
ความเปนวตถนน• Function คอ ความสามารถ พฤตกรรม สงวตถ
นนทาได หรอ หนาทของวตถ
11/01/61Page 10
![Page 11: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/11.jpg)
นก
• Attribute– ปก– ปาก– ตา– ขา– ขน
• Function – บน– กน– เดน– รอง
11/01/61Page 11
• Attribute– ผม– ปาก– จมก– ตา– ...
• Function – นอน– กน– เดน– รอง
คนProblem Domain
![Page 12: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/12.jpg)
• คลาส คอ กลมของวตถ
11/01/61Page 12
![Page 13: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/13.jpg)
Abstractions
• จะไดคลาสและออบเจกตทงหมดทความสมพนธกน แลวสรางออกมาเปนแผนภาพออกมา เรยกวา classdiagram
• เมอไดแผนภาพคลาสมา กนามาสรางเปนซอฟตแวรตามแผนภาพคลาส
11/01/61Page 13
![Page 14: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/14.jpg)
Class Diagram
• เปนโมเดลหนง ใน UML : Unified Modeling Language
• แผนภาพคลาส มาจากกระบวนการวเคราะหและออกแบบระบบเชงวตถ
• การปรบเปลยนจากเฟสออกแบบมาเปนเฟสการลงมอทาหรอพฒนาโปรแกรม (Transform from Designing phase to Implementation phase) จาเปนอาศยแผนภาพคลาสในการพฒนาโปรแกรม
11/01/61Page 14
![Page 15: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/15.jpg)
11/01/61Page 15
OOP
• Class• Enum• Package• Interface• Inheritance• Generics• Inner Class
Class คออะไร
Objects คออะไร Class NameAttributeMethod
![Page 16: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/16.jpg)
11/01/61Page 16
Class
•คลาส•สวนประกอบของคลาส•การสรางคลาส
![Page 17: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/17.jpg)
11/01/61Page 17
คลาสในภาษาจาวา
• คลาสหรอแบบแปลนของวตถ จะถกเขยนอยในไฟลทมนามสกล java– เชน คลาสสเหลยมอาจจะถกเขยนอยในไฟลชอ
Rectangle.java
class ชอคลาส {
}
![Page 18: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/18.jpg)
11/01/61Page 18
![Page 19: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/19.jpg)
11/01/61Page 19
สวนประกอบของคลาส Class name
attributes
method
![Page 20: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/20.jpg)
UML Class Diagram
11/01/61Page 20
Class name
+ attribute : Type
+ function() : Boolean- A() : Boolean# B() : boolean
Visibility- private+ public# protected
![Page 21: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/21.jpg)
Class diagram
11/01/61Page 21
Class name
attributes
function
Class name
Data member
Method Member
OO java
![Page 22: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/22.jpg)
11/01/61Page 22
สวนประกอบของคลาส
• เมธอด เปนสงทใชอธบายการทางานของวตถในคลาส – ชอเมธอดควรเปนคากรยา
• แอตทรบวท เปนสงทใชบอกถงลกษณะตางๆของวตถในคลาส
![Page 23: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/23.jpg)
11/01/61Page 23
ตวอยางเมธอด
คลาส เมธอด/ฟงกชน/ความสามารถ/พฤตกรรม
นก กน(), บน(), สงเสยง()
โทรทศน เปด(), ปด(), เปลยนชอง(), ปรบเสยง()
สเหลยม คานวณพนท(),วาดได()
![Page 24: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/24.jpg)
11/01/61Page 24
ตวอยาง Attributes
คลาส ลกษณะ/ Attributes
นก ปก , ตา , ขา , ปาก , ส
โทรทศน จอ , ขนาด , ส , ป ม
สเหลยม กวาง , ยาว , พนท
Real World
![Page 25: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/25.jpg)
นกใน คอมพวเตอร
11/01/61Page 25
![Page 26: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/26.jpg)
11/01/61Page 26
ตวอยางแอททรบวท
คลาส แอททรบวท
นก ส, เพศ, นาหนก
โทรทศน ยหอ, รน, หมายเลข, ขนาดจอภาพ
สเหลยม ความกวาง, ความสง
PDT : Primitive Data TypeADT : Object
Computer World
![Page 27: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/27.jpg)
11/01/61Page 27
ตวอยางแอททรบวท
คลาส แอททรบวท
พดลม ยหอ ส ความใหญ ขนาด
โทรทศน ยหอ, รน, หมายเลข, ขนาดจอภาพ
สเหลยม ความกวาง, ความสง
PDT : Primitive Data TypeADT : Object
Computer World
![Page 28: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/28.jpg)
Attribute และ Function
11/01/61Page 28
• Real World• Computer World
ปาก ขา ปก
ชอนก ส นาหนก ประเภทนก/ชนด
![Page 29: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/29.jpg)
Attribute และ Function ของคน
11/01/61Page 29
• Real World• Computer World
หว แขน ขา มหวใจ มสมอง
ถาเปนในระบบราน เซเวน
หมายถง พนกงา / เจาหนา / ผจดการ
-ชอ นามสกล ทอย เบอรโทร
-อนๆ
![Page 30: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/30.jpg)
11/01/61Page 30
![Page 31: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/31.jpg)
11/01/61Page 31
![Page 32: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/32.jpg)
11/01/61Page 32
คลาส, วตถ, และเรฟเฟอรเรนซ
• คลาส : วตถ• แบบแปลน : บาน
• หนงคลาสสรางไดหลายวตถ• ใชงานวตถผานทางเรฟเฟอรเรนซ
– รโมทคอนโทรล
![Page 33: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/33.jpg)
11/01/61Page 33
Student
- Name- gender- GPA
สมชาย : Student
- Name = “สมชาย”- gender = “ผชาย”- GPA = “3.15”
Class
Object
![Page 34: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/34.jpg)
การสราง คลาส
class ชอคลาส {แอตทรบวตเมธอด()
}
11/01/61Page 34
class rectangle{private int w;private int h;public void calArea() {…}
}
![Page 35: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/35.jpg)
• class cls_name { ...........} empty class
11/01/61Page 35
Class-name
คน
ธรกมล
![Page 36: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/36.jpg)
การสรางแอตทรบวต
• Modifier type name_attr;
• ตวอยาง• private int Age;
• private doulbe Age;
11/01/61Page 36
PDTADT
Visibility = Modifier
![Page 37: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/37.jpg)
11/01/61Page 37
การสรางวตถ
• รปแบบ– คลาส เรฟเฟอรเรนซ = new คลาส();
• ตวอยางสเหลยม ก = new สเหลยม();สเหลยม ข = new สเหลยม();
Reference คอชอทตงขนเพอใชอางถง
![Page 38: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/38.jpg)
การสรางวตถ ทาได 2 แบบ
นกเรยน อานาจ;อานาจ = new นกเรยน();
11/01/61Page 38
นกเรยน อานาจ = new นกเรยน();
1
2
![Page 39: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/39.jpg)
class student {
}
student s1 = new student();
11/01/61Page 39
![Page 40: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/40.jpg)
Empty Class
class Rectangle {
}
11/01/61Page 40
![Page 41: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/41.jpg)
attributes
class Rectangle {int width;int height;
}
11/01/61Page 41
width
height
![Page 42: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/42.jpg)
attributes
class Rectangle {int width;int height;
}
11/01/61Page 42
width
height
Rectangle
Width : integralHeight : integral
![Page 43: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/43.jpg)
สรางโปรเจกตใหม ชอ Test_Rectangle
11/01/61Page 43
![Page 44: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/44.jpg)
Main program
11/01/61Page 44
![Page 45: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/45.jpg)
• Test• Rectangle
11/01/61Page 45
![Page 46: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/46.jpg)
• Data Member กคอ attributes หรอ ตวแปรของคลาสนนเอง
11/01/61Page 46
![Page 47: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/47.jpg)
สวนประกอบในไฟล Test_rectangle
11/01/61Page 47
Main
rectangle
คลาส rectangle อยในไฟล
เดยวกน กบ
Test_rectangle
![Page 48: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/48.jpg)
สราง เมธอด สาหรบคานวณ พ.ท.
11/01/61Page 48
คลาสถกสราง แตยงใชงานไมได หากตองการ
ใชงาน
ตองสราง อนสแตนซ หรอ ออบเจกต
![Page 49: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/49.jpg)
การสรางเมธอด void
• modifier void method {}• void method {} private• public void• private void• protected void
11/01/61Page 49
TestRectangleMain() Rectangle
- W : integral
+ calArea()
![Page 50: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/50.jpg)
11/01/61Page 50
Rectangle
R: Rectangle
Rectangle R = new Rectangle();
A: Rectangle
Rectangle A = new Rectangle();
![Page 51: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/51.jpg)
11/01/61Page 51
![Page 52: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/52.jpg)
11/01/61Page 52
![Page 53: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/53.jpg)
11/01/61Page 53
Is member of/ instance of
สเหลยม
ก : สเหลยม
ข : สเหลยม
![Page 54: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/54.jpg)
สราง เมธอด สาหรบรบคา width
11/01/61Page 54
สเหลยม
+ กาหนดความกวาง(int w1)
สเหลยม
+ setWidth(int w1)
Getter / setter method
![Page 55: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/55.jpg)
สราง เมธอด สาหรบกาหนดความสง
11/01/61Page 55
สเหลยม
+ กาหนดความกวาง(int w1)+ กาหนดความสง(int h1)
สเหลยม
+ setWidth(int w1)+ setHeight(int h1)
![Page 56: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/56.jpg)
แบบฝกหด
• จงสรางคลาสสามเหลยม และ ออบเจกต สามเหลยม 2 ตว โดยกาหนดความ ฐานและสงของแตละตวดงน– T1 Base = 10.2 Height = 15.6– T2 Base = 8.7 Height = 14.9
– จงวาดแผนภาพคลาส และเขยนโปรแกรม ดวยภาษาจาวา
11/01/61Page 56
![Page 57: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/57.jpg)
11/01/61Page 57
Triangle
T1: Triangle T2: Triangle
- Base : floating-point- Height : floating-point
+ setB(b1 : floating-point) + setH(h1 : floating-point) + getB() : floating-point+ getH() : floating-point+ calArea () : floating-point
- B = 10.2- H = 5.6
- B = 8.7- H =14.3
![Page 58: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/58.jpg)
11/01/61Page 58
![Page 59: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/59.jpg)
11/01/61Page 59
20
5a
20b
10
![Page 60: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/60.jpg)
11/01/61Page 60
Rectangle
a : rectangle b : rectangle
![Page 61: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/61.jpg)
รบความกวาง/สง จากแปนพมพ• คลาส Scanner
11/01/61Page 61
1.
2.
3.
![Page 62: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/62.jpg)
11/01/61Page 62
![Page 63: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/63.jpg)
11/01/61Page 63
สเหลยม
+ กาหนดความกวาง(int w1)+ กาหนดความสง(int h1)
สเหลยม
+ setWidth(int w1)+ setHeight(int h1)+ calArea() : int
A B C ..
Classification abstractions
![Page 64: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/64.jpg)
11/01/61Page 64
![Page 65: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/65.jpg)
• กาหนดความกวาง/ยาว ให สเหลยม ก.
11/01/61Page 65
![Page 66: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/66.jpg)
RUN
11/01/61Page 66
![Page 67: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/67.jpg)
Rectangle
11/01/61Page 67
![Page 68: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/68.jpg)
integer
• byte• short• int• long
11/01/61Page 68
• Byte• Short• Int• Long
Type Wrapper class
long age;byte ageInt age;
int age = 50.3;
![Page 69: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/69.jpg)
Floating-point
• float• double
11/01/61Page 69
• Float• Double
Type Wrapper class
5.8 cm
2.5 cm
![Page 70: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/70.jpg)
Class variables
11/01/61Page 70
rectangle
-Width : int- height : int
![Page 71: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/71.jpg)
Method
11/01/61Page 71
rectangle
-Width : int- height : int
+ setWidth()
rectangle
-Width : int- height : int
+ setWidth(w :integer)
![Page 72: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/72.jpg)
encapsulation
• การนาเอา attribute และ ความสามารถในการจดการกบ attribute รวมเขาดวยกน/ หรอเรยกวา หอหมเขาดวย ทาใหไดคลาสขน
• การหอหมจงมลกษณะคลายเปลอกทมาหอหม • ซงแบงออกเปน 3 แบบ โดยจะเกยวของกบการ
เขาถงขอมล– Public – Private– Protected
11/01/61Page 72
![Page 73: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/73.jpg)
11/01/61Page 73
rectangle
-Width : int- height : int
+ setWidth()
![Page 74: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/74.jpg)
class …… {……attributes // data member……. Methods // method member
}
11/01/61Page 74
Circle
X : intY : intR : int
+ calArea()
![Page 75: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/75.jpg)
คน
class Man {private Arm aArm;private String name;private int age;private Heart aHeart;
}
11/01/61Page 75
Man
-aArm : Arm-aHead : Head-aHeart : Heart-aLeg : aLeg- naame : string- age : int
+ walk()+ eat()+ Speak()
ADT
PDT
Heart
-Siza : int
+ สบฉดเลอด
()
Hair
-no : int
+ ดแล()
คน (computer)
![Page 76: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/76.jpg)
11/01/61Page 76
คน (computer world)Man
-Name : String-Gender : String-BOD : date-Address : String-Tel : String
+ getName()+ setName()+ getBOD()+ setBOD()+ getTel()+ setTel()
![Page 77: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/77.jpg)
11/01/61Page 77
![Page 78: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/78.jpg)
Test_Student :: Tester class
11/01/61Page 78
![Page 79: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/79.jpg)
package
11/01/61Page 79
![Page 80: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/80.jpg)
Student
11/01/61Page 80
![Page 81: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/81.jpg)
Class studentclass student {
private String name;private String Address;private int AGE;private float GPA;private ...... Email;
//--- method member
public void setName(String n) {
name = n;}
}11/01/61Page 81
![Page 82: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/82.jpg)
11/01/61Page 82
![Page 83: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/83.jpg)
ในคลาสทดสอบ tester
• สรางวตถนกเรยน/นกศกษา
11/01/61Page 83
![Page 84: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/84.jpg)
การเรยกใชงาน void method
11/01/61Page 84
![Page 85: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/85.jpg)
11/01/61Page 85
![Page 86: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/86.jpg)
สรางโปรเจกตใหม
11/01/61Page 86
![Page 87: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/87.jpg)
Test_Man
11/01/61Page 87
![Page 88: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/88.jpg)
สราง java class
11/01/61Page 88
![Page 89: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/89.jpg)
Class Man
11/01/61Page 89
![Page 90: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/90.jpg)
11/01/61Page 90
![Page 91: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/91.jpg)
11/01/61Page 91
![Page 92: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/92.jpg)
เพม Method : getName() , setName()
11/01/61Page 92
![Page 93: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/93.jpg)
Overloading Constructor Method
• ชอซากนได • แตตองตางกนท ลาดบ จานวน อากวเมนท ชนดของอากว
เมนท
11/01/61Page 93
![Page 94: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/94.jpg)
Overloading Constructor Method
11/01/61Page 94
![Page 95: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/95.jpg)
11/01/61Page 95
![Page 96: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/96.jpg)
การบญช
Customer c1 = new Customer(5000.0);Customer c1 = new Customer(5000.0);
11/01/61Page 96
constructor
ในกรณ ของเกม สมมต สราง คน จะไอเทม
![Page 97: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/97.jpg)
Method
• Overloading Method• Overriding Method
11/01/61Page 97
![Page 98: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/98.jpg)
Overloading
class Rectangle{
public void calArea() {}public void calArea(int w,int h) {}public void calArea(double w,double h) {}
}
11/01/61Page 98
![Page 99: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/99.jpg)
11/01/61Page 99
Customer
+ deposit(int bal)
+ deposit(double bal)
![Page 100: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/100.jpg)
• คน แบงออกเปน (generalization / specialization abstraction)– นกเรยน– อาจารย
11/01/61Page 100
Man
Student Teacher
Inheritance Inherite
Super Class
Child Class
Reusable
![Page 101: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/101.jpg)
Protected
• คน แบงออกเปน (generalization / specialization abstraction)– นกเรยน– อาจารย
11/01/61Page 101
Man
Student Teacher
Inherit Inherit
Super Class
Child Class
Reusable
-Name : String# surname : String
![Page 102: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/102.jpg)
Protected
• คน แบงออกเปน (generalization / specialization abstraction)– นกเรยน– อาจารย
11/01/61Page 102
Man
Student Teacher
Inherit Inherit
Super Class
Child Class
Reusable
Name : Stringsurname : String
![Page 103: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/103.jpg)
Inheritance in java
• class A extends B {
• }
11/01/61Page 103
B
A
![Page 104: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/104.jpg)
11/01/61Page 104
Man
Student
![Page 105: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/105.jpg)
11/01/61Page 105
![Page 106: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/106.jpg)
11/01/61Page 106
student
Man
student
Man
Man
Student
Man
Student
![Page 107: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/107.jpg)
11/01/61Page 107
![Page 108: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/108.jpg)
11/01/61Page 108
Man
Man
![Page 109: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/109.jpg)
Test_Man
11/01/61Page 109
ตอนทคนเกดมา จะถกตงชอ
ตอมาเมอเตบโตขนกจะ
สามารถเปลยนชอได
![Page 110: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/110.jpg)
11/01/61Page 110
![Page 111: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/111.jpg)
11/01/61Page 111
rectangle
-Width : int- height : int
+ setWidth()+ setHeight()
![Page 112: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/112.jpg)
แนวขอสอบระหวางภาค 1/2558
• 1. แสดงเมน– 1. คานวณสเหลยม– 2. คานวณสามเหลยม– 3......
– ถาเลอก สามเหลยม รบ – 2.1 .....– 2.2 .... แลวคานวณ
11/01/61Page 112
คลาส
วตถ
Scanner
![Page 113: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/113.jpg)
สราง เมธอดทมการคนคา
11/01/61Page 113
![Page 114: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/114.jpg)
สรางวตถ คอ instance
11/01/61Page 114
![Page 115: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/115.jpg)
11/01/61Page 115
![Page 116: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/116.jpg)
11/01/61Page 116
![Page 117: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/117.jpg)
ประกาศ R1 เปน Rectangle
11/01/61Page 117
![Page 118: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/118.jpg)
การเรยกใชงานเมธอด ผานออบเจกต
11/01/61Page 118
![Page 119: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/119.jpg)
11/01/61Page 119
X = R1.CalArea();
![Page 120: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/120.jpg)
11/01/61Page 120
![Page 121: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/121.jpg)
Triangle
11/01/61Page 121
![Page 122: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/122.jpg)
Package Test_rectangle
11/01/61Page 122
Test_Rectangle.java
Rectangle.java
Triangle.java
![Page 123: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/123.jpg)
• สราง data member
11/01/61Page 123
![Page 124: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/124.jpg)
11/01/61Page 124
Triangle
-Base : float-Height : float
+ setBase()+ setHeight(h : floating-poin
![Page 125: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/125.jpg)
11/01/61Page 125
![Page 126: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/126.jpg)
สรางอนสแตนซของคลาส Triangle
11/01/61Page 126
![Page 127: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/127.jpg)
การกาหนด Modifier แบบ public
11/01/61Page 127
![Page 128: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/128.jpg)
Modifier/Accessibility
• Default• Private• Public• Protected
11/01/61Page 128
Information Hiding / Encapsulation
![Page 129: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/129.jpg)
Default Modifier : Package
11/01/61Page 129
![Page 130: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/130.jpg)
11/01/61Page 130
ขอความและเมธอด
• สงใหวตถทางานโดยการสงขอความ (message) หรอคาสงไปหาวตถ
• เมอวตถไดรบขอความแลว วตถนนกจะทางานตามวธการหรอคาสงตางๆทเขยนไวในเมธอด (method)
![Page 131: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/131.jpg)
11/01/61Page 131
การเรยกเมธอด (การสงขอความ)
• รปแบบ– เรฟเฟอรเรนซ.เมธอด();
• ตวอยางสเหลยม ส = new สเหลยม();System.out.println( ส.คานวณพนท() );
การสอสารกนระหวางวตถ จะใชงานผานทางเมธอด
![Page 132: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/132.jpg)
11/01/61Page 132
การประกาศเมธอด
class สเหลยม {double คานวณพนท() {
// คานวณหาพนทของสเหลยม …
}}
![Page 133: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/133.jpg)
11/01/61Page 133
เมธอดทคนคาเปนชนดขอมลพนฐาน
class สเหลยม {double คานวณพนท() {
// คานวณหาพนทของสเหลยม …// สงคนคาพนทใหกบผเรยกreturn พนทของสเหลยม;
}}
![Page 134: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/134.jpg)
11/01/61Page 134
เมธอดทคนคาเปนเรฟเฟอรเรนซ
class สเหลยม {String ขอขอมล() {
…return สตรงทแสดงขอมลสเหลยม;
}}
![Page 135: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/135.jpg)
11/01/61Page 135
เมธอดทไมคนคา
class สเหลยม {void เพมขนาดสองเทา() {
…return;
}}
![Page 136: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/136.jpg)
11/01/61Page 136
แอททรบวท
• ขอมลทใชอธบายความแตกตางของวตถ – เชน วตถแมว มชอ ส พนธ นาหนก แตกตางกน
• ตวแปรวตถ (instance variable)
![Page 137: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/137.jpg)
11/01/61Page 137
แอททรบวท
class สเหลยม {double ความกวาง;double ความสง;
}
![Page 138: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/138.jpg)
11/01/61Page 138
การใชงานแอททรบวท
• รปแบบ– เรฟเฟอรเรนซ.แอททรบวท
• ตวอยางสเหลยม ส = new สเหลยม();ส.ความกวาง = 10;ส.ความสง = 5;
![Page 139: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/139.jpg)
11/01/61Page 139
คอนสตรคเตอร (constructor)
• เมธอดทมช อเหมอนกบคลาส • ใชกาหนดคาเรมตนใหกบแอททรบวต • ถกเรยกใชเมอเราสรางวตถดวยคาสง new
![Page 140: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/140.jpg)
11/01/61Page 140
การประกาศคอนสตรคเตอร
class สเหลยม {สเหลยม(double ก, double ส) {
ความกวาง = ก;ความสง = ส;
}
double ความกวาง;double ความสง;
}
![Page 141: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/141.jpg)
11/01/61Page 141
การเรยกคอนสตรคเตอร
สเหลยม ก = new สเหลยม(10, 5);สเหลยม ข = new สเหลยม(20, 4);System.out.println(ก.กวาง);System.out.println(ข.กวาง);
![Page 142: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/142.jpg)
11/01/61Page 142
การโอเวอรโหลดเมธอด (Overload)
class สเหลยม {{
สเหลยม() { ... }สเหลยม(double ก, double ส) { ... }
}
![Page 143: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/143.jpg)
11/01/61Page 143
การโอเวอรโหลดเมธอด
class สเหลยม {{
double getArea() { ... }int getArea(int n) { ... }
}
![Page 144: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/144.jpg)
11/01/61Page 144
แปลงไทยจาวาเปนจาวา
![Page 145: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/145.jpg)
11/01/61Page 145
ประกาศคลาส
class สเหลยม {
}
class Rectangle {
}
![Page 146: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/146.jpg)
11/01/61Page 146
เพมเมธอด
class สเหลยม {double คานวณพนท() {
.... }
}
class Rectangle {double getArea() {
.... }
}
![Page 147: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/147.jpg)
11/01/61Page 147
เพมแอททรบวท
class สเหลยม {double คานวณพนท() {
.... }double ความกวาง;double ความสง;
}
class Rectangle {double getArea() {
.... }double width;double height;
}
![Page 148: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/148.jpg)
11/01/61Page 148
เขยนวธการทางานของเมธอด คานวณพนท()
class สเหลยม {double คานวณพนท() {
return ความกวาง * ความสง;
}double ความกวาง;double ความสง;
}
class Rectangle {double getArea() {
return width * height;
}double width;double height;
}
![Page 149: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/149.jpg)
11/01/61Page 149
เขยนคอนสตรคเตอร
class สเหลยม {สเหลยม(double ก, double ส) {
ความกวาง = ก;ความสง = ส;
}
...}
class Rectangle {Rectangle(double w,double h) {
width = w;height = h;
}...
}
![Page 150: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/150.jpg)
11/01/61Page 150
ทดสอบคลาส Rectangle
class TestRectangle {public static void main(String[] args) {
Rectangle r = new Rectangle(2, 3);System.out.println(r.getArea());
Rectangle p = new Rectangle(5, 7);System.out.println(p.getArea());
}}
![Page 151: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/151.jpg)
11/01/61Page 151
คอมไพลและรน
![Page 152: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/152.jpg)
11/01/61Page 152
เมธอด toString()
• พมพขอมลเกยวกบวตถ
class Rectangle {public String toString() {
String result = "Width = " + width;result += " Height = " + height;return result;
}...
}
![Page 153: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/153.jpg)
toString ของ Student
11/01/61Page 153
![Page 154: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/154.jpg)
ผลการรน
11/01/61Page 154
![Page 155: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/155.jpg)
11/01/61Page 155
การเรยกเมธอด toString()
• System.out.println( rect.toString() );• System.out.println( rect );
System.out.println( R1.toString() );
![Page 156: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/156.jpg)
11/01/61Page 156
เมธอด equals()
• เปรยบเทยบแอททรบวท• ไมใชเครองหมาย == เพอเปรยบเทยบวตถ
class Rectangle {public boolean equals(Rectangle other) {
return (width == other.width) && (height == other.height);}...
}
![Page 157: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/157.jpg)
ผลการรน
11/01/61Page 157
![Page 158: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/158.jpg)
11/01/61Page 158
![Page 159: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/159.jpg)
11/01/61Page 159
คาประกอบ (modifiers)
![Page 160: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/160.jpg)
11/01/61Page 160
คาประกอบการเขาใช
• ประกอบกบการประกาศแอททรบวตหรอเมธอด • private
– วตถตางคลาสไมสามารถเขาใชได – การปกปองขอมลทาได – มกจะใหแอททรบวทมการเขาใชแบบ private
• public– อนญาตใหคลาสอนใชได – มกจะใหเมธอดมการเขาใชแบบ public
![Page 161: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/161.jpg)
11/01/61Page 161
คาประกอบการเขาใช
class Rectangle {public double getArea() {
return width * height;
}private double width;private double height;
}
![Page 162: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/162.jpg)
11/01/61Page 162
ทดลองเขาใชแอททรบวททถกปกปอง
public class TestPrivate { public static void main( String[] args) {
Rectangle rect = new Rectangle();rect.width = 10;
}}
![Page 163: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/163.jpg)
11/01/61Page 163
ทดลองเขาใชแอททรบวททถกปกปอง
![Page 164: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/164.jpg)
11/01/61Page 164
ทาไมเราควรกาหนดการปกปองแอททรบวท
• ความเปนสวนตวสามารถปองกนวตถอนๆเขามาทาลายคณสมบตบางอยาง – เลขบญชธนาคารตดลบแทนทจะเปนเลขศนยหรอเลข
บวก – ความกวางและความสงของสเหลยมนอยกวาหรอเทากบ
ศนย
• ทาใหเราสามารถเปลยนแปลงชนดของตวแปรเหลานนได โดยไมกระทบกระเทอนคลาสอนทใช คลาสของเรา
![Page 165: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/165.jpg)
11/01/61Page 165
การซอนวธการทางาน
• สามารถเปลยนแปลงวธการทางานของวตถไดโดยไมกระทบตอผใชวตถ
• เกดความยดหยน – เชน ถาเปรยบวตถเหมอนกบรถ และผใชวตถคอคนขบรถ
บรษทผผลตรถสามารถเปลยนเครองยนตรนใหม เปลยนระบบเบรค ฯลฯ โดยทคนขบยงสามารถขบรถได เหมอนเดม
Information hiding
![Page 166: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/166.jpg)
11/01/61Page 166
สเหลยมทผดปกต
• Rectangle rect = new Rectangle( -10, 10);• IllegalArgumentException
![Page 167: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/167.jpg)
11/01/61Page 167
การแจงวามความผดปกต
class Rectangle {public Rectangle(double w, double h) {
if (w <= 0 || h <= 0)throw new IllegalArgumentException();
width = w;height = h;
}...
}
![Page 168: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/168.jpg)
11/01/61Page 168
การแจงวามความผดปกต
![Page 169: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/169.jpg)
11/01/61Page 169
การเขาใชแบบอนๆ
• protected– เกยวของกบการสบทอด
• การเขาใชแบบแพคเกจ (package)– แพคเกจเปนทเกบรวมรวมคลาสทเกยวของกน – แพคเกจเปรยบไดกบโฟลเดอร– การเขาใชแบบแพคเกจไมตองใชคาประกอบใดๆ
![Page 170: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/170.jpg)
11/01/61Page 170
สแตตกเมธอด (static method)
• เมธอดของคลาส• รปแบบการประกาศ
– public static ชนดขอมลทสงกลบ เมธอด(พารามเตอร) { … }
• รปแบบการเรยกใช – คลาส.สแตตกเมธอด(พารามเตอร )
• ตวอยางการเรยกใช – int m = Math.round(12.5); – int n = String.valueOf(1234);
![Page 171: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/171.jpg)
11/01/61Page 171
ตวแปรของคลาส
• รปแบบ– private static ชนดขอมล ตวแปร;
• ตวอยาง– private static int count;
![Page 172: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/172.jpg)
11/01/61Page 172
คาคงทของคลาส
• รปแบบ– public static final ชนดขอมล ตวแปร=คา;
• ตวอยาง– public static final int TOTAL_SIDES = 4;
![Page 173: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/173.jpg)
11/01/61Page 173
Enum
![Page 174: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/174.jpg)
11/01/61Page 174
อนม
• ชนดขอมลทสรางขนใหม• มคา (value) ทเปนไปไดอยไมกคา
– คลาสสรางวตถไดมากมาย
• อนมมวตถนอย– อนม เกรด มไดเพยง 5 คา คอ A, B, C, D, F– อนม เพศ มไดเพยง 2 คา คอ ชาย, หญง – อนม สสญญาณไฟ มไดเพยง 3 คา คอ แดง, เหลอง,
เขยว
![Page 175: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/175.jpg)
11/01/61Page 175
การประกาศอนม
• รปแบบ– enum อนม { คา1, คา2, ...}
• ตวอยาง– enum Grade { A, B, C, D, F }
![Page 176: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/176.jpg)
11/01/61Page 176
การพมพคาทกคาในอนม
public class TestGrade1 {public static void main(String[] args) {
for (Grade grade : Grade.values()) {System.out.println(grade);
}}
}
![Page 177: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/177.jpg)
11/01/61Page 177
ตวแปรชนดอนม
public class Enum {enum Grade { A, B, C, D, F }
public static void main(String[] args) {Grade myGrade = Grade.A;
System.out.println(myGrade);}
}
![Page 178: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/178.jpg)
11/01/61Page 178
การกาหนดคาอนๆใหกบตวแปรอนม
public class Enum {enum Grade { A, B, C, D, F }
public static void main(String[] args) {Grade myGrade = Grade.A;
myGrade = 'Z'; //myGrade = Grade.Z; //
System.out.println(myGrade);}
}
![Page 179: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/179.jpg)
11/01/61Page 179
เมธอด
• อนมสามารถมเมธอดไดเหมอนกบคลาส• การเรยกใชเมธอดทาโดยผานตวแปรอนม
![Page 180: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/180.jpg)
11/01/61Page 180
อนมสญญาณไฟจราจร
public enum TrafficLight {
RED, GREEN, YELLOW;
public TrafficLight next() {
switch(this) {
case RED: return GREEN;
case GREEN: return YELLOW;
default: return RED;
}
}
}
![Page 181: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/181.jpg)
11/01/61Page 181
ทดสอบไฟจราจรpublic class Test {
public static void main(String[] args) {TrafficLight t = TrafficLight.RED;System.out.println(t);t = t.next();System.out.println(t);t = t.next();System.out.println(t);
TrafficLight u = TrafficLight.YELLOW;System.out.println(u.next());
}}
![Page 182: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/182.jpg)
Test_traffficLight
11/01/61Page 182
![Page 183: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/183.jpg)
11/01/61Page 183
Package
![Page 184: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/184.jpg)
11/01/61Page 184
แพคเกจ
• เปรยบไดกบโฟลเดอร • ประโยชน
– จดระเบยบคลาส– แกปญหาคลาสชอซากน
![Page 185: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/185.jpg)
11/01/61Page 185
การนาคลาสไปใสในแพคเกจ
• รปแบบ– package แพคเกจ;
• ตวอยางpackage somchai;
public class Rectangle {...
}
![Page 186: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/186.jpg)
11/01/61Page 186
การนาคลาสไปใสในแพคเกจยอย
• รปแบบ– package แพคเกจ.แพคเกจยอย ;
• ตวอยางpackage somchai.shape;
public class Triangle {...
}
![Page 187: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/187.jpg)
11/01/61Page 187
การตงชอแพคเกจ
• นยมตงเปนโดเมนเนมยอนหลง– com.mycompany– th.in.somchai
• ตอดวยชอแพคเกจยอย– th.in.somchai.shape
![Page 188: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/188.jpg)
11/01/61Page 188
การอางถงคลาสทอยในแพคเกจ
• สาหรบคลาสในแพคเกจเดยวกน– ใชชอคลาส
• สาหรบคลาสทอยตางแพคเกจ– รปแบบ
• แพคเกจ.คลาส;
– ตวอยางsomchai.Rectangle r;r = new somchai.Rectangle()
![Page 189: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/189.jpg)
11/01/61Page 189
ตวอยาง: คลาสสเหลยมในแพคเกจสมชาย
package somchai;
public class Rectangle {public void say() {
System.out.println("I'm a rectangle");}
}
![Page 190: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/190.jpg)
11/01/61Page 190
การอางถงคลาสทอยในแพคเกจ
package somchai;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
package somying;
public class TestRectangle {public static void main(String[] a){
somchai.Rectangle r;r = new somchai.Rectangle();r.say();
}}
![Page 191: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/191.jpg)
11/01/61Page 191
การอมพอรตคลาสจากแพคเกจอน
• ขอดคอไมตองเขยนชอเตม
![Page 192: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/192.jpg)
11/01/61Page 192
การอมพอรตคลาส
• รปแบบ– import แพคเกจ.คลาส;– import แพคเกจ.*;
• ตวอยางimport somchai.Rectangle;import somchai.*;
![Page 193: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/193.jpg)
11/01/61Page 193
ตวอยางการอมพอรตคลาสสเหลยม
package somying;
public class TestRectangle {public static void main(String[] a){
somchai.Rectangle r;r = new somchai.Rectangle();r.say();
}}
package somying;import somchai.*;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
![Page 194: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/194.jpg)
11/01/61Page 194
โฟลเดอรทใชเกบคลาส
• คลาส Rectangle อยในแพคเกจ somchai ดงนนไฟล Rectangle.java ควรอยในโฟลเดอร somchai
• คลาส TestRectangle อยในแพคเกจ somyingดงนนไฟล TestRectangle.java ควรอยในโฟลเดอร somying
![Page 195: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/195.jpg)
11/01/61Page 195
การคอมไพลและรน
![Page 196: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/196.jpg)
11/01/61Page 196
ผลการคอมไพล
• การคอมไพลไฟลซอรสโคดดวยคาสงในหนาทแลว ทาใหเกดไฟลไบตโคดในโฟลเดอรเดยวกน
![Page 197: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/197.jpg)
11/01/61Page 197
แยกไฟล .java กบ .class
• สรางโฟลเดอรชอ src เพอเกบซอรสโคด • สรางโฟลเดอรชอ classes เพอเกบไบตโคด• ใชคาสงตอไปนในโฟลเดอร src
![Page 198: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/198.jpg)
11/01/61Page 198
ออปชนการคอมไพลและรน
• การคอมไพลดวยออปชน -d หมายถงใหสรางไบตโคดในโฟลเดอรทกาหนด ในทนคอ ..\classes
• การรนดวยออปชน -cp หมายถงใหเครองจกรเสมอนจาวาหาคลาส (ไบตโคด) ในโฟลเดอรทกาหนด ในทนคอ ..\classes
![Page 199: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/199.jpg)
11/01/61Page 199
ทดลองตดออกทละคาและศกษาความหมาย
package somchai;public class Rectangle {
public void say() {System.out.println("I'm a rectangle");
}}
![Page 200: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/200.jpg)
11/01/61Page 200
แพคเกจไรชอ (default package)
package somchai;public class Rectangle {
public void say() {System.out.println("I'm a rectangle");
}}
• ไมสามารถอมพอรตคลาสจากแพคเกจไรชอได
![Page 201: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/201.jpg)
11/01/61Page 201
แพคเกจไรชอ
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
package somying;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
![Page 202: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/202.jpg)
11/01/61Page 202
คลาสทใชไดภายในแพคเกจ
package somchai;public class Rectangle {
public void say() {System.out.println("I'm a rectangle");
}}
• คลาสในแพคเกจเดยวกนเทานนทสามารถเรยกใชได
![Page 203: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/203.jpg)
11/01/61Page 203
คลาสทใชไดภายในแพคเกจ
package somchai;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
package somying;import somchai.*;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
![Page 204: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/204.jpg)
11/01/61Page 204
การเขาใชแบบแพคเกจ
package somchai;public class Rectangle {
public void say() {System.out.println("I'm a rectangle");
}}
• คลาสในแพคเกจเดยวกนเทานนทสามารถเรยกใชได
![Page 205: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/205.jpg)
11/01/61Page 205
ตวอยางการอมพอรตคลาสสเหลยม
package somchai;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
package somying;import somchai.*;
public class TestRectangle {public static void main(String[] a){
Rectangle r;r = new Rectangle();r.say();
}}
![Page 206: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/206.jpg)
11/01/61Page 206
แพคเกจทจาวาจดให
• จาวารน 5.0 มคลาสและอนเตอรเฟซรวมกนถง 3,279 อน
• จดหมวดหมไวเปนแพคเกจจานวน 166 แพคเกจ
![Page 207: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/207.jpg)
11/01/61Page 207
แพคเกจทจาวาจดให
![Page 208: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/208.jpg)
11/01/61Page 208
แพคเกจทเปนพนฐานของภาษาจาวา
• java.lang มคลาสทเราใชกนประจาไดแก String, StringBuffer และ Math – คลาสตางๆ ในแพคเกจนสามารถเรยกใชไดโดยไมตองอมพอรต
• java.util มคอลเลคชนคลาสซงใชในการเกบวตถอนๆ คลาสทจดการเกยวกบวนเวลา และคลาสอรรถประโยชนอนๆ
• java.awt และ javax.swing มคลาสสาหรบสรางสวนตดตอกบผใชแบบกราฟก
• java.applet มคลาสสาหรบใชสรางจาวาแอพเพลต
![Page 209: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/209.jpg)
11/01/61Page 209
การอมพอรตสแตตกแอททรบวทและเมธอด
![Page 210: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/210.jpg)
11/01/61Page 210
อมพอรตสแตตก
• อมพอรตแอททรบวทหรอเมธอดของคลาส (staticattributes and methods)
• รปแบบ– import static แพคเกจ.คลาส.คาคงทของคลาส;– import static แพคเกจ.คลาส.เมธอดของคลาส;
![Page 211: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/211.jpg)
11/01/61Page 211
อมพอรตสแตตก
• ตวอยางimport static java.lang.Math.PI;import static java.lang.Math.cos;
public class TestImportStatic {public static void main(String[] args) {
System.out.println(cos(PI));}
}
![Page 212: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/212.jpg)
11/01/61Page 212
Interface
![Page 213: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/213.jpg)
11/01/61Page 213
อนเทอรเฟซ
• วตถตางคลาสกน อาจจะมความสามารถบางอยางทเหมอนกน
• เชน นกและเครองบนเปนวตถทตางประเภทกน แตทงคกสามารถบนไดเหมอนกน
• จดใหคลาสนกและเครองบนอยในกลมเดยวกน• เรยกกลมของคลาสทมความสามารถเหมอนกนวาม
อนเทอรเฟซ แบบเดยวกน
![Page 214: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/214.jpg)
11/01/61Page 214
อนเทอรเฟซ บนได
interface บนได {บน();
}
![Page 215: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/215.jpg)
11/01/61Page 215
อมพลเมนต
class นก implements บนได {บน( ) {
// วธการบนของนก}
}class เครองบน implements บนได {
บน( ) {// วธการบนของเครองบน
}}
![Page 216: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/216.jpg)
11/01/61Page 216
การใชงานอนเทอรเฟซ
• ประกาศเรฟเฟอรเรนซ– บนได บ;
• สรางและอางถงวตถ– บ = new นก();
• เรยกใชเมธอดทประกาศในอนเทอรเฟซ– บ.บน();
![Page 217: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/217.jpg)
11/01/61Page 217
เรฟเฟอรเรนซทอางถงวตถตางคลาส
บนได บ;
บ = new นก();บ = new เครองบน();
บ.บน();
![Page 218: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/218.jpg)
11/01/61Page 218
พอลมอรฟซม (polymorphism)
บนได บ;บ = new นก();บ.บน();บ = new เครองบน();บ.บน();
• คาสงแบบเดยว แตไปทางานทเมธอดทแตกตางกน
![Page 219: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/219.jpg)
11/01/61Page 219
เรฟเฟอรเรนซไมสามารถเรยกใชไดทกเมธอด
บนได บ = new นก();บ.จก();
บนได ค = new เครองบน( );ค.จก( );
![Page 220: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/220.jpg)
11/01/61Page 220
อนเทอรเฟซทมมากกวาหนงเมธอด
interface บนได {บน();รอนลง();
}
class นก implements บนได {บน( ) {
// วธการบนของนก}รอนลง( ) {
// วธการรอนลงของนก}
}
![Page 221: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/221.jpg)
11/01/61Page 221
อมพลเมนตมากกวาหนงอนเทอรเฟซ
interface รองเพลงได {รองเพลง( );
}
class นก implements บนได , รองเพลงได {บน( ) { ไทยจาวา
// วธการบนของนก}รอนลง( ) {
// วธการรอนลงของนก}รองเพลง( ){
// วธการรองเพลงของนก}
}
![Page 222: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/222.jpg)
11/01/61Page 222
![Page 223: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/223.jpg)
11/01/61Page 223
คาคงท
![Page 224: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/224.jpg)
11/01/61Page 224
คาคงท
interface บนได {int เพดานบน = 1000;void บน( );void รอนลง( );
}
![Page 225: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/225.jpg)
11/01/61Page 225
คาคงท
interface บนได {public static final int เพดานบน = 1000;void บน( );void รอนลง( );
}
![Page 226: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/226.jpg)
11/01/61Page 226
การอานคาคงท
• คลาสทอมพลเมนตอนเทอรเฟซ บนได เขยนแค เพดานบน
• คลาสอนทไมเกยวของกบอนเทอรเฟซนตองเขยนชอเตมคอ บนได.เพดานบน
![Page 227: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/227.jpg)
11/01/61Page 227
สรางอนเทอรเฟซดวยภาษาจาวา
![Page 228: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/228.jpg)
11/01/61Page 228
อนเทอรเฟซ 'ตราคาได' (Priceable)
• กลมของคลาสทเปนสนคาในราน • เมธอด getPrice( )
![Page 229: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/229.jpg)
11/01/61Page 229
อนเทอรเฟซ 'ตราคาได' (Priceable)
public interface Priceable {int getPrice();
}
![Page 230: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/230.jpg)
11/01/61Page 230
คลาสไมจมฟน
• ชนละ 100 บาท
![Page 231: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/231.jpg)
11/01/61Page 231
คลาสไมจมฟน
public class Toothpick implements Priceable {public int getPrice() {
return 100;}
}
![Page 232: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/232.jpg)
11/01/61Page 232
ทดสอบคลาสไมจมฟน
public class TestPriceable1 {public static void main(String[] args) {
Priceable item = new Toothpick();System.out.println(item.getPrice());
}}
![Page 233: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/233.jpg)
11/01/61Page 233
คลาสเรอรบ
• วธคดราคาทซบซอนขน• เรอรบลาใหมจะมราคาหนงลานบาท • เรอรบทใชแลวราคาจะลดลงไปปละแสนบาท แต
ราคาจะไมตากวา 10,000 บาท
![Page 234: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/234.jpg)
11/01/61Page 234
คลาสเรอรบ
public class BattleShip implements Priceable {public int getPrice() {
int deprecation = age * 100000;return Math.max(originalPrice - deprecation, 10000);
}public void setAge(int year) {
age = year;}int originalPrice = 1000000;int age = 0;
}
![Page 235: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/235.jpg)
11/01/61Page 235
ทดสอบคลาสเรอรบ
public class TestPriceable2 {
public static void main(String[] args) {BattleShip ship = new BattleShip();ship.setAge(3);
Priceable item = ship;System.out.println(item.getPrice());
}}
![Page 236: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/236.jpg)
11/01/61Page 236
คลาสรถเขน
• คานวณราคาสนคา (Priceable) ทงหมดทอยในรถเขน
• เกบสนคาได 2 ชน
![Page 237: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/237.jpg)
11/01/61Page 237
คลาสรถเขน
public class Cart {Priceable[] items = new Priceable[2];
public int sumPrice() {int sum;sum = items[0].getPrice() + items[1].getPrice();return sum;
}}
![Page 238: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/238.jpg)
11/01/61Page 238
ทดสอบคลาสรถเขน
public class TestPriceable3 {public static void main(String[] args) {
Toothpick toothpick = new Toothpick();BattleShip ship = new BattleShip();ship.setAge(3);
Cart cart = new Cart();cart.items[0] = toothpick ;cart.items[1] = ship;System.out.println(cart.sumPrice());
}}
![Page 239: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/239.jpg)
11/01/61Page 239
อนเทอรเฟซกบการนากลบมาใชใหม
• ในอนาคต ทางรานตองการขายลง • เขากจะนาลงมาอยในกลมของสงทตราคาได • สามารถนาลงมาใสในรถเขนและคดราคาไดโดยไม
ตองไปแกไขคลาสรถเขน
Cart cart = new Cart();cart.items[0] = monkey;cart.items[1] = toothpick;
System.out.println(cart.sumPrice());
![Page 240: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/240.jpg)
11/01/61Page 240
interface Comparable<T>
• int compareTo(T o)– a negative integer : this < o– zero : this = o– a positive integer : this > o
![Page 241: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/241.jpg)
11/01/61Page 241
ตวอยาง Person
• เปรยบเทยบเงนเดอน
![Page 242: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/242.jpg)
11/01/61Page 242
Inheritance
![Page 243: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/243.jpg)
11/01/61Page 243
การสบทอด (inheritance)
• เลยนแบบการสบทอดลกษณะของลกจากพอและแม
• ขยายความสามารถของคลาสแม• เปลยนแปลงการทางานของคลาสแม
![Page 244: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/244.jpg)
11/01/61Page 244
การสบทอด
• รปแบบ– class คลาสลก extends คลาสแม
• ตวอยางclass แมว extends สตว { }class ปลา extends สตว { }class ลง extends สตว {}
มคลาสแมไดแคคลาสเดยว
![Page 245: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/245.jpg)
11/01/61Page 245
วตถในคลาสลกสามารถทางานตามเมธอดของคลาสแมได
ลง ล = new ลง();ล.กน();
![Page 246: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/246.jpg)
11/01/61Page 246
เพมเมธอดในคลาสลก
class ลง extends สตว {// เมธอดทเพมเขามาเกบลกมะพราว() { … }
}ลง ล = new ลง();ล.เกบลกมะพราว();สตว ส = new สตว();ส.เกบลกมะพราว();
![Page 247: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/247.jpg)
11/01/61Page 247
เพมแอททรบวทในคลาสลก
class ปลา extends สตว {// แอตทรบวตทเพมเขามา ชอ;
}
![Page 248: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/248.jpg)
11/01/61Page 248
พอลมอรฟซม (Polymorphism)
![Page 249: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/249.jpg)
11/01/61Page 249
การโอเวอรไรดเมธอด (override)
class ปลา extends สตว {// แอตทรบวตชอ;
// เมธอดนอน() {
// วธการนอนของปลา…
}}
![Page 250: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/250.jpg)
11/01/61Page 250
พอลมอรฟซม
![Page 251: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/251.jpg)
11/01/61Page 251
ความหมาย
• poly แปลวาหลายหรอมาก • morphism นนมาจากคาวา morph ซงแปลวา
รปราง• รวมกนแลวหมายถงความสามารถทส งหนงจะมได
หลายรปราง ซงเมอใชคานกบการโปรแกรมเชงวตถ กจะหมายถงการทคาสงแบบเดยวกนสามารถถกแปลไดหลายแบบ
![Page 252: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/252.jpg)
11/01/61Page 252
พอลมอรฟซมกบการนากลบมาใชใหม
• พอลมอรฟซมสนบสนน การนากลบมาใชใหม(reuse)
• ถาเราไดเขยนโปรแกรมทใชงานไดกบสตว โปรแกรมของเรายอมใชไดกบแมว ปลา และลงนอกจากนนถามคนสรางคลาสอกวนาขนมาใหม โปรแกรมทเราเขยนกสามารถใชไดกบคลาสอกวนาเชนกน
![Page 253: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/253.jpg)
11/01/61Page 253
การสบทอดในภาษาจาวา
![Page 254: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/254.jpg)
11/01/61Page 254
คลาสรปรางและคลาสทสบทอด
![Page 255: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/255.jpg)
11/01/61Page 255
คลาสรปราง
• รปรางเปนรปทอยในระนาบสองมต • มพนท
– เมธอด getArea() ใชคานวณหาพนทของรปราง
• มส– public enum Color { Red, Green, Blue } – เมธอด getColor()
![Page 256: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/256.jpg)
11/01/61Page 256
คลาสรปราง
public class Shape {public Shape() { color = Color.Red; }
public double getArea() { return 0; }
public void setColor(Color c) { color = c; } public Color getColor() { return color; }
private Color color;}
![Page 257: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/257.jpg)
11/01/61Page 257
ทดสอบคลาสรปราง
public class TestShape {public static void main(String[] args) {
Shape s1 = new Shape();System.out.println(s1.getColor());System.out.println(s1.getArea());
Shape s2 = new Shape();s2.setColor(Color.Blue);System.out.println(s2.getColor());System.out.println(s2.getArea());
}}
![Page 258: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/258.jpg)
11/01/61Page 258
คอมไพลและรน
![Page 259: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/259.jpg)
11/01/61Page 259
คลาสสเหลยมผนผา
class Rectangle extends Shape {...public double getArea() {
return width * height;}
}
![Page 260: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/260.jpg)
11/01/61Page 260
คลาส Object
![Page 261: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/261.jpg)
11/01/61Page 261
เมธอด toString()
public class Rectangle extends Shape {...
@Overridepublic String toString() {
String str = "Rectangle";str += " color=" + getColor();str += " width=" + width;str += " height=" + height;str += " area=" + getArea();return str;
}}
![Page 262: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/262.jpg)
11/01/61Page 262
เมธอด toString()
• เปนเมธอดทถกโอเวอรไรดจากคลาส Object
![Page 263: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/263.jpg)
11/01/61Page 263
คลาส Object
• แมของทกคลาส• เมธอดทนาสนใจ
– toString()– equals()– clone() – hashCode()
![Page 264: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/264.jpg)
11/01/61Page 264
เมธอด equals()
@Override public boolean equals(Object otherObject) {
if (otherObject instanceof Rectangle) { Rectangle otherRect = (Rectangle) otherObject;
boolean equalWidth = width == otherRect.width;boolean equalHeight = height == otherRect.height;
return equalWidth && equalHeight;}return false;
}
![Page 265: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/265.jpg)
11/01/61Page 265
เมธอด hashCode()
• จะสงจานวนเตมทเปนรหสแฮช เพอการคนหาขอมลทรวดเรว
@Overridepublic int hashCode() {
return (int) (width + height * 17);}
![Page 266: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/266.jpg)
11/01/61Page 266
เมธอด clone()
สรางวตถทเหมอนกบวตถทไดรบขอความ
@Overridepublic Object clone() {
Rectangle clone = new Rectangle(width, height);return clone;
}
![Page 267: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/267.jpg)
11/01/61Page 267
ทดสอบเมธอดทโอเวอรไรดจากคลาส Object
public class TestRectangle3 {public static void main(String[] args) {
Rectangle r1 = new Rectangle(2, 5);System.out.println(r1);System.out.println(r1.hashCode());
Rectangle r2 = new Rectangle(5, 2);System.out.println(r1.equals(r2));
Rectangle r3 = (Rectangle) r1.clone();System.out.println(r1.equals(r3));
}}
![Page 268: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/268.jpg)
11/01/61Page 268
สรปเมธอดในคลาสสเหลยมผนผา
![Page 269: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/269.jpg)
11/01/61Page 269
การหามโอเวอรไรด
![Page 270: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/270.jpg)
11/01/61Page 270
คลาสสเหลยมจตรส
public class Square extends Rectangle {public Square( double w) {
super(w,w);}...
}
![Page 271: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/271.jpg)
11/01/61Page 271
ไฟนอลคลาส
• ไมสามารถถกสบทอดได
public final class Square
![Page 272: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/272.jpg)
11/01/61Page 272
ไฟนอลเมธอด
• ไมสามารถถกโอเวอรไรดได
public class Shape {public final Color getColor() {
return color;}...
}
![Page 273: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/273.jpg)
11/01/61Page 273
การเขาใชแบบ protected
![Page 274: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/274.jpg)
11/01/61Page 274
การเขาใชแบบ protected
• คลาสลกสามารถใชเมธอดและแอททรบวททมการเขาใชแบบ protected ได
• คลาสทอยในแพคเกจเดยวกนกสามารถใชเมธอดและแอททรบวททมการเขาใชแบบ protected ได
• การเขาใชแบบนมความเขมงวดนอยกวาแบบprivate ซงหามคลาสอนใดเขาใช แตกอสระนอยกวาแบบ public ทใครๆกสามารถเขาใชได
![Page 275: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/275.jpg)
11/01/61Page 275
การเขาใชแบบ protected
![Page 276: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/276.jpg)
11/01/61Page 276
คลาสวงกลม
public class Circle extends Shape {protected double radius;
public Circle(double r) {radius = r;
}
public double getRadius() {return radius;
}...
}
![Page 277: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/277.jpg)
11/01/61Page 277
คานวณพนทของวงแหวน
public class Ring1 extends Circle {public double getArea() {
double outerArea = Math.PI * radius * radius; double innerArea = Math.PI * innerRadius * innerRadius; return outerArea - innerArea;
}...
}
![Page 278: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/278.jpg)
11/01/61Page 278
คานวณพนทของวงแหวน
public class Ring2 extends Circle {public double getArea() {
double outerArea = super.getArea();double innerArea = Math.PI * innerRadius * innerRadius; return outerArea - innerArea;
}...
}
![Page 279: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/279.jpg)
11/01/61Page 279
แอบสแตรกทคลาส (abstract class)
![Page 280: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/280.jpg)
11/01/61Page 280
คลาสทประกาศขนมาลอยๆ (Abstract Class)
• เมธอด getArea() ในคลาส Shape ไมควรสงคาศนยหรอคาใดๆกลบมา ทงนเพราะวาเราไมทราบวธคานวณหาพนทของวตถ Shape
public abstract double getArea();
• เมธอดทถกประกาศขนมาลอยๆ (abstract) นตองอยในคลาสทเปน abstract ดวยเชนกน คลาส Shape เขยนใหมไดดงน
public abstract class Shape {public abstract double getArea();...
}
![Page 281: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/281.jpg)
11/01/61Page 281
การใชงาน abstract class
• ไมสามารถสรางวตถในคลาสนได Shape s = new Shape();
• แตอางถงวตถในคลาสลกได Shape s;s = new Rectangle(3,2);s = new Square(5);
![Page 282: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/282.jpg)
11/01/61Page 282
พอลมอรฟซม
public class TestPolymorphism {public static void main(String[] args) {
Shape shape;
shape = new Rectangle(10, 20);System.out.println(shape.getArea());
shape = new Circle(10);System.out.println(shape.getArea());
}}
![Page 283: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/283.jpg)
11/01/61Page 283
การนามาใชอก
public class ShapeArray {public static double sumArea(Shape[] shapes) {
double sum = 0;for( Shape s : shapes) {
sum += s.getArea();} return sum;
}}
![Page 284: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/284.jpg)
11/01/61Page 284
การนามาใชอก
Shape[] s = new Shape[3];s[0] = new Triangle(10);s[1] = new Rectangle(10,20);s[2] = new Pentagon(20);
double d = ShapeArray.sumArea(s);
![Page 285: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/285.jpg)
11/01/61Page 285
ขอดขอเสยของการสบทอด
![Page 286: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/286.jpg)
11/01/61Page 286
ขอดของการสบทอด
• การนากลบมาใชใหม – ถาเราตองการสรางคลาสทมความสามารถคลายๆกบคลาสทมอย
แลว – เราอาจจะใชการสบทอดแทนทจะเขยนขนมาใหมหมด
• ความเปนมาตรฐานเดยวกน – คลาสพนฐานเปนการกาหนดโครงแบบในการระบความสามารถของ
วตถในคลาสลก
• เขาใจสาระสาคญไดงาย
![Page 287: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/287.jpg)
11/01/61Page 287
ขอเสยของการสบทอด
• โปรแกรมทางานชาลง – มคาใชจาย (overhead) ในคนหาและเรยกใชเมธอดของคลาสทสบ
ทอด – แตคาใชจายดงกลาวถอวานอยมากเมอเทยบกบประโยชนทไดรบ
จากการสบทอด
• โปรแกรมมขนาดใหญขน – แตหนวยความจาราคาไมแพง
• ความซบซอนเพมขน – ผใชตองหาตามคลาสตางๆ ทอยในผงการสบทอดจนกวาจะพบ
คลาสทอมพลเมนตเมธอดนน ปญหาทกลาวถงนมช อวาปญหาลกดง (Yo-yo problem)
![Page 288: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/288.jpg)
11/01/61Page 288
Composition
• ม Counter• สราง CounterUpDown
– class CounterUpDown extends Counterหรอ
– class CounterUpDown {Counter c;....
}
![Page 289: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/289.jpg)
11/01/61Page 289
Generics
![Page 290: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/290.jpg)
11/01/61Page 290
หวขอ
• นยามและประโยชน• ตวอยาง
– คลาส Pair– คลาส Stack
• Generic array creation• Generic Method• Bounded Type• Wildcard
![Page 291: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/291.jpg)
11/01/61Page 291
นยามและประโยชน
![Page 292: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/292.jpg)
11/01/61Page 292
Generics
• Generics is essentially the ability to have type parameters on your type.
• They are also called parameterized types or parametric polymorphism
![Page 293: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/293.jpg)
11/01/61Page 293
ประโยชน
• เขยนคลาสเพยงเวอรชนเดยว– List<E> vs ListOfInteger, ListOfString, etc
• type safety– คอมไพเลอรสามารถตรวจสอบประเภทขอมลได
List<Integer> list = new ArrayList<Integer>();list.add(10);String s = list.get(0); // compile fails
• โคดอานงาย– ไมตอง cast
![Page 294: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/294.jpg)
11/01/61Page 294
ใชระบประเภทของวตถทcollection ใชเกบ
List<String> list = new ArrayList();String s1 = "hello";StringBuffer sb = new StringBuffer("hello");list.add("hello");list.add(sb); // won't compile
![Page 295: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/295.jpg)
11/01/61Page 295
ตวอยาง
![Page 296: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/296.jpg)
11/01/61Page 296
คลาส Pair
public final class Pair<X, Y> {private X first;private Y second;public Pair(X first, Y second) {
this.first = first;this.second = second;
}public X getFirst() {
return first;} public Y getSecond() {
return second;}
}
![Page 297: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/297.jpg)
11/01/61Page 297
ทดสอบคลาส Pair
public class TestPair {public static void main(String[] args) {
Pair<Integer, String> pair;pair = new Pair(10, "somchai");System.out.println(pair.getFirst());System.out.println(pair.getSecond());
Pair<String, String> name;name = new Pair("somchai", "brown");System.out.println(name.getFirst());System.out.println(name.getSecond());
}}
![Page 298: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/298.jpg)
11/01/61Page 298
Stack
public class Stack<E> {
E items[];
int count;
void push(E e) {
items[count++] = e;
}E pop() {
return items[--count];
}...
}
![Page 299: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/299.jpg)
11/01/61Page 299
Stack
public class Stack<E> {
static final int MAX_ITEM = 32;
Stack() {
Object[] objects = new Object[MAX_ITEM];
items = (E[]) objects;
count = 0;}
...
}
![Page 300: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/300.jpg)
11/01/61Page 300
การใชงาน
![Page 301: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/301.jpg)
11/01/61Page 301
Generic Array Creation
import java.util.*;
public class ArrayOfList {public static void main(String[] args) {
List<String> [] lists;lists = new List<String>[10]; // compile fails
}}
![Page 302: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/302.jpg)
11/01/61Page 302
เหตผลทหามสรางอารเรยของ genericpackage genericarray;
import java.util.*;
public class GenericArray {public static void main(String[] args) {
List<String>[] arrayOfListOfString = null;// arrayOfListOfString = new ArrayList<String>[3]; // not allowed
List<Integer> listOfInteger = new ArrayList<Integer>();listOfInteger.add(10);listOfInteger.add(20);listOfInteger.add(30);
Object[] arrayOfObject = (Object[]) arrayOfListOfString ;arrayOfObject[0] = listOfInteger;// run-time error: ClassCastExceptionString s = arrayOfListOfString[0].get(2);
}}
![Page 303: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/303.jpg)
11/01/61Page 303
Upper Bounded
public final class PairWithBound<X, Y extends Comparable> {private X first;private Y second;public PairWithBound(X first, Y second) {
this.first = first;this.second = second;
}public X getFirst() { return first; }
public int compares(PairWithBound<X, Y> other) {return this.second.compareTo(other.second);
}}
![Page 304: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/304.jpg)
11/01/61Page 304
Wildcard (1)
import java.util.*;
public class ProcessList {public void print(List<Object> list) {
for (Object o : list)System.out.println(o);
}}
![Page 305: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/305.jpg)
11/01/61Page 305
Wildcard (2)
import java.util.*;
public class Test {public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();list.add(10);list.add(20);list.add(30);ProcessList.print(list); // compile fails
}}
![Page 306: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/306.jpg)
11/01/61Page 306
Wildcard (3)
import java.util.*;
public class ProcessList {public static void print(List<?> list) {
for (Object o : list)System.out.println(o);
}}
![Page 307: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/307.jpg)
11/01/61Page 307
Lower Bound
![Page 308: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/308.jpg)
11/01/61Page 308
Generic Method
public class Max {static public <T extends Comparable> T max(T t1, T t2) {
if (t1.compareTo(t2) > 0) {return t1;
return t2;}
}
![Page 309: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/309.jpg)
11/01/61Page 309
Generic Method
public class TestMax {
public static void main(String[] args) {String s = Max.max("somying", "somchai");Integer i = Max.max(10, 20);System.out.println(s);System.out.println(i);
}}
![Page 310: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/310.jpg)
11/01/61Page 310
Wildcard
![Page 311: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/311.jpg)
11/01/61Page 311
Wildcard
• Wildcard– void printElements(List<?> myList) { ... }
• List<?> is the supertype of all kind of List
• Bounded wildcard– void printElements(List<? extends E> myList) { ... } – void printElements(List<? super E> myList) { ... }
![Page 312: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/312.jpg)
11/01/61Page 312
List of Unknown Type
import java.util.*;
public class TestUnknown {public static void main(String[] args) {
List<String> listOfString;List<?> listOfUnknown;listOfString = new ArrayList<String>();listOfString.add("hi");listOfUnknown = listOfString;listOfUnknown.add(new Object()); // compile failsObject obj = listOfUnknown.get(0);System.out.println(obj);
}}
![Page 313: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/313.jpg)
11/01/61Page 313
Bounded Wildcard
public void draw(List<Shape> shape) {for(Shape s: shape) { s.draw(this);
} }
public void draw(List<? extends Shape> shape) { // rest of the code is the same
}
ไมสามารถวาดList<Rectangle> ได
![Page 315: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/315.jpg)
11/01/61Page 315
หวขอ
• อนเนอรคลาส• ตวอยางการใชงานอนเนอรคลาสเพอจดการกบ
เหตการณ• ประโยชนของ inner class• ประเภทของ inner class
![Page 316: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/316.jpg)
11/01/61Page 316
อนเนอรคลาส
![Page 317: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/317.jpg)
11/01/61Page 317
อนเนอรคลาส
• คลาสทอยภายในคลาสอน• The class that encloses it is called the outer
or top-level class.• มกใชเพอจดการกบเหตการณ (event)
![Page 318: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/318.jpg)
11/01/61Page 318
ตวอยางการใชงานอนเนอรคลาสเพอจดการกบเหตการณ
![Page 319: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/319.jpg)
11/01/61Page 319
เฟรมเปลา
import javax.swing.*;
public class NoButton extends JFrame {public static void main(String[] args) {
JFrame frame = new NoButton();frame.setSize(150, 70);frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.setVisible(true);
} }
![Page 320: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/320.jpg)
11/01/61Page 320
เฟรมเปลา
![Page 321: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/321.jpg)
11/01/61Page 321
เพมป มในเฟรม
import javax.swing.*;import java.awt.*;
public class OneButtonNoHandler extends JFrame {public OneButtonNoHandler() {
button = new JButton("One");add(button);getContentPane().setLayout(new FlowLayout());
}
JButton button;...
}
![Page 322: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/322.jpg)
11/01/61Page 322
เพมป มในเฟรม
![Page 323: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/323.jpg)
11/01/61Page 323
รบรการกดป ม
import javax.swing.*;import java.awt.*;import java.awt.event.*;
public class OneButton extends JFrame implements ActionListener {public OneButton() {
...button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(this, "You clicked One.");
}}
![Page 324: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/324.jpg)
11/01/61Page 324
รบรการกดป ม
![Page 325: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/325.jpg)
11/01/61Page 325
มสองป มในเฟรม
public class TwoButtons extends JFrame implements ActionListener {public TwoButtons() {
button1 = new JButton("One");button1.addActionListener(this);
button2 = new JButton("Two");button2.addActionListener(this);
add(button1);add(button2);getContentPane().setLayout(new FlowLayout());
}...
![Page 326: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/326.jpg)
11/01/61Page 326
มสองป มในเฟรม
public class TwoButtons extends JFrame implements ActionListener {public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) {JOptionPane.showMessageDialog(this, "You clicked One.");
}if (e.getSource() == button2) {
JOptionPane.showMessageDialog(this, "You clicked Two.");}
}...
}
![Page 327: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/327.jpg)
11/01/61Page 327
มสองป มในเฟรม
![Page 328: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/328.jpg)
11/01/61Page 328
ใช inner class
public class TwoButtonsWithMemberClass extends JFrame {class Button1Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "You clicked One.");
}}class Button2Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "You clicked Two.");
}}...
![Page 329: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/329.jpg)
11/01/61Page 329
ใช inner class
public class TwoButtonsWithMemberClass extends JFrame {public TwoButtonsWithMemberClass () {
JButton button1 = new JButton("One");button1.addActionListener(new Button1Handler());
JButton button2 = new JButton("Two");button2.addActionListener(new Button2Handler());
add(button1);add(button2);
getContentPane().setLayout(new FlowLayout());}...
![Page 330: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/330.jpg)
11/01/61Page 330
ใช inner class
![Page 331: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/331.jpg)
11/01/61Page 331
ขอดของ inner class
• Organization– Allows us to further organize package structure through
the use of namespaces• เขาใจงาย
– Sometimes a class is only needed by one other class– Sometimes a class needs access to many variables and
methods of another class– Sometimes a class is only needed once, for one object, in
one specific place• ประโยชน
– Handle GUI event– Thread– Timer
![Page 332: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/332.jpg)
11/01/61Page 332
ประเภทของอนเนอรคลาส
![Page 333: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/333.jpg)
11/01/61Page 333
ประเภทของอนเนอรคลาส
• Member classes (ตวอยางทผานมา)• Local classes • Anonymous classes • Static member classes (not a real inner class)
![Page 334: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/334.jpg)
11/01/61Page 334
Member class
class EnclosingClass { class MemberClass {
... } ...
}
![Page 335: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/335.jpg)
11/01/61Page 335
Member class
• defined as a member of a class. • instance specific and has access to any and
all methods and members
![Page 336: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/336.jpg)
11/01/61Page 336
ตวอยาง Member class
public class Stack { private Object[] items; //code for Stack's methods and constructors not shownpublic Iterator iterator() {return new StackIterator(); } class StackIterator implements Iterator {
int currentItem; public boolean hasNext() { ... } public Object next() { ... } public void remove() { ... }
} }
![Page 337: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/337.jpg)
11/01/61Page 337
Local class
class EnclosingClass { public void foo() {
class LocalClass {...
}...
} }
![Page 338: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/338.jpg)
11/01/61Page 338
Local class
• declared within a block of code and are visible only within that block, just as any other method variable.
• The object in this class cannot access local variable– Can access final variable
![Page 339: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/339.jpg)
11/01/61Page 339
Local inner class
public class TwoButtonsWithInnerClass extends JFrame {public TwoButtonsWithLocalClass() {
class Button1Handler implements ActionListener {public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "You clicked One.");}
}class Button2Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "You clicked Two.");
}}JButton button1 = new JButton("One");button1.addActionListener(new Button1Handler());
![Page 340: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/340.jpg)
11/01/61Page 340
Anonymous inner class
class EnclosingClass { public void foo() {
someMethod(new SomeInterfaceOrClass() {public void implementedMethod() {
... }
});...
} }
![Page 341: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/341.jpg)
11/01/61Page 341
Anonymous Inner Class
• a local class that has no name • must always extend a super class or implement an
interface but it cannot have an explicit extends or implements clause
• must implement all the abstract methods in the super class or the interface.
• always uses the default constructor from the super class to create an instance
![Page 342: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/342.jpg)
11/01/61Page 342
ตวอยาง Anonymous inner class
public class TwoButtonsWithInnerClass extends JFrame {public TwoButtonsWithInnerClass() {
JButton button1 = new JButton("One");button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "You clicked One.");
}});JButton button2 = new JButton("Two");button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "You clicked Two.");
}});
![Page 343: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/343.jpg)
11/01/61Page 343
Static inner class
class EnclosingClass { static class StaticNestedClass {
... } ...
}
![Page 344: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/344.jpg)
11/01/61Page 344
Static inner class
• has access to all static methods of the parent, or top-level, class.
• cannot access instance variables of its enclosing class.
![Page 345: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/345.jpg)
11/01/61Page 345
Unit Test
![Page 346: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/346.jpg)
11/01/61Page 346
Unit Test
• Test เพอแสดงวามบกในโปรแกรม• Debug เพอแกบก• Unit Test
– ทดสอบความถกตองของคลาส– ชวยใหเรามนใจในคณภาพของซอฟทแวรและลดเวลาใน
การพฒนาซอฟทแวรลงไป – ชวยตรวจสอบเมอมการเปลยนแปลง (refactor)– JUnit
![Page 347: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/347.jpg)
11/01/61Page 347
XP (eXtreme Programming)
• Code the unit test first • ทาใหโปรแกรมเมอร
– ทราบวาตองเขยนอะไรบาง– รวาทางานเสรจเมอไร – พบปญหาเรวขน– บงคบใหตองออกแบบคลาสเพอใหตรวจสอบไดงาย– เขยนโคดใหพอทจะผานการทดสอบ– คนอนทราบวาคลาสของเราใชงานอยางไร (ดจาก Test
Code)
![Page 348: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/348.jpg)
11/01/61Page 348
คณสมบตของการทดสอบ
• การทดสอบควรทาโดยอตโนมต– ไมใชพมพอนพตทางคยบอรด กดป ม และดผลเอง
• ตวทดสอบตองทราบผลการทางานทถกตอง
![Page 349: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/349.jpg)
11/01/61Page 349
ความเชอ
• ทดสอบเพอแสดงใหเหนวาโปรแกรมทเราเขยนขนนนถกตอง– I get into the meanest, nastiest frame of mind that I can
manage, and I write the nastiest [testing] code I can think of; then I turn around and embed that in even nastier constructions that are almost obscene. - Knuth
• คลาสทผานการทดสอบแลวไมมขอผดพลาด– Testing can only prove the presence of bugs, not their
absence. -Dijkstra
• การทดสอบทาใหรจดทผดพลาดของโปรแกรม– Testing is not debugging
![Page 350: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/350.jpg)
11/01/61Page 350
JUnit
• A simple framework to write repeatable tests • Features
– Assertions for testing expected results – Test fixtures for sharing common test data – Test suites for easily organizing and running tests – Graphical and textual test runners
• http://www.junit.org/
![Page 351: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/351.jpg)
11/01/61Page 351
คลาสทจะทดสอบpublic class Rank {
public int a, b, c;public Rank(int a, int b, int c) {
this.a = a;this.b = b; this.c = c;
}public int go() {
if (a > b && a > c) return 1;
if (b > a && b > c) return 2;
return 3;}
}
เมธอด go() คนคาเปนตวเลข•ถา a มากทสด คนคา 1•ถา b มากทสด คนคา 2•ถา c มากทสด คนคา 3•ถามตวทเทากน คนคาเปนหมายเลขของตวแปรตวแรกทมากสด
![Page 352: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/352.jpg)
11/01/61Page 352
NetBeans: ทดสอบคลาส Rank
• ไปท Projects– คลกขวาทซอรสไฟล>Tools>Create JUnit Test– หรอ กด Ctrl+Shift+U
• ทเมธอด testGo()– ลบ fail() ทง– เขยน test case
![Page 353: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/353.jpg)
11/01/61Page 353
assertEquals(expectedResult, actualResult)
public void testGo() {System.out.println("go");
Rank instance = new Rank(1,2,3);
int expResult = 3;int result = instance.go();assertEquals(expResult, result);
}
• Test cases– ((1,2,3),3)– ((1,3,2),2)– ((3,1,2),1)
![Page 354: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/354.jpg)
11/01/61Page 354
ทดสอบทกครงหลงเปลยนแปลง
• เปลยนชอตวแปร a เปน aaaaaaaaaa• ทดสอบใหม
![Page 355: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/355.jpg)
11/01/61Page 355
setUp()public class RankTest extends TestCase {
Rank rank;
protected void setUp() throws Exception {rank = new Rank(0,0,0);
}
public void testGo1() {rank.b = 2;assertEquals(2,rank.go());
}public void testGo2() {
rank.c = 1;assertEquals(3,rank.go());
}...
}
![Page 356: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/356.jpg)
11/01/61Page 356
Test a Method that Returns Nothing
• เมธอดทเปน void ไมคนคา• เรยกเมธอดอนเพอตรวจสอบผลขางเคยงของการ
เรยกเมธอดทไมคนคา
![Page 357: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/357.jpg)
11/01/61Page 357
ทดสอบเมธอด setCharAt() ของคลาส StringBuilder
import junit.framework.*;
public class StringBuilderTest extends TestCase{public void testSetCharAt(){
StringBuilder sb = new StringBuilder("Tsubasa");char c = 'Z';sb.setCharAt(0,c);assertTrue(sb.charAt(0) == c);
}}
![Page 358: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/358.jpg)
11/01/61Page 358
Failure
![Page 359: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/359.jpg)
11/01/61Page 359
Failure
public void testEquals3() {System.out.println("testEquals3");AddOne b = new AddOne(20);assertEquals(21,b);
}
![Page 360: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/360.jpg)
11/01/61Page 360
ผลการทดสอบ
Testsuite: AddOneTestTests run: 4, Failures: 1, Errors: 0, Time elapsed: 0.01 sec
------------- Standard Output ---------------testInctestEquals1testEquals2testEquals3------------- ---------------- ---------------
![Page 361: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/361.jpg)
11/01/61Page 361
ผลการทดสอบ
Testcase: testEquals3(AddOneTest): FAILEDexpected:<21> but was:<20>junit.framework.AssertionFailedError: expected:<21> but was:<20>
at AddOneTest.testEquals3(AddOneTest.java:43)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
![Page 362: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/362.jpg)
11/01/61Page 362
Error
![Page 363: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/363.jpg)
11/01/61Page 363
Error
• หมายถงTestsuite: AddOneTestTests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.01 sec
• เกดขนในกรณทเกด exception แตไมถก catch• ไมไดเปนการบอกวาเราเขยนโปรแกรมผดพลาด• คนละความหมายกบการ throw Error ทวไป
– ปรกต JVM จะ throw Error ในกรณทเกดปญหาในระดบลางซงไมสามารถแกไขได เชน โหลดคลาสไมได
![Page 364: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/364.jpg)
11/01/61Page 364
ทดสอบการ throw Exception
import junit.framework.*;
public class ThrowerTest extends TestCase {public void testThrow() throws Exception {
System.out.println("testThrow");try{
Thrower.throw();fail("exception should be thrown");
} catch(IllegalArgumentException e) {}}
}
![Page 365: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/365.jpg)
11/01/61Page 365
ทดลอง throw Exception ตามทตวทดสอบคาดไว
public class Thrower {public static void throw() {
throw new IllegalArgumentException();}
}
![Page 366: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/366.jpg)
11/01/61Page 366
ผลการทดลอง throw Exceptionตามทตวทดสอบคาดไว
Testsuite: ThrowerTestTests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.01 sec
------------- Standard Output ---------------testThrow------------- ---------------- ---------------
![Page 367: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/367.jpg)
11/01/61Page 367
ทดลอง throw ผดประเภท
public class Thrower {
public static void throw() {throw new NullPointerException();
}}
![Page 368: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/368.jpg)
11/01/61Page 368
ผลการทดลอง throw ผดประเภท
Testsuite: ThrowerTestTests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.01 sec
------------- Standard Output ---------------testThrow------------- ---------------- ---------------Testcase: testThrow(ThrowerTest): Caused an ERRORnulljava.lang.NullPointerException
at Thrower.throw(Thrower.java:4)at ThrowerTest.testThrow(ThrowerTest.java:7)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
![Page 369: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/369.jpg)
11/01/61Page 369
ทดลองไม throw
public class Thrower {public static void throw() {}
}
![Page 370: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/370.jpg)
11/01/61Page 370
ผลการทดลองไม throw
Testsuite: ThrowerTestTests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.01 sec
------------- Standard Output ---------------testThrow------------- ---------------- ---------------Testcase: testThrow(ThrowerTest): FAILEDexception should be thrownjunit.framework.AssertionFailedError: exception should be thrown
at ThrowerTest.testThrow(ThrowerTest.java:8)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
![Page 371: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/371.jpg)
11/01/61Page 371
โจทยคลาส
![Page 372: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/372.jpg)
11/01/61Page 372
1. คลาส Counter
• เมธอด– void up()
• นบขน
– int getNumber()• คนคาทนบได
• ทดสอบดวย JUnit
• แสดงตวอยาง GUI
![Page 373: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/373.jpg)
11/01/61Page 373
2. class TrafficLight
• เมธอด– String getColor()
• คนคาสของไฟจราจรขณะนน
– void next()
• GUI
![Page 374: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/374.jpg)
11/01/61Page 374
3. class Person
• แอตทรบวต– String name– double salary
• คอนสตรกเตอร– Person(String n, double salary)
• เมธอด– void setSalary(double s)– boolean hasHigherSalary(Person other)– void increaseSalary(int percent)
![Page 375: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/375.jpg)
11/01/61Page 375
ตวอยาง GUI
![Page 376: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/376.jpg)
11/01/61Page 376
4. class BankAccount• เมธอด
– void deposit(double amount)– void withdraw(double amount)– void transfer(BankAccount, double
amount)– double getBalance()
• ทดสอบการทางาน
![Page 377: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/377.jpg)
11/01/61Page 377
ฝากถอนดวย BankAccount
![Page 378: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/378.jpg)
11/01/61Page 378
โอนเงนดวย BankAccount
![Page 379: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/379.jpg)
11/01/61Page 379
5. class BankAccount with Exception
• แกไขคลาส BankAccount – void deposit(double amount)
• ให throw new IllegalArgumentException() เมอamount นอยกวาหรอเทากบ 0
– void withdraw(double amount)• ให throw new Exception() เมอ amount นอยกวา
หรอเทากบ 0– void transfer(BankAccount, double
amount)– double getBalance()
![Page 380: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/380.jpg)
11/01/61Page 380
โจทย enum
![Page 381: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/381.jpg)
11/01/61Page 381
Position
• PROFESSOR, ASSOCIATE_PROFESSOR, ASSISTANT_PROFESSOR, LECTURER
• boolean higher(enum Position)
![Page 382: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/382.jpg)
11/01/61Page 382
ทดสอบอนม Position
public class TestPosition {public static void main(String[] args) {
Position p = Position.PROFESSOR;Position q = Position.ASSISTANT_PROFESSOR;Position r = Position.LECTURER;System.out.println(p.isHigher(q));System.out.println(q.isHigher(p));System.out.println(q.isHigher(r));
}}
![Page 383: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/383.jpg)
11/01/61Page 383
โจทย interface
![Page 384: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/384.jpg)
11/01/61Page 384
class Person implements Comparator
• เปรยบเทยบตาแหนงกอน ถาตาแหนงเทากน ให เทยบเงนเดอน
• ตาแหนง– enum Position
![Page 385: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/385.jpg)
11/01/61Page 385
โจทยแพคเกจ
![Page 386: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/386.jpg)
11/01/61Page 386
HelloWorld
• ใช NetBeans สรางคลาส HelloWorld ในแพคเกจhello
• ไปท command prompt และลองรน
![Page 387: Lec07 :: Object-Oriented Programming...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ 䀎ȎᔎȎ 䈎Ў Ď 『 㠎 䠎 ⨎㐎䠎 䌎ᐎᜎ㔎䠎 ∎㤎䠎䌎ᤎ䈎Ў](https://reader031.vdocument.in/reader031/viewer/2022011911/5f9275b37dc4ac6350383175/html5/thumbnails/387.jpg)
11/01/61Page 387
Counter
• เขยนคลาส Counter ในแพคเกจ somchai• เขยนคลาสเฟรมในแพคเกจ somying
– คลาสเฟรมใช Counter