164
http://www.siam2dev.com [ dr. nattapong songneam] โดย อ.ดร. นัฐพงศ ส่งเนียม http://www.siam2dev.com [email protected] สาขาวิชา สาขาวิชาเทคโนโลยี สารสนเทศและวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏพระนคร Last Update : 16/08/2562 Lec03_3_Generalization Abstraction Information Technology T หากสนใจ slide นี้เพื่อการเรียนการสอนโปรดติดต่อ [email protected]

Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

http://www.siam2dev.com [ dr. nattapong songneam]

โดย อ.ดร. นฐพงศ สงเนยมhttp://[email protected]

สาขาวชา สาขาวชาเทคโนโลยสารสนเทศและวทยาการคอมพวเตอร

คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยราชภฏพระนคร

Last Update : 16/08/2562

Lec03_3_Generalization Abstraction

InformationTechnology

Tหากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 2: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สอบระหวางภาค 1/2562

• บททใชสอบ

– บทท 1, 2, 3.1, 3.2, 3.3, 3.4, 4 , 5

• สอบ วนท.... .. ส.ค. 2562

• หองสอบ ...

http://www.siam2dev.com [ dr. nattapong songneam]

Page 3: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Abstractions

• Classification abs.

• Aggregation abs.

• Generalization/Specialization abs.

• Association abs.

Page 4: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

OOP

• Reusable ความสามารถในการน ากลบมาใชใหม

• Polymorphism การพองรป หรอ หนงรปหลายพฤตกรรม

– Override

– Overloading

กน() กน()

*** กลไกเหลานเกดจากการท า Generalization

คน แมว

Page 5: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

เลยว() เลยว()

รถยนต รถตนตะขาบ

Polymorph

วธเลยวรถยนตใชพวงมาลยวธเลยวรถตนตะขาบเลยวโดย

หยดลอขางใดขางหนง

Page 6: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อ.ดร. นฐพงศ สงเนยม

• Website : http://www.siam2dev.com

• Website สาขา: http://it.pnru.ac.th

• E-mail1 : [email protected]

• E-mail2 : [email protected]

• E-mail3 : [email protected]

• Facebook : [email protected]://www.siam2dev.com [ dr.

nattapong songneam]

Page 7: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Lec03_3_Generalization Abstraction

• เพอใหผอานเขาใจหลกการของ Generalization Abstraction และการ Inheritance

• เพอใหผอานเขาใจวตถประสงค กลไก และวธการท า inheritance

• เพอใหผอานสามารถแยกความแตกตางและสรางความสมพนธระหวาง Super class และ Sub class ได

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 8: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization Abstraction

• Generalization Abstraction คอกระบวนการในการน า Class ทมลกษณะเหมอนหรอคลายกนหรอมคณสมบตอยางใดอยางหนงรวมกน (General) มาจดหมวดหมไวเปน Class เดยวกน ซงกระบวนการยอนกลบของ Generalization Abstraction เรยกวา Specialization คอการตอบค าถามวาใน Class หนง ๆ นนสามารถจ าแนกเปน Class อะไรไดบาง

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 9: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

รถยนต รถยนต

Aggregate Generalization

เครองยนต ลอ

ตวถง

รถบรรทก รถกระบะ

Page 10: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization คอ น ำคลำสตำงๆ ทมบำงคลำยกนมำจดรวมเปนคลำสเดยวกน

Aggregation คอ น ำคลำส มำรวมกน ไมจ ำเปนทตองมอะไรทเหมอนกน

computer*** กำรรวมแบบ aggregate คอ ขำงลำงเปนสวนหนง หรอ เปนสวนประกอบ ของคลำสดำนบน

Case Monitor Keyboard Mouse

มควำมหมำยวำ เมำส จอ เคส คบอรด เปนชนสวนหนงของคอมพวเตอร

Page 11: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization คอ น ำคลำสตำงๆ ทมบำงคลำยกนมำจดรวมเปนคลำสเดยวกน

Aggregation คอ น ำคลำส มำรวมกน ไมจ ำเปนทตองมอะไรทเหมอนกน

Computer

*** การแบงประเภทของคอมพวเตอร วา ม 4 ประเภท 1. super 2. mainframe 3. mini 4. micro

Super Computer

MainframeComputer

Mini Computer

Micro Computer

Page 12: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ปากกา ดนสอ

*** ค ำวำเหมอนกนใหด ทง attribute และฟงกชน

เครองเขยน*** ปำกกำ กบ ดนสอ มอะไรทเหมอนกนบำงถำพอจะมอะไรทเหมอนกน กจดใหอยกลมเดยวกนไดโดยไมสนใจ สงทแตกตำงกน

*** ปำกกำ กบ ดนสอ ม ควำมสำมำรถในกำรเขยน และ มส มรำคำ มควำมยำว มขนำดจงจดใหอยในกลมเดยวกนได เรยก กลมใหมน วำ คลำสเครองเขยน

ปากกา

ปากกาสเขยว

ปากกาสน าเงน

ปากกาสแดง

*** คลำสสฟเคชน แอบแทรคชน classification

abstraction

Is kind of

Is aเปนชนดของ/เปน

Is member ofเปนสมำชกของ

Page 13: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ประเภทของ relationship

• Is member of เปนสมาชกของ

• Is part of เปนสวนหนงของ

• Is kind of ประเภทหนงของ

Page 14: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Classification Abs.

• เอาวตถ ทมลกษณะเหมอนกน / คลายกน จดใหอยในกลมเดยวกน ซงกลมคอ คลาส

ปากกา สแดง ปากกา สน าเงน ปากกา ดามทหนง

TYPE

กลมปากกา

Page 15: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization

• เอาคลาส ทมลกษณะเหมอนกน / คลายกน จดใหอยในกลมเดยวกน ซงกลมคอ คลาส

• ตดสวนทแตกตางออก

• พจารณาเฉพาะสวนทเหมอนกน

แมว สนข วว

สตวเลยง

Is kind of

เปนชนดของclass

class

Is member of

Is part ofIs kind of

Page 16: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

แมว วว

สตวเลยง

Is kind of

เปนชนดของclass

class

Tom คณทองแดง ววสแดง

Is member ofIs member ofIs member of

สนข

Page 17: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

แมว วว

สตวเลยง

Is kind of

เปนชนดของclass

class

Tom คณทองแดง ววสแดง

Is member ofIs member ofIs member of

สนข

Page 18: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

General & Special

Page 19: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

