lec03 3 generalization abstraction...

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

Upload: others

Post on 09-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

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

Last Update : 28/11/2560

Lec03_3_Generalization Abstraction

InformationTechnology

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

Page 2: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Abstractions

• Classification abs.• Aggregation abs.• Generalization/Specialization abs.• Association abs.

Page 3: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

OOP

• Reusable• Polymorphism• Override• Overloading

กน() กน()

Page 4: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

• 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]

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

Page 5: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Lec03_3_Generalization Abstraction

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

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

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

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

Page 6: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Generalization Abstraction

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

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

Page 7: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Classification Abs.

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

กลมเดยวกน ซงกลมคอ คลาส

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

TYPEกลมปากกา

Page 8: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Generalization

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

ซงกลมคอ คลาส

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

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

แมว สนข วว

สตวเลยง

Is kind of

เปนชนดของclass

class

Is member ofIs part ofIs kind of

Page 9: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

แมว วว

สตวเลยง

Is kind of

เปนชนดของclass

class

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

Is member ofIs member ofIs member of

สนข

Page 10: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

General & Special

Page 11: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

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

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

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

มเครองยนต

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

ถาเราเจอสงหนงทมลอ

มเครองยนต เราเรยกวา

เปนยานพาหนะ

มลอ

มเครองยนต

Page 12: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Generalization/Specialization

• เตม/เพม >> special• ลดทอน >> general

Page 13: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

เตมตนตะขาบเขาไป

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

เตมตนตะขาบเขาไป

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

+ เตมทตกดน / ขดดนเขาไป

เตมตนตะขาบเขาไป

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

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

Page 14: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

+ สอน

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

+ ปฏบตงาน

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

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

Page 15: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

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

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

Page 16: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

+ นอนท รพ.

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

+ กลบบานได

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

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

Page 17: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Generalization Abstraction

• ขอสงเกต

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

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

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

Page 18: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

1. คน , สตว , พช , ________________2. ผหญง , ผชาย ________________3. คนเสอแดง , คนเสอเหลอง _________________4. แมว , สนข , ไก _________________5. โทรศพทมอถอ , คอมพวเตอร , โทรทศน , ตเยน , หมอหงขาว ______________________________

6. เสอ , กางเกง , ผาขาวมา , หมวก _________________7. โตะ , เกาอ , กระดานดา , อาจารย , นกศกษา

____________________________________

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

Page 19: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

เพศ

ผหญง ผชาย

*** ไมถกตอง

Page 20: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

สงมชวต

สตว คน พช

-มชวต

-กน

-หายใจ

Page 21: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

หองเรยน

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

Page 22: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

บคคล

ผชายผหญง

คน

ผชายผหญง

Page 23: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

คนไทย

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

คนไทย ใสเสอ

อยในไทย

Page 24: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

แพทย

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

บคลากรใน รพ.

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

Page 25: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

โตะเตยง

เกาอ

โตะ

หองเรยน

class

class

class

class

Is aNot is a

เกาอ

เฟอรนเจอร

Page 26: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

อาจารย

อาจารยประจา

อาจารยพเศษ

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

Page 27: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

นกศกษา

ภาคปกต

ภาค กศ.พบ.

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

Page 28: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

COMPUTER

MAC

PC

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

Page 29: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Laptop

DeskTop

+ พกพาได()

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

- แบตเตอรร

+ ต งโตะ

- Case

COMPUTER

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

- Monitor

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

Page 30: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

• จงอธบายในเชงของ Generalization Abstractions• จงอธบายในเชงของ Specialization Abstractions• จงอธบายในเชงของ Encapsulation• จงอธบายในเชงของ Information Hiding

Page 31: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Specialization abstraction

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

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

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

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

Page 32: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ขอสรป สาหรบ specialization

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

กบวาเราจะใชเกณฑอะไร เปนตวแบง3. ถาแบงแลวมลกษณะพเศษขนมา กควรแบง4. การแบงกคอการเจาะจงลงไป วามลกษณะพเศษอะไรบางจง

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

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

Page 33: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Laptop

DeskTop

+ พกพาได()

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

- แบตเตอรร

+ ต งโตะ()