รถบรรทกคณสมบต : คณสมบตของรถยนต

+ สามารถบรรทกของได

รถยนตคณสมบต : คณสมบตของรถยนต

+ ใชโดยสาร ม 4 ประต

รถสปอรตคณสมบต : คณสมบตของรถเกง+วงไดเรวกวา + เปดประทนได

ยานพาหนะคณสมบต : มลอมเครองยนต

Intensive: ถาเราบอกวารถบรรทก และรถเกง ตางกมลอ และมเครองยนตนนแปลวาสองสงนมลกษณะรวมกนเปนการมองในลกษณะของ Generalization Abstraction

ถาเราเจอสงหนงทมลอ มเครองยนต เราเรยกวา

เปนยานพาหนะ

มลอมเครองยนตเคลอนทได()

Generalization รวมคลาสSpecialization แยกคลาส

เคลอนทได()

Page 20: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization/Specialization

• การเตม/เพม คณสมบตหรอฟงกชนคอ การท า >> special

• ลดทอน คณสมบตหรอฟงกชน คอ การท า >> general

Page 21: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class A

Class A + attribute or function added

Page 22: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

เตมตนตะขาบเขาไปกลายเปนอกสงหนงเรยก รถตนตะขาบ

เตมตนตะขาบเขาไปกลายเปนอกสงหนงเรยก รถตนตะขาบ+ เตมทตกดน / ขดดนเขาไป

เตมตนตะขาบเขาไปกลายเปนอกสงหนงเรยก รถตนตะขาบ+ เตมปนใหญ เขาไป กลาย เปน รถถง

Page 23: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction

อาจารยคณสมบต : คณสมบตของบคลากร

+ สอน

จนท.คณสมบต : คณสมบตของบคลากร

+ ปฏบตงาน

บคลากรของมหาวทยาลยคณสมบต : มชอ + มสวสดการ+ ท างานภายในมหาวทยาลย

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 24: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction

อาจารยคณสมบต : คณสมบตของบคลากร

+ สอน + งานวจย

จนท.คณสมบต : คณสมบตของบคลากร

+ ปฏบตงาน

บคลากรของมหาวทยาลยคณสมบต : มชอ + มสวสดการ+ ท างานภายในมหาวทยาลย

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

ผบรหารคณสมบต : คณสมบตของบคลากร

+ บรหารงาน

Page 25: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction

หองตรวจโรคทวไปคณสมบต : ตรวจโรคทวไป

เฉพาะทาง.คณสมบต : ตรวจโรคเฉพาะทาง

หองตรวจโรคคณสมบต : มแพทย และตรวจโรคได

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 26: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction

ผปวยภายใน รพ.คณสมบต : คณสมบตของผปวย

+ นอนท รพ.

ผปวยภายนอก รพ.คณสมบต : คณสมบตของผปวย

+ กลบบานได

ผปวยคณสมบต : เปนโรค

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 27: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization Abstraction

• ขอสงเกต

– ถาเราน าคลาสยอย หลายๆ คลาสแลวมคณสมบตรวมกนได แลวท าใหเกดความคดรวบยอดใหม(concept) ได และจดอยในคลาสเดยวกน เรยกวา Generalization Abstraction

– แตถามคณสมบตรวมกน แตไมเกดความคดรวบยอดใหม กไมจ าเปนจะตองรวมกนเปนคลาสเดยว

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 28: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

general

ขวดน า ตนไม

Page 29: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

???

เครองบน แมว

Page 30: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

???

แนน กอนหน

Page 31: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จากตวอยางทก าหนดใหตอไปน จงพจารณาวาคลาส อะไรสามารถรวมกนได และถารวมกนไดจะไดคลาสอะไร และคลาสใดทรวมกนไมได

1. คน , สตว , พช , → ________________

2. ผหญง , ผชาย → ________________

3. คนเสอแดง , คนเสอเหลอง → _________________

4. แมว , สนข , ไก → _________________

5. โทรศพทมอถอ , คอมพวเตอร , โทรทศน , ตเยน , หมอหงขาว → ______________________________

6. เสอ , กางเกง , ผาขาวมา , หมวก → _________________

7. โตะ , เกาอ , กระดานด า , อาจารย , นกศกษา →

____________________________________

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

อตกำนต : สงมชวตชโลธร : เพศ/คนพรภม : .............

มรกต : สงมชวต สตว สตวเลยง .............

สมชำย : ……….เครองใชไฟฟำ

ณฐวฒ : ……….เครองแตงกำย

นพณฐ : สถำนศกษำ / หองเรยน

Page 32: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน สตว พช

สงมชวต

Page 33: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ผชาย ผหญง

เพศ- .....- ....

+ .....()

คน- เพศ

+ .....()

Page 34: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

เพศ

ผหญง ผชาย

*** ไมถกตอง

Page 35: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สงมชวต

สตว คน พช

-มชวต-กน-หายใจ

Page 36: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หองเรยน

นกเรยนโตะ อาจารย

Page 37: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

บคคล

ผชายผหญง

คน

ผชายผหญง

Page 38: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คนไทย

กลมคนเสอเหลองกลมคนเสอแดง

คนไทย ใสเสออยในไทย

Page 39: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

แพทย

พยาบาลเจาหนาท

บคลากรใน รพ.

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

เกาอ

Page 40: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

• Aggregate >> ประกอบกน

• Specialization >> แบง/แยกยอย ออกเปน

โตะเตยง

เกาอ โตะ

หองเรยน

class

class

class

class

Is aNot is a

เกาอ

เฟอรนเจอร

Page 41: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อาจารย

อาจารยประจ า

อาจารยพเศษ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 42: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

นกศกษา

นศ. ภาคปกต

นศ. ภาค กศ.พบ.

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 43: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

COMPUTER

เครอง MAC

เครอง PC

ใช OS เปนเกณฑในการแบง

Page 44: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Laptop

DeskTop

+ พกพาได()

+ ใชแบตเตอรร ()

- แบตเตอรร

+ ต งโตะ

- Case

COMPUTER

- ใชพลงงานไฟฟา

- Monitor

ใช portable เปนเกณฑในการแบง

+ ประมวลผลได()

Page 45: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จากรปในสไลดกอนหนา

• จงอธบายในเชงของ Generalization Abstractions

• จงอธบายในเชงของ Specialization Abstractions

• จงอธบายในเชงของ Encapsulation

• จงอธบายในเชงของ Information Hiding

Page 46: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Specialization abstraction