- Case

COMPUTER

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

- Monitor

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

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

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

Page 34: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Laptop

DeskTop

+ พกพาได()

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

- แบตเตอรร

+ ต งโตะ()

- Case

COMPUTER

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

- Monitor

Page 35: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Supper Computer Mainframe Mini

ComputerMicro

Computer

COMPUTER

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

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

Page 36: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

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

Page 37: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 38: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

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

คอนโด

Page 39: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

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

Page 40: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

COMPUTER

PC MAC

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

Page 41: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

มขา 2 ขา

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

บนได

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

+ ขนได

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

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

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

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

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

Page 42: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

มขา 2 ขา

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

บนได

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

+ ขนได

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

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

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

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

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

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

Page 43: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

ป ปลา- มครบ

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

Page 44: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

Spec

ializ

eรถยนต

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

Page 45: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

Page 46: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 47: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Has a(require component)

Page 48: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Reserved for child class

Page 49: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Inherit from class car

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

Page 50: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ
Page 51: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

สตว

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

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

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

คน

ผหญงผชาย

Page 52: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ตวอยางท 5.8

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

nera

lizat

ion

Spec

ializ

atio

n

Gene

raliz

atio

n

Spec

ializ

atio

n

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

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

Gene

raliz

atio

n

Spec

ializ

atio

n

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

พกพา

คอมพวเตอรตง

โตะ

คอมพวเตอร

Page 53: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

คน

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

1

2

Page 54: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

-ชอ-สกล

-ทอย

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

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

-ชอ-สกล

-ทอย

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

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

Page 55: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

สราง Project ใหม

Page 56: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ADD Class

Page 57: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 58: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 59: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 60: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 61: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

txtID txtFullname

txtAddress

btnCancel

btnOK

lbDisplay

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

Page 62: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

r1

r2

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

Page 63: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 64: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

สรางใหม

Page 65: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ
Page 66: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

Page 67: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

-ชอ-สกล

-ทอย

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

อาจารย

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

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

Page 68: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

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

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

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

Page 69: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

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

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

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

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

Page 70: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 71: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

- ผลการเรยน

อาจารย- รหสอาจารย

- สาขาวชา

- คณะ

+ตดเกรดได()

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

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

Page 72: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

แบบฝกหด

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

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

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

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

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

Page 73: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Generalization

• แนวคดตามหลกการเชงวตถ– Generalization จดการ classes ใหอยในรปของ

โครงสรางลาดบช น (class hierarchy) ขนกบsimilarities และ differences

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

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

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

Page 74: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Inheritance and Polymorphism

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

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

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

Page 75: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

สตว

- ชอ

+ กน()

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

แมว นก

+ กน() + กน()

คน

+ กน()

Page 76: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Superclasses and Subclasses• “Superclass” มคานยาม attributes, operations และ

associations รวมกนกบ “subclasses” ของคลาสน นๆ

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

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

Page 77: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 78: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

+ฝาก+ถอน

บญชออมทรพย

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

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

-คาธรรมเนยม

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

Page 79: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

กฎเกณฑของการทา 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 80: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

+ฝาก+ถอน

Superclass Subclass

บญชออมทรพย

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

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

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

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

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

Page 81: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ
Page 82: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ
Page 83: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

A Generalization Hierarchy

Geometric_FigureX_PositionY_Position

EllipseMajor_AxisMinor_Axis

CircleRadius

RectangleWidthHeight

Superclass

Subclasses

Page 84: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Class Diagrams-inheritance

Page 85: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Class diagrams-inheritanceA simple example of inheritance in Java:

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

Page 86: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Class diagrams-inheritance

Page 87: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Class diagrams-inheritanceClock

- currentTime : Time

+setTime(Time t)

+getTime() : Time

AlarmClock- alarmOn : Boolean

- alarmTime : Time

+ setAlarm(boolean on_off)

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

+ setAlarmTime(Time t)

Page 88: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Class diagrams-inheritance

Page 89: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Class diagrams-inheritance

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

Page 90: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 91: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 92: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

-ชอ-สกล

-ทอย

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

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

-ชอ-สกล

-ทอย

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

Page 93: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