• จากรปกอนหนาน สามารถอธบายในเชงของ specialization abstraction ไดวา “เราสามารถแบงประเภทของคอมพวเตอรตามลกษณะการใชงานได 2 ประเภทคอ 1. Desktop 2. Laptop ”

Intensiveทง Desktop และ LabTop ตางกเปนเครองใชไฟฟา และ

ประมวลผลได แตตางกนตรงท LabTop สามารถพกพาไปได desktop ไมสะดวกทจะพกพา

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 47: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ขอสรป ส าหรบ specialization

1. เราพจารณาดวาคลาสหนงๆ แบงออกเปนคลาสยอยอะไรไดบาง

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

3. ถาแบงแลวมลกษณะพเศษขนมา กควรแบง

4. การแบงกคอการเจาะจงลงไป วามลกษณะพเศษอะไรบางจงเรยกวา special

5. การแบงกคอการเอาจดทแตกตางกนของแตละคลาสมาแบง

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 48: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Laptop

DeskTop

+ พกพาได()

+ ใชแบตเตอรร ()

- แบตเตอรร

+ ต งโตะ()

- Case

COMPUTER

- ใชพลงงานไฟฟา

- Monitor

ตเยนเปนคอมพวเตอรหรอไม?

ทวเปนคอมพวเตอรหรอไม?

พดลมเปนคอมพวเตอรหรอไม?

จำกรปน

+ ประมวลผลได()

Page 49: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Laptop

DeskTop

+ พกพาได()

+ ใชแบตเตอรร ()

- แบตเตอรร

+ ต งโตะ()

- Case

COMPUTER

- ใชพลงงานไฟฟา

- Monitor

Page 50: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Supper Computer

MainframeMini

Computer

MicroComputer

COMPUTER

วธแบงโดยใชขนาดเปนเกณฑ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

*** ใชเกณฑ ขนาด และความสามารถในการประมวลผล

Page 51: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จากภาพกอนหนา สามารถอธบายในเชงของ specialization abstraction ไดวา

• อธบายไดวา คอมพวเตอรแบงออกเปน 4 ประเภทคอ SuperComputer , MainFrame , Mini , Micro โดยแบงตามขนาด และความสามารถในประมวลผล

Intensiveทง 4 ประเภท ตางกเปนคอมพวเตอร ทใชไฟฟาและประมวลผลได แตตางกนตรงท ขนาด

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 52: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization/Specialization

จากรปกอนหนานอธบายในเชงของ Generalization Abstraction ไดวา “super computer mainframe mini computer และ micro computer ตางกคณสมบตรวมกนคอ ใช ไฟฟา และ สามารถค านวณไดเราจงจดรวมกนเปนคลาสเดยวกนนนกคอ คลาส Computer” และไดทางกลบกน (Flip side)อธบายในเชงของ specialization abstraction ไดวา “เราสามารถแบงคอมพวเตอรออกเปนประเภทตางๆ ได 4 ประเภทคอ 1. super computer 2. Mainframe 3. Mini coomputer และ 4. Micro Computer”

Page 53: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ทพกอาศย = ทซ งมนษยสามารถเขาไปอยอาศยได

อพารตเมนต = ทพกอาศย + มลกษณะเปนหองเดยว

บานทาวนเฮาส = ทพกอาศย + เปนบานทเรยงตดกน

จากรป เปนการอธบาย “ทพกอาศย จ าแนกเปน อพารตเมนต และบานทาวนเฮาส” จะเหนวา เราใช Specialize เพอสรางอพารตเมนต และทาวนเฮาส

ขน ในขณะเดยวกน เราใช Generalize เพอท าใหอพารตเมนต และทาวนเฮาสม Concept รวมเดยวกน นนคอ ทงอพารตเมนตและทาวนเฮาสตางกใชเพอเปนทอยอาศยของมนษย ซงนคอ Concept ของทอยอาศย

คอนโด

Page 54: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ทพกอาศย = ทซ งมนษยสามารถเขาไปอยอาศยได

อพารตเมนต = ทพกอาศย + มลกษณะเปนหองเดยว

บานทาวนเฮาส = ทพกอาศย + เปนบานทเรยงตดกน

จากรป เปนการอธบาย “ทพกอาศย จ าแนกเปน อพารตเมนต และบานทาวนเฮาส” จะเหนวา เราใช Specialize เพอสรางอพารตเมนต และทาวนเฮาส

ขน ในขณะเดยวกน เราใช Generalize เพอท าใหอพารตเมนต และทาวนเฮาสม Concept รวมเดยวกน นนคอ ทงอพารตเมนตและทาวนเฮาสตางกใชเพอเปนทอยอาศยของมนษย ซงนคอ Concept ของทอยอาศย

Page 55: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

COMPUTER

PC MAC

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 56: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สตวปกคณสมบต : มปก

มขา 2 ขา

นกคณสมบต : คณสมบตของสตวปก +

บนได

ไกคณสมบต : คณสมบตสตวปก

+ ขนได

ไกชนคณสมบต : คณสมบตไก

+ ขนได + ชนไกได

เครองบนเปนสตวปกหรอไม ?

นกเพนกวนเปนสตวปกหรอไม ?

นกกระจอกเทศเปนสตวปกหรอไม ?

จำกรปน

นกกระจอกเทศเปน นก หรอไม ?

Page 57: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สตวปกคณสมบต : มปก

มขา 2 ขา

นกคณสมบต : คณสมบตของสตวปก +

บนได

ไกคณสมบต : คณสมบตสตวปก

+ ขนได

ไกชนคณสมบต : คณสมบตไก

+ ขนได + ชนไกได

เครองบนเปนสตวปกหรอไม ?

นกเพนกวนเปนสตวปกหรอไม ?

นกกระจอกเทศเปนสตวปกหรอไม ?ไกไขคณสมบต : คณสมบตไก + ? + ?

ไกพนธเนอคณสมบต : คณสมบตไก + ? + ?

Page 58: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สตวน า- อาศยในน า

ป = อาศยอยในน า + มกามปลา= อาศยอยในน า

+ มครบ

??? ปลานลPractice IIจงเขยนความสมพนธของสตวบก ในเชง Generalization และ Specialization

Problem domain

??? ???

Page 59: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ตวอยาง ของการท า Specialize เพอท าให รถยนตกลายเปนรถสปอรต และการท า Generalize เพอใหรถสปอรตกลายมาเปนรถยนต

จากรปจะพบวา การท า Specialize เพอท าให รถยนตกลายเปนรถสปอรต ท าไดโดยการเพมเตมสวนของเครองยนต Turbo และความสามารถในการเปดประทนไดเขาสรถยนตปกต และในทางกลบกนการท า Generalize เพอใหรถสปอรตกลายเปนรถยนตกท าไดโดยการเอาเครองยนต Turbo และหลงคาเปดประทนไดออกจากรถสปอรตน นเอง

Speci

aliz

e

รถยนต

รถสปอรต = รถยนต + เครองยนต Turbo + เปดประทนได

Page 60: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ตวอยางใน C# : สราง Project ใหม

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 61: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ตวอยางใน C# : Add Class

Page 62: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Has a(require component)

Page 63: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Reserved for child class

Page 64: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สราง คลาสลก sub class / child class / derive class

Inherit from class car

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 65: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Hierarchy classes

Page 66: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สตว

สตวบก สตวครงบกครงน า สตวปกสตวน า

สตวเล อยคลาน สตวน าจด สตวทะเล

สตวเล ยงลกดวยนม

คน

ผหญงผชาย

Page 67: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ตวอยางท 5.8

องคเจท ดอตเมตรกซ

Gene

raliz

atio

n

Spec

ializa

tion

Gene

raliz

atio

n

Spec

ializa

tion

อปกรณคอมพวเตอร

โปรเจคเตอร เครองพมพGe

nera

lizat

ion

Spec

ializa

tion

เลเซอรคอมพวเตอร

พกพาคอมพวเตอรต ง

โตะ

คอมพวเตอร

รานคอมพวเตอร

Page 68: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

อาจารยนกศกษา

1

2

Page 69: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

อาจารย

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

เมอเพมรายละเอยดลงไป

Page 70: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สราง Project ใหม

Page 71: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ADD Class

Page 72: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 73: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 74: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 75: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 76: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ออกแบบหนาจอ เพอรบชอ นามสกล รหส ทอย

txtID txtFullname

txtAddress

btnCancel

btnOK

lbDisplay

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 77: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

r1

r2

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 78: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 79: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จะเหนไดวา คลาสอาจารย สามารถเขาถงหรอเรยกใช attribute / function จากคลาสพอแม หรอคลาส person ไดโดยไมตองมา

สรางใหม

Page 80: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ
Page 81: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ถาเลอกนกศกษา

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 82: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- เลขประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

อาจารย

เมอเพมรายละเอยดลงไป

อาจารยประจ าอาจารยพเศษ

Page 83: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา อาจารย

เมอเพมรายละเอยดลงไป

อาจารยประจ าอาจารยพเศษ

นศ. ภาคปกตนศ. ภาคพเศษ

Page 84: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา อาจารย

เมอเพมรายละเอยดลงไป

อาจารยประจ าอาจารยพเศษ

นศ. ภาคปกตนศ. ภาคพเศษ

นศ. ผชายนศ. ผหญง

Page 85: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 86: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา

- รหสประจ าตวนกศกษา

- ผลการเรยน

อาจารย

- รหสอาจารย

- สาขาวชา

- คณะ

+ตดเกรดได()

+ ลงทะเบยนเรยนได ()

กลไกทมประโยชนของInheritance ท าใหเกดReusable

Page 87: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

แบบฝกหด

Problem Domain 1“โรงพยาบาลแหงหนงมบคลากรอย 4 ประเภทดงน

1. แพทย 2. พยาบาล 3. คนไข 4. เจาหนา”นอกจากน ยงมบรษพยาบาล อกดวย

Problem Domain 2“หากเราจะจ าแนกประเภทของพนกงานในบรษทสามารถแบงออกเปนพนกงานเตมเวลา และพนกงานพารทไทม”

จงสรางแผนภาพเพอแสดง Generalization / Specialization จาก Problem Domain ทก าหนดใหตอไปน

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 88: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization Implementation in OOP

• แนวคดตามหลกการเชงวตถ

– Generalization จดการ classes ใหอยในรปของโครงสรางล าดบช น (class hierarchy) ขนกบsimilarities และ differences

– เราเรยกคลาสทอยในระดบทสงกวาของ classes hierarchy วา “superclasses” และทอยในระดบต ากวาวา “subclasses”

– ความสมพนธเปนแบบ “kind-of” relationship

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 89: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Inheritance and Polymorphism

• “subclass” รบถายทอดคณสมบต (inherits) อนไดแกattributes, operations และassociations มาจาก“superclass” ของตวเอง

• แตอยางไรกตาม ถา attribute หรอ operation ของ“superclass” ถกก าหนดใหคาใหมใน “subclass” จะเปนการ “overrides” ค านยามทก าหนดไวใน“superclass”

• ซงจะน าไปสแนวคดของ polymorphism

Page 90: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สตว

- ชอ

+ กน()

การทา Override ทาใหเกด Polymorphism

แมว นก

+ กน() + กน()

คน

+ กน()

แมวเปนสตวชนดหนงคน เปนสตวชนดหนงนก เปนสตวชนดหนง

*** ดงนน คน ตองมการปรบวธกน () ใหเหมาะกบ คน โดยใชชอน หรอ ซอมในการกน เรยกวาการ override method

Page 91: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Superclasses and Subclasses

• “Superclass” มค านยาม attributes, operations และassociations รวมกนกบ “subclasses” ของคลาสน นๆ

• “Subclasses” ม attributes, operations และ associations เฉพาะเปนของตวเอง โดยเลอกทจะก าหนดนยามใหมใหกบ attribute, operation หรอ relationship ทรบมาจาก “superclass” หรอไมกได

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

*** subclass รบคณสมบตมาจากพอแม จะมการปรบเปลยนหรอไมกได

Page 92: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Inheritance – กลไกทเกดจาก Specialization Abstraction

Subclass Superclass และ Inheritance

จากหวขอทผานมา การท า Specialize เกดจาก Class เดม หรอเรยกอกอยางหนงวา Class เร มตน หรอ Superclass หรอ Seed Class(Seed หมายถง เมลดพนธ) และ Class ทเกดจากการท า Specialize น นเรยกวา Subclass ในทาง Object Orientation เราเรยกกระบวนการ Specialization วา Inheritance (มาจาก Inherit หมายถง การถายทอด เชน การถายทอดทางพนธกรรม เปนตน)

*** ขอควรจ า ในการท า Inheritance คอ Subclass ท Inherit มาจาก SuperClass น น จะตองมคณสมบตทกอยางของ Superclass (จะขาดคณสมบตใดๆ ของ Superclass ไมได) ผนวกกบคณสมบตพเศษทเพมเขาไปในแตละ Subclass เสมอ