-ชอ-สกล

-ทอย

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

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

- ผลการเรยน

อาจารย- รหสอาจารย

-สาขาวชา

-คณะ

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

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

Page 94: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Single & Multiple Inheritance

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

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

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

Page 95: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Multiple InheritanceEmployee

GeneralStaff ProfStaff FullTime PartTime

AcademicSubclass withtwo superclasses

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

Page 96: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Multiple Inheritance

Vehicle Furniture

Wheelchair

Page 97: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

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

+เลนเพลง()

เครองเลน Video CD

-ยหอ

+เลน Video()

เครองเลน CD

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

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

Page 98: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

จากรปจะเหนวา เครองเลน 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 99: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

• Polymorphism

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

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

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

Page 100: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

รถยนต

- ยหอ- รน

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

รถตนตะขาบ

รถตนตะขาบ

- ยหอ- รน

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

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

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

เกด Polymorphism

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

Page 101: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

เครองบน

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

- มใบพด+ บน() + บน()

อากาศยาน

+ บน()

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

เกด Polymorphism

Page 102: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

คน

- มขามา

- มขา+ วงได() + วงได()

สงมชวต

+ วงได()

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

เกด Polymorphism

Page 103: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

คน

- มขามา

- มขา+ วงได()

+ วงได()

สงมชวต

+ วงได()

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

เกด Polymorphism

คนพการ

- ขาเทยม

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

Page 104: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 105: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Specialization• Specialization เปนกระบวนการยอนกลบของ

generalization แตใหผลเชนเดม แตกตางกนทจดเร มตนเทาน น

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

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

Page 106: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Generalization and Classification (= is_a?)

1. Shep is a Border Collie.2. A Border Collie is a Dog.3. Dogs are Animals4. A Border Collie is a Breed.5. Dog is a Species

1+2: Shep is a Dog1+2+3: Shep is a animal1+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 107: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Polymorphism in VB.NETPublic 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 Class

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

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

Page 108: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 109: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Polymorphism in VB.NETPrivate 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 = s3

s1.draw()

End Sub

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

Page 110: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 Shapes.draw()Dim s1 As Rectangle = New Rectangles1.draw()

Dim s3 As New Circles1 = s3

s1.draw()

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

Page 111: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 112: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

การสบทอดINHERITANCE

(in JAVA)

in java

Page 113: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

• Using this with a Field• Using this with a Constructor

This References

in java

Page 114: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 115: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 116: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

INHERITANCE

in java

Page 117: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

INHERITANCE

in java

Page 118: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

รปแบบ

Class B extends A {

//definition of class B}

in java

Page 119: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

• 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 120: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ซบคลาส (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 121: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ใส 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 122: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

REFERENCEclass A {int x;}class B extends A {int y;}

a

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

XX

Y

b

in java

Page 123: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ทดสอบโปรแกรม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 124: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

• เมอมการสราง 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 125: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 126: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 127: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 128: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ถาเรากาหนด 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

X X

in java

Page 129: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ถาเรากาหนด 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 130: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

ทดสอบการสบทอดคณสมบตของคลาส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 131: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 132: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 133: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 134: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 135: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

Polymorphism

With java

in java

Page 136: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

Polymorphism

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

Page 137: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

อ.รชดาพร คณาวงษ 137

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

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

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

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

Page 138: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

อ.รชดาพร คณาวงษ 138

inheritance & overridingclass 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 139: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

อ.รชดาพร คณาวงษ 139

inheritance & overridingclass 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 140: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

อ.รชดาพร คณาวงษ 140

Polymorphismclass 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 141: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

อ.รชดาพร คณาวงษ 141

Polymorphismclass 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 142: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ
Page 143: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

คาถามทายบท

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

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

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

Page 144: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

Page 145: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

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

ลาพกงาน

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

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

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

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

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

Page 146: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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 147: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

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

Page 148: Lec03 3 Generalization Abstraction Tsiam2dev.net/E_Learning/OOAD/Lec03_3_Generalization_Abstraction… · Lec03_3_Generalization Abstraction • เพื่อให้ผู้อ่านเข้าใจหลักการของ

คาถาม

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]