Page 93: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ในทาง Object Orientation เราใชสญลกษณลกศรซงหวลกศรเปนรปสามเหลยมใสชจาก Subclass ไปยง Superclass เพอแสดงการท า Inheritance ดงรป

บญชเงนฝากธนาคาร

-ธนาคาร-ชอบญช

-อตราดอกเบย#ยอดคงคาง

+ฝาก()+ถอน()

บญชออมทรพย

+ช าระคาสาธารณปโภค

บญชกระแสรายวน

-คาธรรมเนยม

+ช าระเชครายวน

Page 94: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

กฎเกณฑของการท า

Inheritance

การท า Inheritance นนเปนการถายทอดคณสมบตทกอยางจาก Superclass ไมวาจะเปน Attribute หรอ Function แตมขอควรจ าวา Visibility ของ Attributes หรอ Functions นนมความสมพนธกบการท า Inheritance เสมอนนคอ

1. Private Attributes/Functions จะถายทอดมาเปน Private Attributes/Functions ของ Subclass แตสวนท Inherit มาจาก Private Attributes/Functions มายง Subclass จะไมสามารถเขาถงไดโดย Function ทมอยใน Subclass แตไมไดมาจากการ Inherit

2. Protected Attributes/Functions ของ Superclass จะถายทอดมาเปน Protected Attributes/Functions ของ Subclass อนง การเขาถง Attributes และ Functions ของ Subclass ทเกดจากการ Inherit ในกรณนจะท าได โดยผาน Function ใดๆ ของ Subclass นน โดยไมค านงวาจะเปน Function ทไดมาจากการ Inherit หรอไม

Page 95: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

3. Public Attributes/Functions จะถายทอดมาเปน Public Attributes/Functions ของ Subclass เสมอ

บญชเงนฝากธนาคาร

-ธนาคาร-ชอบญช

-อตราดอกเบย#ยอดคงคาง

+ฝาก+ถอน

Superclass Subclass

บญชออมทรพย

-ธนาคาร-ชอบญช

-อตราดอกเบย#ยอดคงคาง

+ฝาก+ถอน+ช าระคาสาธารณปโภค

บญชกระแสรายวน

-ธนาคาร-ชอบญช

-อตราดอกเบย#ยอดคงคาง-คาธรรมเนยม

+ฝาก+ถอน+ช าระคาสาธารณปโภค

Page 96: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ
Page 97: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ
Page 98: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

A Generalization Hierarchy

Geometric_Figure

#X_Position

#Y_Position

Ellipse

- Major_Axis

- Minor_Axis

Circle

- Radius

Rectangle

- Width

- Height

Superclass

Subclasses

Page 99: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class Diagrams-inheritance

Page 100: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class diagrams-inheritanceA simple example of inheritance in Java:

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 101: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class diagrams-inheritance

Page 102: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class diagrams-inheritance

Clock

- currentTime : Time

+setTime(Time t)

+getTime() : Time

AlarmClock

- alarmOn : Boolean

- alarmTime : Time

+ setAlarm(boolean on_off)

กลไกทมประโยชนของInheritance ท าใหเกดReusable

+ setAlarmTime(Time t)

Page 103: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class diagrams-inheritance

Page 104: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Class diagrams-inheritance

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 105: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Inheritance

• Class Diagram สามารถแสดงการสบทอดคลาสได เพอลดความซ าซอนในการอธบายขอมล ดงน

Figure 4: Inheritance is indicated by a solid line with a closed, unfilled arrowhead pointing at the super class

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 106: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 107: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

อาจารย

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

Page 108: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- รหสประจ าตวประชาชน

-ชอ-สกล

-ทอย

+บอกชอ-สกลได()

นกศกษา

- รหสประจ าตวนกศกษา

- ผลการเรยน

อาจารย

- รหสอาจารย

-สาขาวชา

-คณะ

+ตดเกรดได()

+ ลงทะเบยนเรยนได ()

กลไกทมประโยชนจากการท า Inheritance

Page 109: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Single & Multiple Inheritance

• generalizations มกเกดใน class hierarchies ทแตละ “subclass” มเพยง 1 “superclass” เรยกวา “single inheritance”

• แตมบางสถานการณท “subclass” อาจมไดมากกวา 1 “superclass” เรยกวา “multiple inheritance”

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 110: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Multiple Inheritance

Employee

GeneralStaff ProfStaff FullTime PartTime

AcademicSubclass withtwo superclasses

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

*** นกวชำกำร เปนทงสองอยำง คอ ไดรบกำรสบทอดมำจำกสองคลำสคอเปนไดทง พนงงำนเตมเวลำ และพนกงำนช ำนำญกำร

Page 111: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Multiple Inheritance

Vehicle Furniture

Wheelchair

*** วลแชร จดวำเปนทง เฟอรนเจอร และ เปนยำนพนะ

Page 112: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Multiple Inheritance การท า Inheritance ยงมกรณทเราท า Inherit จาก Superclass ทมากกวา 1 ตว เพอใหได Subclass ทมคณสมบตพเศษเพยงตวเดยว หรอมากกวา

เครองเลน CD เพลง

-ยหอ-จ านวนชองเกบ CD

+เลนเพลง()

เครองเลน Video CD

-ยหอ

+เลน Video()

เครองเลน CD

-ยหอ-จ านวนชองเกบ CD

+เลนเพลง()+เลน Video()

Page 113: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

จากรปจะเหนวา เครองเลน CD ไดดงเอา Attributes จ านวนชองเกบ CD และ Functions เลนเพลง จากเครองเลน CD เพลงมาเปน Attributes และ Functions ของตนเอง ในขณะเดยวกนไดดงเอา Functions เลน Video ของเครองเลน Video CD มาเปน Functions หนงของตนเอง ซงทกอยางลวนเปนไปตามกฎของ Inheritance ทงสน แตส งทสนใจกคอ ทงเครองเลน CD เพลง และเครองเลน Video CD ตางกม Attributes ยหอเหมอนกน แลวเครองเลน CD กไมสามารถม Attributes 2 ตวทมช อเหมอนกนได ดงนนทางเลอกกคอ มนตองเลอกทจะเอา Attributes ยหอจาก Class ใด Class หนงเทานน เพอการแกปญหาในการเลอก ในกรณนSubclass ทเกดจาก Multiple Inheritance นน จะเลอกเอา Attributes หรอ Functions ทชอซ ากนจาก Superclass ทไดท า Inherit กอนเสมอ ซงพจารณาจากรป Subclass ทอยทางซาย จะท า Inherit กอน Superclass ทอยทางขวาเสมอ

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 114: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

• Polymorphism

การท Subclass ทเกดจากการ Inherit จาก Superclass และมการดดแปลง Functions บางอยางไมไดยดตาม Superclass ทงหมด จะเรยก Class นนมคณสมบต Polymorphism

Polymorphism เปนตวการทจะท าให Subclass ทมFunctions เดยวกนกบ Superclass (หรออกนยหนงคอ Subclass ทม Functions เปนชอเดยวกนกบ Functions ในSuperclass) มการท างานทแตกตางกน

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 115: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

รถยนต

- ยหอ- รน

+ วงเดนหนา+ วงถอยหลง+ เลยว

รถตนตะขาบ

รถตนตะขาบ

- ยหอ- รน

+ วงเดนหนา+ วงถอยหลง+ เลยว

เลยวโดยวธการใชพวงมาลย

รป ภาพจ าลองแสดง Polymorphism

เกด Polymorphism

เลยวโดยวธการหยดลอ

Page 116: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

เครองบน

- มปกเฮลคอปเตอร

- มใบพด+ บน()

+ บน()

อากาศยาน

+ บน()

บนไดดวยปก บนไดดวยใบพด

เกด Polymorphism

Page 117: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- มขามา

- มขา+ วงได()

+ วงได()

สงมชวต

+ วงได()

วงไดดวย สอง ขา วงไดดวยสขา

เกด Polymorphism

Page 118: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

คน

- มขา

มา

- มขา

+ วงได()+ วงได()

สงมชวต

+ วงได()

วงไดดวย สอง ขา วงไดดวยสขา

เกด Polymorphism

คนพการ

- ขาเทยม

+ วงได()วงไดดวย ขาเทยม

Page 119: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

class human {

private String name;

public void walk() {

System.out.println(“Walk with 2 leg”);

}

}

class ab_human {

private String name;

public override void walk() {

System.out.println(“Walk with artificial 2 leg ”);

}

}

Page 120: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Specialization

• Specialization เปนกระบวนการยอนกลบของ generalization แตใหผลเชนเดม แตกตางกนทจดเร มตนเทาน น

• Generalization เปนการคนหาคณลกษณะรวมกน ของ(sub)classes

• Specialization เปนการแยก และคนหาคณลกษณะพเศษของ (super)classes เพอใหได subclasses

Page 121: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Generalization and Classification (= is_a?)

1. Shep is a Border Collie.

2. A Border Collie is a Dog.

3. Dogs are Animals

4. A Border Collie is a Breed.

5. Dog is a Species

1+2: Shep is a Dog

1+2+3: Shep is a animal

1+4: Shep is a breed?????

2+5: A Border Collie is a Species?????

Generalization is transitive (is kind of)

Classification is not transitive (is instance of)

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 122: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Polymorphism in VB.NET

Public Class ShapePublic Overridable Sub draw()

MsgBox("Draw Shape")End Sub

End ClassPublic Class Rectangle

Inherits ShapePublic Overrides Sub draw()

MsgBox("Draw Rec ")

End SubEnd ClassPublic Class Circle

Inherits RectanglePublic Overrides Sub draw()

MsgBox("Draw Circle ")

End SubEnd Class

-Prefix Overridable before Base Method-Prefix Overrides before derived class

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 123: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Polymorphism in VB.NET

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim s As Shape = New Shapes.draw()Dim s1 As Rectangle = New Rectangles1.draw()

Dim s3 As New Circles3.draw()

End Sub

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 124: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Polymorphism in VB.NET

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim s As Shape = New Shapes.draw()Dim s1 As Rectangle = New Rectangles1.draw()

Dim s3 As New Circles1 = s3s1.draw()

End Sub

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 125: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

No polymorphismPublic Class Shape

Public Overridable Sub draw()MsgBox("Draw Shape")

End Sub

End ClassPublic Class Rectangle

Inherits ShapePublic Overrides Sub draw()

MsgBox("Draw Rec ")

End SubEnd ClassPublic Class Circle

Inherits RectanglePublic Overrides Sub draw()

MsgBox("Draw Circle ")

End SubEnd ClassPublic Class Triangle

Inherits ShapePublic Shadows Sub draw()

MsgBox("Draw Circle ")

End SubEnd Class

Dim s As Shape = New Shape

s.draw()

Dim s1 As Rectangle = New Rectangle

s1.draw()

Dim s3 As New Circle

s1 = s3s1.draw()

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 126: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Calling Base MethodPublic Class Shape

Public Overridable Sub draw()MsgBox("Draw Shape")

End Sub

End ClassPublic Class Rectangle

Inherits ShapePublic Overrides Sub draw()

MsgBox("Draw Rec ")

End SubEnd ClassPublic Class Circle

Inherits RectanglePublic Overrides Sub draw()

MsgBox("Draw Circle ")MyBase.draw()

End SubEnd Class

Mybase

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 127: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

การสบทอดINHERITANCE

(in JAVA)

in java

Page 128: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

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

• Using this with a Field

• Using this with a Constructor

This References

in java

Page 129: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

public class Point {

public int x = 0;

public int y = 0;

//constructor

public Point(int a, int b){

x = a;

y = b;

}

}

Using this with a Field

public class Point {

public int x = 0;

public int y = 0;

//constructor

public Point(int x, int y){

this.x = x;

this.y = y;

}

}

in java

Page 130: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

public class Rectangle {

private int x, y;

private int width, height;

public Rectangle() {

this(0, 0, 0, 0);

}

public Rectangle(int width, int height) {

this(0, 0, width, height);

}

public Rectangle(int x, int y, int width, int height) {

this.x = x;

this.y = y;

this.width = width;

this.height = height;

}

...

}

Using this with a Constructor

in java

Page 131: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

• Inheritance เปนรปแบบของการน ากลบมาใชใหมของซอฟตแวร ซงคลาสใหมจะถกสรางจากการรบสงตางๆจากคลาสทมอย ทงสวน Attribute และสวนของMethod และคลาสใหมยงสามารถเพมเตมความสามารถบางประการตามตองการ

• ดงนนคลาสทถกสรางใหมจะไดรบคณสมบตของคลาสเดมและเพมคณสมบตบางประการ

INHERITANCE

in java

Page 132: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

INHERITANCE

in java

Page 133: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

สมมตวาม Class A และเราตองการสราง class B ทไดรบคณลกษณะตางๆ จาก Class A สงทเราตองการตอนสราง class B คอการเพม keyword “extends” เขาไปดงแสดงในรป

รปแบบ

Class B extends A {

//definition of class B}

in java

Page 134: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

• Class A : parent class/base class/super class

• Class B : child class/extended class/sub class

Super class & Sub Class

class A {void printA() {System.out.println(‘A’);}

}class B extends A {

void printB() {System.out.println(‘B’);}}

in java

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 135: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ซบคลาส (Sub Classes) สบทอดสมาชกทกอยาง(แอตทบวสและเมดธอรด) จากซเปอร Super Class ยกเวน

– The private member of Super Class

– Constructor of Super Class

การสบทอดจาก Super Class

class InheritTest1 {public static void main(String args[]) {

A x = new A(); x.printA();B y = new B(); y.printA(); y.printB();

}}

in java

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 136: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ใส final ไวหนา Class ถาไมตองการให Class นนสบทอดได

KEYWORD “final”

class A { int a = 1;}class B extends A { int b = 2; }final class C extends B { int c = 3; }class Inherit2 {

public static void main(String args[]){C z = new C();System.out.println(z.a+z.b+z.c);

}}

in java

Page 137: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

REFERENCEclass A {int x;}

class B extends A

{int y;}

a

A a = new A();B b = new B();

X

X

Y

b

in java

Page 138: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ทดสอบโปรแกรม

class A { int x = 1;}class B extends A { int y = 2; }class Inherit3 {

public static void main(String args[]) {A a = new A();System.out.println(a.x);B b = new B();System.out.println(b.x + “,” + b.y);b.x--;// b = a;a = b;System.out.println(a.x);

}}

in java

Page 139: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

• เมอมการสราง instance ของคลาสลกขน constructors ของคลาสบรรพบรษทงหมด จะถกท างาน

Constructor Chaining

class A { A() {System.out.println(“A”);} }class B extends A {

B() {System.out.println(“B”);}}class ConstructorChain {

public static void main(String args[]){ new B();}

}

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 140: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Y

XX

• ใช keyword วา “super” แทน class ท inherite เพอใชในการอางถง member ของ super class

• ในการอาง super จะหมายถงตว data member ตวแรกทเจอในสายของบรรพบรษ เชน

Super Reference

X X

Y

X

Z

Y

A B extends A C extends B

this.x

super.xthis.xsuper.x

this.Y

super.Yin java

Page 141: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Super Referenceclass A {

int a;

void print() { System.out.println(a);}

}

class B extends A {

int a;

B(int x, int y){super.a = x; this.a = y;}

void print() {

super.print(); System.out.println(a);}

}

class Super1{

public static void main(String args[]){

B b = new B(1,2);

b.print();

}

}

in java

Page 142: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Super Constructors

class A {

A() { System.out.println("A");}

A(char c) { System.out.println(c); }

}

class B extends A {

B() {

//super('a');

System.out.println("B");

}

}

class SuperConstructor {

public static void main(String args[]){new B();}

}

in java

Page 143: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ถาเราก าหนด data member ในคลาสลกมชอเหมอนกบ data member ในคลาสแม ชอของลกจะบง(shadow)ชอในคลาสแม

Shadowing

class A {int x = 1;}

class B extends A {float x = 2.0f;}

class Shadowing {

public static void main(String args[]) {

B b = new B();

System.out.println(b.x);

}

}

X

A B extends A

XX

in java

Page 144: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ถาเราก าหนด method ในคลาสลกม signature เหมอนกบ method ในคลาสแม พฤตกรรมของลกจะลบลาง(override)พฤตกรรมในคลาสแม

Overriding

class A {void print() {System.out.println("A");}}class B extends A {

void print() {System.out.println("B");}}class Overriding {

public static void main(String args[]) {new B().print();

}}

print

A B extends A

printprint

in java

Page 145: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ทดสอบการสบทอดคณสมบตของคลาสPeople

# name : String# age : int

+ People() : void+ People(String,int) : void+ setName(String) : void+ getName(): String+ setAge(int) : void+ getAge(): int+ doWork(): void+ toString(): String

สญลกษณของ UML(Unified Modeling Language)- private+ public# protected

Student

- gpa : double

+ Student() : void+ Student(String,int,double) : void+ setGPA(double) : void+ getGPA(): double+ doWork(): void+ toString(): String

Teacher

- department : String

+ Teacher() : void+ Teacher(String,int,String) : void+ setDepartment(String) : void+ getDepartment(): String+ doWork(): void+ toString(): String

ประชาชน

นกเรยน อาจารย

in java

Page 146: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

public class People {

protected String name;

protected int age;

public People(){

this(null,0);

}

public People(String n,int a){

name = n;

age = a;

}

public void setName(String n){

name = n;

}

public String getName(){

return name;

}

Class People

public void setAge(int a){age =a;

}public int getAge(){

return age;}public void doWork(){}public String toString(){

return "Name : " + name + " Age : " +age;}}

ตอ

in java

Page 147: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

public class Student extends People {

private double gpa;

public Student(){

this(null,0,0);

}

public Student(String n,int a,double g){

super(n,a);

gpa = g;

}

public void setGPA(double g){ gpa = g; }

public double getGGA(){ return gpa;}

public void doWork(){

System.out.println("Study in school");

}

public String toString(){

return super.toString()+ " GPA : "+ gpa;

}

}

class Student

in java

Page 148: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

public class Teacher extends People{

private String department;

public Teacher(){

this(null,0,null);

}

public Teacher(String n,int a,String dep){

super(n,a);

department = dep;

}

public void setDepartment(String dep){department = dep;}

public String getDepartment(){return department; }

public void doWork(){

System.out.println("Teach in school");

}

public String toString(){

return super.toString()+ " Department : "+ department;

}

}

class Teacher

in java

Page 149: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

public class Demo {

public static void main(String [] args){

Student s1 = new Student("Winai",15,3.5);

Teacher t1 = new Teacher("Pranee",30,"Science");

System.out.println(s1);

System.out.println(t1);

s1.doWork();

t1.doWork();

}

}

class Demo ทดสอบกำรท ำงำน

in java

Page 150: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Polymorphism

With java

in java

Page 151: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

เปนลกษณะการท างานของ method ชนดหนงทตองอาศยกลไกการท างานของ Inheritance และ Dynamic Binding

method จะสามารถตอบสนองการท างานไดหลายรปแบบขนอยกบ Object ทสงเขามาวาเปนของ class ใด กจะท าตามค าสงทไดเขยนไวใน method ของclass นน

Polymorphism

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 152: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อ.รชดำพร คณำวงษ 152

ตวอยางซเปอรคลาสและซบคลาส

• สมมตวาเรามคลาสเรมตนเปน คลาสชอ Shape บอกลกษณะของรปเรขาคณตของวตถ 2 มต

• มคลาส Square บอกลกษณะของสเหลยม และคลาสTriangle บอกลกษณะของสามเหลยม ทสบทอดลกษณะมาจากคลาส Shape

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 153: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อ.รชดำพร คณำวงษ 153

inheritance & overriding

class Figure {

double width, height;

String name;

Figure(double w, double h, String n) {

width = w; height = h; name = n;

}

public String getName() { return name;}

public double getArea() { return 0.0;}

public void setWidth(double w) { width = w; }

public void setHeight(double h) { height = h;}

}

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 154: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อ.รชดำพร คณำวงษ 154

inheritance & overriding

class Rectangle extends Figure {

Rectangle(double w, double h) {

super(w,h,”rectangle”);

}

double getArea() { return width*height;}

}

class Triangle extends Figure {

Triangle(double w, double h) {

super(w,h,”triangle”);

}

double getArea() { return 0.5*widht*height;}

}

Page 155: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อ.รชดำพร คณำวงษ 155

Polymorphism

class PolyEx {static void compute(Figure x) {

System.out.println(x.getName()+” is”);System.out.println(x.getArea());

}public static void main(String args[]){

compute(new Figure(1, 1, “undefined”);compute(new Triangle(1, 1));compute(new Rectangle(1, 1));

}}

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 156: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

อ.รชดำพร คณำวงษ 156

Polymorphism

class A {

void print() { System.out.println(“Im A”); }

}

class B1 extends A {

void print() { System.out.println(“Im B1”);}

}

class B2 extends A {

void print() { System.out.println(“Im B2”);}

}

class Other {

void call(A a) { a.print(); }

public static void main(String args[]){

call(new A()); call(new B1()); call(new B2());

}

}

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 157: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ
Page 158: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ค าถามทายบท

1. จงเขยนแผนภาพแสดง Generalization จาก Problem Domain ตอไปน

“Problem Domain 1 เมอเราพดถงฐานะของบคคล เราจะจ าแนกฐานะออกเปน 2 สวนคอ ทรพยสน และหนสน โดยทรพยสนจ าแนกออกเปน เงนสดและเงนฝากในบญช และเงนในรปแบบอนๆ ซงไดแก หน และหลกทรพย หนส น จ าแนกออกเปน หนสนระยะสน และหนสนระยะยาว”

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 159: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

“Problem Domain 2 งานศลปะแบงออกเปน 3 ประเภทคอ งานจตรกรรม งานประตมากรรม และงานสถาปตยกรรม โดยงานจตรกรรมนน จ าแนกเปน ภาพวาด (งานลายเสน งานสน างานสน ามน งานสชอลค และงานสฝ น) และภาพพมพ งานประตมากรรม แบงออกเปน งานปน และงานหลอ สวนงานสถาปตยกรรมนน แบงออกเปน สถาปตยกรรมไทย และสถาปตยกรรมประยกต”

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 160: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

2. ดวยหลกการ Generalization Abstract ของลกจาง กบหวหนางาน จะเปลยนเปนเชนไร เมอม Class ตอไปนเพมเขาไป

Class : ลกจางช วคราวAttributes : เงนเดอนFunctions : ปฏบตงาน

ลาพกงาน

Class : บรการระดบสงAttributes : เงนเดอน

ต าแหนงเงนประจ า

ต าแหนงFunctions : ปฏบตงาน

ลาพกงานส งงานวางนโยบาย

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 161: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

3. จากแผนภาพตอไปน จงตอบค าถามตอไปน

Class A

- Attr1+ Attr2

+ Func1

+ Func2+ Func3

Class B

- Attr3# Attr4

+ Func4

+ Func5+ Func6

Class C

- Attr5- Attr6

+ Func7

+ Func8+ Func9

Class D

- Attr7

- Func10

Class E

- Attr8

+ Func11

Class F

- Attr9

- Private+ Public# protected

Class E

- Attr8

+ Func11

- Func10

Class E

-Attr8

-+ Atr2

-#Attr4

+ Func11

+ Func9- 10

Page 162: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

3. จากแผนภาพตอไปน จงตอบค าถามตอไปน

Class A

+ Attr1+ Attr2

- Func1

# Func2+ Func3

Class B

- Attr3# Attr4

- Func4

- Func5+ Func6

Class C

# Attr5+ Attr6

+ Func7

- Func8# Func9

Class D

# Attr7

+ Func8

Class E

- Attr8

+ Func10

Class F

- Attr9

Class D

+ Attr1

+ Attr2

+ Attr6

# Attr4

# Attr5

# Attr7

+ Func3

+ Func6

+ Func7

+ Func8

+ Func10

Page 163: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

ค าถาม

1. Inside View ของ Class D, Class E, และ Class F เปนอยางไร2. ใน Class D ม Attr1 หรอไม ถาม Attr1 ไดมาจากการ Inherit จาก Class ใด3. ใน Class D ม Attr2 หรอไม ถาม Attr2 ไดมาจากการ Inherit จาก Class ใด4. ใน Class D ม Attr3 หรอไม ถาม Attr3 ไดมาจากการ Inherit จาก Class ใด5. ใน Class D ม Func1 หรอไม ถาม Func1 ไดมาจากการ Inherit จาก Class ใด6. ใน Class D ม Func4 หรอไม ถาม Func4 ไดมาจากการ Inherit จาก Class ใด7. ใน Class D ม Attributes ตวใดบางท Func8 สามารถเขาถงได 8. ใน Class E ม Attributes ตวใดบางท Func9 สามารถเขาถงได 9. ใน Class F ม Func8 หรอไม ถาม ม Attributes ตวใดบางท Func8 สามารถเขาถงได 10. ใน Class F ม Func4 หรอไม ถาม ม Attributes ตวใดบางท Func4 สามารถเขาถงได

หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]

Page 164: Last Update : 16/08/2562siam2dev.net/.../Lec03_3_Generalization...2562_PDF.pdf · Specialization คือการตอบค าถามว่าใน Class หนึ่ง ๆ

Inside View ของ Class D