Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
http://www.siam2dev.com [ dr. nattapong songneam]
โดย อ.ดร. นฐพงศ สงเนยมhttp://[email protected]
สาขาวชา สาขาวชาเทคโนโลยสารสนเทศและวทยาการคอมพวเตอร
คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยราชภฏพระนคร
Last Update : 16/08/2562
Lec03_3_Generalization Abstraction
InformationTechnology
Tหากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
สอบระหวางภาค 1/2562
• บททใชสอบ
– บทท 1, 2, 3.1, 3.2, 3.3, 3.4, 4 , 5
• สอบ วนท.... .. ส.ค. 2562
• หองสอบ ...
http://www.siam2dev.com [ dr. nattapong songneam]
Abstractions
• Classification abs.
• Aggregation abs.
• Generalization/Specialization abs.
• Association abs.
OOP
• Reusable ความสามารถในการน ากลบมาใชใหม
• Polymorphism การพองรป หรอ หนงรปหลายพฤตกรรม
– Override
– Overloading
กน() กน()
*** กลไกเหลานเกดจากการท า Generalization
คน แมว
เลยว() เลยว()
รถยนต รถตนตะขาบ
Polymorph
วธเลยวรถยนตใชพวงมาลยวธเลยวรถตนตะขาบเลยวโดย
หยดลอขางใดขางหนง
อ.ดร. นฐพงศ สงเนยม
• 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]
Lec03_3_Generalization Abstraction
• เพอใหผอานเขาใจหลกการของ Generalization Abstraction และการ Inheritance
• เพอใหผอานเขาใจวตถประสงค กลไก และวธการท า inheritance
• เพอใหผอานสามารถแยกความแตกตางและสรางความสมพนธระหวาง Super class และ Sub class ได
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Generalization Abstraction
• Generalization Abstraction คอกระบวนการในการน า Class ทมลกษณะเหมอนหรอคลายกนหรอมคณสมบตอยางใดอยางหนงรวมกน (General) มาจดหมวดหมไวเปน Class เดยวกน ซงกระบวนการยอนกลบของ Generalization Abstraction เรยกวา Specialization คอการตอบค าถามวาใน Class หนง ๆ นนสามารถจ าแนกเปน Class อะไรไดบาง
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
รถยนต รถยนต
Aggregate Generalization
เครองยนต ลอ
ตวถง
รถบรรทก รถกระบะ
Generalization คอ น ำคลำสตำงๆ ทมบำงคลำยกนมำจดรวมเปนคลำสเดยวกน
Aggregation คอ น ำคลำส มำรวมกน ไมจ ำเปนทตองมอะไรทเหมอนกน
computer*** กำรรวมแบบ aggregate คอ ขำงลำงเปนสวนหนง หรอ เปนสวนประกอบ ของคลำสดำนบน
Case Monitor Keyboard Mouse
มควำมหมำยวำ เมำส จอ เคส คบอรด เปนชนสวนหนงของคอมพวเตอร
Generalization คอ น ำคลำสตำงๆ ทมบำงคลำยกนมำจดรวมเปนคลำสเดยวกน
Aggregation คอ น ำคลำส มำรวมกน ไมจ ำเปนทตองมอะไรทเหมอนกน
Computer
*** การแบงประเภทของคอมพวเตอร วา ม 4 ประเภท 1. super 2. mainframe 3. mini 4. micro
Super Computer
MainframeComputer
Mini Computer
Micro Computer
ปากกา ดนสอ
*** ค ำวำเหมอนกนใหด ทง attribute และฟงกชน
เครองเขยน*** ปำกกำ กบ ดนสอ มอะไรทเหมอนกนบำงถำพอจะมอะไรทเหมอนกน กจดใหอยกลมเดยวกนไดโดยไมสนใจ สงทแตกตำงกน
*** ปำกกำ กบ ดนสอ ม ควำมสำมำรถในกำรเขยน และ มส มรำคำ มควำมยำว มขนำดจงจดใหอยในกลมเดยวกนได เรยก กลมใหมน วำ คลำสเครองเขยน
ปากกา
ปากกาสเขยว
ปากกาสน าเงน
ปากกาสแดง
*** คลำสสฟเคชน แอบแทรคชน classification
abstraction
Is kind of
Is aเปนชนดของ/เปน
Is member ofเปนสมำชกของ
ประเภทของ relationship
• Is member of เปนสมาชกของ
• Is part of เปนสวนหนงของ
• Is kind of ประเภทหนงของ
Classification Abs.
• เอาวตถ ทมลกษณะเหมอนกน / คลายกน จดใหอยในกลมเดยวกน ซงกลมคอ คลาส
ปากกา สแดง ปากกา สน าเงน ปากกา ดามทหนง
TYPE
กลมปากกา
Generalization
• เอาคลาส ทมลกษณะเหมอนกน / คลายกน จดใหอยในกลมเดยวกน ซงกลมคอ คลาส
• ตดสวนทแตกตางออก
• พจารณาเฉพาะสวนทเหมอนกน
แมว สนข วว
สตวเลยง
Is kind of
เปนชนดของclass
class
Is member of
Is part ofIs kind of
แมว วว
สตวเลยง
Is kind of
เปนชนดของclass
class
Tom คณทองแดง ววสแดง
Is member ofIs member ofIs member of
สนข
แมว วว
สตวเลยง
Is kind of
เปนชนดของclass
class
Tom คณทองแดง ววสแดง
Is member ofIs member ofIs member of
สนข
General & Special
รถบรรทกคณสมบต : คณสมบตของรถยนต
+ สามารถบรรทกของได
รถยนตคณสมบต : คณสมบตของรถยนต
+ ใชโดยสาร ม 4 ประต
รถสปอรตคณสมบต : คณสมบตของรถเกง+วงไดเรวกวา + เปดประทนได
ยานพาหนะคณสมบต : มลอมเครองยนต
Intensive: ถาเราบอกวารถบรรทก และรถเกง ตางกมลอ และมเครองยนตนนแปลวาสองสงนมลกษณะรวมกนเปนการมองในลกษณะของ Generalization Abstraction
ถาเราเจอสงหนงทมลอ มเครองยนต เราเรยกวา
เปนยานพาหนะ
มลอมเครองยนตเคลอนทได()
Generalization รวมคลาสSpecialization แยกคลาส
เคลอนทได()
Generalization/Specialization
• การเตม/เพม คณสมบตหรอฟงกชนคอ การท า >> special
• ลดทอน คณสมบตหรอฟงกชน คอ การท า >> general
Class A
Class A + attribute or function added
เตมตนตะขาบเขาไปกลายเปนอกสงหนงเรยก รถตนตะขาบ
เตมตนตะขาบเขาไปกลายเปนอกสงหนงเรยก รถตนตะขาบ+ เตมทตกดน / ขดดนเขาไป
เตมตนตะขาบเขาไปกลายเปนอกสงหนงเรยก รถตนตะขาบ+ เตมปนใหญ เขาไป กลาย เปน รถถง
จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction
อาจารยคณสมบต : คณสมบตของบคลากร
+ สอน
จนท.คณสมบต : คณสมบตของบคลากร
+ ปฏบตงาน
บคลากรของมหาวทยาลยคณสมบต : มชอ + มสวสดการ+ ท างานภายในมหาวทยาลย
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction
อาจารยคณสมบต : คณสมบตของบคลากร
+ สอน + งานวจย
จนท.คณสมบต : คณสมบตของบคลากร
+ ปฏบตงาน
บคลากรของมหาวทยาลยคณสมบต : มชอ + มสวสดการ+ ท างานภายในมหาวทยาลย
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
ผบรหารคณสมบต : คณสมบตของบคลากร
+ บรหารงาน
จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction
หองตรวจโรคทวไปคณสมบต : ตรวจโรคทวไป
เฉพาะทาง.คณสมบต : ตรวจโรคเฉพาะทาง
หองตรวจโรคคณสมบต : มแพทย และตรวจโรคได
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
จงอธบายความหมายของภาพทก าหนดใหในเชงของ Generalization Abstraction
ผปวยภายใน รพ.คณสมบต : คณสมบตของผปวย
+ นอนท รพ.
ผปวยภายนอก รพ.คณสมบต : คณสมบตของผปวย
+ กลบบานได
ผปวยคณสมบต : เปนโรค
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Generalization Abstraction
• ขอสงเกต
– ถาเราน าคลาสยอย หลายๆ คลาสแลวมคณสมบตรวมกนได แลวท าใหเกดความคดรวบยอดใหม(concept) ได และจดอยในคลาสเดยวกน เรยกวา Generalization Abstraction
– แตถามคณสมบตรวมกน แตไมเกดความคดรวบยอดใหม กไมจ าเปนจะตองรวมกนเปนคลาสเดยว
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
general
ขวดน า ตนไม
???
เครองบน แมว
???
แนน กอนหน
จากตวอยางทก าหนดใหตอไปน จงพจารณาวาคลาส อะไรสามารถรวมกนได และถารวมกนไดจะไดคลาสอะไร และคลาสใดทรวมกนไมได
1. คน , สตว , พช , → ________________
2. ผหญง , ผชาย → ________________
3. คนเสอแดง , คนเสอเหลอง → _________________
4. แมว , สนข , ไก → _________________
5. โทรศพทมอถอ , คอมพวเตอร , โทรทศน , ตเยน , หมอหงขาว → ______________________________
6. เสอ , กางเกง , ผาขาวมา , หมวก → _________________
7. โตะ , เกาอ , กระดานด า , อาจารย , นกศกษา →
____________________________________
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
อตกำนต : สงมชวตชโลธร : เพศ/คนพรภม : .............
มรกต : สงมชวต สตว สตวเลยง .............
สมชำย : ……….เครองใชไฟฟำ
ณฐวฒ : ……….เครองแตงกำย
นพณฐ : สถำนศกษำ / หองเรยน
คน สตว พช
สงมชวต
ผชาย ผหญง
เพศ- .....- ....
+ .....()
คน- เพศ
+ .....()
เพศ
ผหญง ผชาย
*** ไมถกตอง
สงมชวต
สตว คน พช
-มชวต-กน-หายใจ
หองเรยน
นกเรยนโตะ อาจารย
บคคล
ผชายผหญง
คน
ผชายผหญง
คนไทย
กลมคนเสอเหลองกลมคนเสอแดง
คนไทย ใสเสออยในไทย
• Aggregate >> ประกอบกน
• Specialization >> แบง/แยกยอย ออกเปน
โตะเตยง
เกาอ โตะ
หองเรยน
class
class
class
class
Is aNot is a
เกาอ
เฟอรนเจอร
ต
COMPUTER
เครอง MAC
เครอง PC
ใช OS เปนเกณฑในการแบง
Laptop
DeskTop
+ พกพาได()
+ ใชแบตเตอรร ()
- แบตเตอรร
+ ต งโตะ
- Case
COMPUTER
- ใชพลงงานไฟฟา
- Monitor
ใช portable เปนเกณฑในการแบง
+ ประมวลผลได()
จากรปในสไลดกอนหนา
• จงอธบายในเชงของ Generalization Abstractions
• จงอธบายในเชงของ Specialization Abstractions
• จงอธบายในเชงของ Encapsulation
• จงอธบายในเชงของ Information Hiding
Specialization abstraction
• จากรปกอนหนาน สามารถอธบายในเชงของ specialization abstraction ไดวา “เราสามารถแบงประเภทของคอมพวเตอรตามลกษณะการใชงานได 2 ประเภทคอ 1. Desktop 2. Laptop ”
Intensiveทง Desktop และ LabTop ตางกเปนเครองใชไฟฟา และ
ประมวลผลได แตตางกนตรงท LabTop สามารถพกพาไปได desktop ไมสะดวกทจะพกพา
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
ขอสรป ส าหรบ specialization
1. เราพจารณาดวาคลาสหนงๆ แบงออกเปนคลาสยอยอะไรไดบาง
2. ในการแบงออกเปนคลาสสามารถท าไดหลายประเภท/วธข นอยกบวาเราจะใชเกณฑอะไร เปนตวแบง
3. ถาแบงแลวมลกษณะพเศษขนมา กควรแบง
4. การแบงกคอการเจาะจงลงไป วามลกษณะพเศษอะไรบางจงเรยกวา special
5. การแบงกคอการเอาจดทแตกตางกนของแตละคลาสมาแบง
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Laptop
DeskTop
+ พกพาได()
+ ใชแบตเตอรร ()
- แบตเตอรร
+ ต งโตะ()
- Case
COMPUTER
- ใชพลงงานไฟฟา
- Monitor
ตเยนเปนคอมพวเตอรหรอไม?
ทวเปนคอมพวเตอรหรอไม?
พดลมเปนคอมพวเตอรหรอไม?
จำกรปน
+ ประมวลผลได()
Laptop
DeskTop
+ พกพาได()
+ ใชแบตเตอรร ()
- แบตเตอรร
+ ต งโตะ()
- Case
COMPUTER
- ใชพลงงานไฟฟา
- Monitor
Supper Computer
MainframeMini
Computer
MicroComputer
COMPUTER
วธแบงโดยใชขนาดเปนเกณฑ
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
*** ใชเกณฑ ขนาด และความสามารถในการประมวลผล
จากภาพกอนหนา สามารถอธบายในเชงของ specialization abstraction ไดวา
• อธบายไดวา คอมพวเตอรแบงออกเปน 4 ประเภทคอ SuperComputer , MainFrame , Mini , Micro โดยแบงตามขนาด และความสามารถในประมวลผล
Intensiveทง 4 ประเภท ตางกเปนคอมพวเตอร ทใชไฟฟาและประมวลผลได แตตางกนตรงท ขนาด
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
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”
ทพกอาศย = ทซ งมนษยสามารถเขาไปอยอาศยได
อพารตเมนต = ทพกอาศย + มลกษณะเปนหองเดยว
บานทาวนเฮาส = ทพกอาศย + เปนบานทเรยงตดกน
จากรป เปนการอธบาย “ทพกอาศย จ าแนกเปน อพารตเมนต และบานทาวนเฮาส” จะเหนวา เราใช Specialize เพอสรางอพารตเมนต และทาวนเฮาส
ขน ในขณะเดยวกน เราใช Generalize เพอท าใหอพารตเมนต และทาวนเฮาสม Concept รวมเดยวกน นนคอ ทงอพารตเมนตและทาวนเฮาสตางกใชเพอเปนทอยอาศยของมนษย ซงนคอ Concept ของทอยอาศย
คอนโด
ทพกอาศย = ทซ งมนษยสามารถเขาไปอยอาศยได
อพารตเมนต = ทพกอาศย + มลกษณะเปนหองเดยว
บานทาวนเฮาส = ทพกอาศย + เปนบานทเรยงตดกน
จากรป เปนการอธบาย “ทพกอาศย จ าแนกเปน อพารตเมนต และบานทาวนเฮาส” จะเหนวา เราใช Specialize เพอสรางอพารตเมนต และทาวนเฮาส
ขน ในขณะเดยวกน เราใช Generalize เพอท าใหอพารตเมนต และทาวนเฮาสม Concept รวมเดยวกน นนคอ ทงอพารตเมนตและทาวนเฮาสตางกใชเพอเปนทอยอาศยของมนษย ซงนคอ Concept ของทอยอาศย
สตวปกคณสมบต : มปก
มขา 2 ขา
นกคณสมบต : คณสมบตของสตวปก +
บนได
ไกคณสมบต : คณสมบตสตวปก
+ ขนได
ไกชนคณสมบต : คณสมบตไก
+ ขนได + ชนไกได
เครองบนเปนสตวปกหรอไม ?
นกเพนกวนเปนสตวปกหรอไม ?
นกกระจอกเทศเปนสตวปกหรอไม ?
จำกรปน
นกกระจอกเทศเปน นก หรอไม ?
สตวปกคณสมบต : มปก
มขา 2 ขา
นกคณสมบต : คณสมบตของสตวปก +
บนได
ไกคณสมบต : คณสมบตสตวปก
+ ขนได
ไกชนคณสมบต : คณสมบตไก
+ ขนได + ชนไกได
เครองบนเปนสตวปกหรอไม ?
นกเพนกวนเปนสตวปกหรอไม ?
นกกระจอกเทศเปนสตวปกหรอไม ?ไกไขคณสมบต : คณสมบตไก + ? + ?
ไกพนธเนอคณสมบต : คณสมบตไก + ? + ?
สตวน า- อาศยในน า
ป = อาศยอยในน า + มกามปลา= อาศยอยในน า
+ มครบ
??? ปลานลPractice IIจงเขยนความสมพนธของสตวบก ในเชง Generalization และ Specialization
Problem domain
??? ???
ตวอยาง ของการท า Specialize เพอท าให รถยนตกลายเปนรถสปอรต และการท า Generalize เพอใหรถสปอรตกลายมาเปนรถยนต
จากรปจะพบวา การท า Specialize เพอท าให รถยนตกลายเปนรถสปอรต ท าไดโดยการเพมเตมสวนของเครองยนต Turbo และความสามารถในการเปดประทนไดเขาสรถยนตปกต และในทางกลบกนการท า Generalize เพอใหรถสปอรตกลายเปนรถยนตกท าไดโดยการเอาเครองยนต Turbo และหลงคาเปดประทนไดออกจากรถสปอรตน นเอง
Speci
aliz
e
รถยนต
รถสปอรต = รถยนต + เครองยนต Turbo + เปดประทนได
ตวอยางใน C# : สราง Project ใหม
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
ตวอยางใน C# : Add Class
Has a(require component)
Reserved for child class
สราง คลาสลก sub class / child class / derive class
Inherit from class car
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Hierarchy classes
สตว
สตวบก สตวครงบกครงน า สตวปกสตวน า
สตวเล อยคลาน สตวน าจด สตวทะเล
สตวเล ยงลกดวยนม
คน
ผหญงผชาย
ตวอยางท 5.8
องคเจท ดอตเมตรกซ
Gene
raliz
atio
n
Spec
ializa
tion
Gene
raliz
atio
n
Spec
ializa
tion
อปกรณคอมพวเตอร
โปรเจคเตอร เครองพมพGe
nera
lizat
ion
Spec
ializa
tion
เลเซอรคอมพวเตอร
พกพาคอมพวเตอรต ง
โตะ
คอมพวเตอร
รานคอมพวเตอร
คน
อาจารยนกศกษา
1
2
คน
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
อาจารย
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
เมอเพมรายละเอยดลงไป
สราง Project ใหม
ADD Class
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
ออกแบบหนาจอ เพอรบชอ นามสกล รหส ทอย
txtID txtFullname
txtAddress
btnCancel
btnOK
lbDisplay
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
จะเหนไดวา คลาสอาจารย สามารถเขาถงหรอเรยกใช attribute / function จากคลาสพอแม หรอคลาส person ไดโดยไมตองมา
สรางใหม
ถาเลอกนกศกษา
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
คน
- เลขประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
อาจารย
เมอเพมรายละเอยดลงไป
อาจารยประจ าอาจารยพเศษ
คน
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา อาจารย
เมอเพมรายละเอยดลงไป
อาจารยประจ าอาจารยพเศษ
นศ. ภาคปกตนศ. ภาคพเศษ
คน
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา อาจารย
เมอเพมรายละเอยดลงไป
อาจารยประจ าอาจารยพเศษ
นศ. ภาคปกตนศ. ภาคพเศษ
นศ. ผชายนศ. ผหญง
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
คน
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา
- รหสประจ าตวนกศกษา
- ผลการเรยน
อาจารย
- รหสอาจารย
- สาขาวชา
- คณะ
+ตดเกรดได()
+ ลงทะเบยนเรยนได ()
กลไกทมประโยชนของInheritance ท าใหเกดReusable
แบบฝกหด
Problem Domain 1“โรงพยาบาลแหงหนงมบคลากรอย 4 ประเภทดงน
1. แพทย 2. พยาบาล 3. คนไข 4. เจาหนา”นอกจากน ยงมบรษพยาบาล อกดวย
Problem Domain 2“หากเราจะจ าแนกประเภทของพนกงานในบรษทสามารถแบงออกเปนพนกงานเตมเวลา และพนกงานพารทไทม”
จงสรางแผนภาพเพอแสดง Generalization / Specialization จาก Problem Domain ทก าหนดใหตอไปน
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Generalization Implementation in OOP
• แนวคดตามหลกการเชงวตถ
– Generalization จดการ classes ใหอยในรปของโครงสรางล าดบช น (class hierarchy) ขนกบsimilarities และ differences
– เราเรยกคลาสทอยในระดบทสงกวาของ classes hierarchy วา “superclasses” และทอยในระดบต ากวาวา “subclasses”
– ความสมพนธเปนแบบ “kind-of” relationship
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Inheritance and Polymorphism
• “subclass” รบถายทอดคณสมบต (inherits) อนไดแกattributes, operations และassociations มาจาก“superclass” ของตวเอง
• แตอยางไรกตาม ถา attribute หรอ operation ของ“superclass” ถกก าหนดใหคาใหมใน “subclass” จะเปนการ “overrides” ค านยามทก าหนดไวใน“superclass”
• ซงจะน าไปสแนวคดของ polymorphism
สตว
- ชอ
+ กน()
การทา Override ทาใหเกด Polymorphism
แมว นก
+ กน() + กน()
คน
+ กน()
แมวเปนสตวชนดหนงคน เปนสตวชนดหนงนก เปนสตวชนดหนง
*** ดงนน คน ตองมการปรบวธกน () ใหเหมาะกบ คน โดยใชชอน หรอ ซอมในการกน เรยกวาการ override method
Superclasses and Subclasses
• “Superclass” มค านยาม attributes, operations และassociations รวมกนกบ “subclasses” ของคลาสน นๆ
• “Subclasses” ม attributes, operations และ associations เฉพาะเปนของตวเอง โดยเลอกทจะก าหนดนยามใหมใหกบ attribute, operation หรอ relationship ทรบมาจาก “superclass” หรอไมกได
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
*** subclass รบคณสมบตมาจากพอแม จะมการปรบเปลยนหรอไมกได
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 เสมอ
ในทาง Object Orientation เราใชสญลกษณลกศรซงหวลกศรเปนรปสามเหลยมใสชจาก Subclass ไปยง Superclass เพอแสดงการท า Inheritance ดงรป
บญชเงนฝากธนาคาร
-ธนาคาร-ชอบญช
-อตราดอกเบย#ยอดคงคาง
+ฝาก()+ถอน()
บญชออมทรพย
+ช าระคาสาธารณปโภค
บญชกระแสรายวน
-คาธรรมเนยม
+ช าระเชครายวน
กฎเกณฑของการท า
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 หรอไม
3. Public Attributes/Functions จะถายทอดมาเปน Public Attributes/Functions ของ Subclass เสมอ
บญชเงนฝากธนาคาร
-ธนาคาร-ชอบญช
-อตราดอกเบย#ยอดคงคาง
+ฝาก+ถอน
Superclass Subclass
บญชออมทรพย
-ธนาคาร-ชอบญช
-อตราดอกเบย#ยอดคงคาง
+ฝาก+ถอน+ช าระคาสาธารณปโภค
บญชกระแสรายวน
-ธนาคาร-ชอบญช
-อตราดอกเบย#ยอดคงคาง-คาธรรมเนยม
+ฝาก+ถอน+ช าระคาสาธารณปโภค
A Generalization Hierarchy
Geometric_Figure
#X_Position
#Y_Position
Ellipse
- Major_Axis
- Minor_Axis
Circle
- Radius
Rectangle
- Width
- Height
Superclass
Subclasses
Class Diagrams-inheritance
Class diagrams-inheritanceA simple example of inheritance in Java:
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Class diagrams-inheritance
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)
Class diagrams-inheritance
Class diagrams-inheritance
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
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]
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
คน
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
อาจารย
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
คน
- รหสประจ าตวประชาชน
-ชอ-สกล
-ทอย
+บอกชอ-สกลได()
นกศกษา
- รหสประจ าตวนกศกษา
- ผลการเรยน
อาจารย
- รหสอาจารย
-สาขาวชา
-คณะ
+ตดเกรดได()
+ ลงทะเบยนเรยนได ()
กลไกทมประโยชนจากการท า Inheritance
Single & Multiple Inheritance
• generalizations มกเกดใน class hierarchies ทแตละ “subclass” มเพยง 1 “superclass” เรยกวา “single inheritance”
• แตมบางสถานการณท “subclass” อาจมไดมากกวา 1 “superclass” เรยกวา “multiple inheritance”
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
Multiple Inheritance
Employee
GeneralStaff ProfStaff FullTime PartTime
AcademicSubclass withtwo superclasses
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
*** นกวชำกำร เปนทงสองอยำง คอ ไดรบกำรสบทอดมำจำกสองคลำสคอเปนไดทง พนงงำนเตมเวลำ และพนกงำนช ำนำญกำร
Multiple Inheritance
Vehicle Furniture
Wheelchair
*** วลแชร จดวำเปนทง เฟอรนเจอร และ เปนยำนพนะ
Multiple Inheritance การท า Inheritance ยงมกรณทเราท า Inherit จาก Superclass ทมากกวา 1 ตว เพอใหได Subclass ทมคณสมบตพเศษเพยงตวเดยว หรอมากกวา
เครองเลน CD เพลง
-ยหอ-จ านวนชองเกบ CD
+เลนเพลง()
เครองเลน Video CD
-ยหอ
+เลน Video()
เครองเลน CD
-ยหอ-จ านวนชองเกบ CD
+เลนเพลง()+เลน Video()
จากรปจะเหนวา เครองเลน 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]
• Polymorphism
การท Subclass ทเกดจากการ Inherit จาก Superclass และมการดดแปลง Functions บางอยางไมไดยดตาม Superclass ทงหมด จะเรยก Class นนมคณสมบต Polymorphism
Polymorphism เปนตวการทจะท าให Subclass ทมFunctions เดยวกนกบ Superclass (หรออกนยหนงคอ Subclass ทม Functions เปนชอเดยวกนกบ Functions ในSuperclass) มการท างานทแตกตางกน
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
รถยนต
- ยหอ- รน
+ วงเดนหนา+ วงถอยหลง+ เลยว
รถตนตะขาบ
รถตนตะขาบ
- ยหอ- รน
+ วงเดนหนา+ วงถอยหลง+ เลยว
เลยวโดยวธการใชพวงมาลย
รป ภาพจ าลองแสดง Polymorphism
เกด Polymorphism
เลยวโดยวธการหยดลอ
เครองบน
- มปกเฮลคอปเตอร
- มใบพด+ บน()
+ บน()
อากาศยาน
+ บน()
บนไดดวยปก บนไดดวยใบพด
เกด Polymorphism
คน
- มขามา
- มขา+ วงได()
+ วงได()
สงมชวต
+ วงได()
วงไดดวย สอง ขา วงไดดวยสขา
เกด Polymorphism
คน
- มขา
มา
- มขา
+ วงได()+ วงได()
สงมชวต
+ วงได()
วงไดดวย สอง ขา วงไดดวยสขา
เกด Polymorphism
คนพการ
- ขาเทยม
+ วงได()วงไดดวย ขาเทยม
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 ”);
}
}
Specialization
• Specialization เปนกระบวนการยอนกลบของ generalization แตใหผลเชนเดม แตกตางกนทจดเร มตนเทาน น
• Generalization เปนการคนหาคณลกษณะรวมกน ของ(sub)classes
• Specialization เปนการแยก และคนหาคณลกษณะพเศษของ (super)classes เพอใหได subclasses
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]
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]
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]
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]
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]
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]
การสบทอดINHERITANCE
(in JAVA)
in java
เราจะทราบถงสงทอางองเมอไดท าการสรางวตถแลว แตถาการเขยนสงทอยภายในคลาส ยงไมไดถกสรางเปนวตถ เราจะอางไดอยางไร ค าวา “this” เปนวธทชวยใหการอางองตวมนเองโดยยงไมตองสรางวตถกสามารถท าได
• Using this with a Field
• Using this with a Constructor
This References
in java
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
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
• Inheritance เปนรปแบบของการน ากลบมาใชใหมของซอฟตแวร ซงคลาสใหมจะถกสรางจากการรบสงตางๆจากคลาสทมอย ทงสวน Attribute และสวนของMethod และคลาสใหมยงสามารถเพมเตมความสามารถบางประการตามตองการ
• ดงนนคลาสทถกสรางใหมจะไดรบคณสมบตของคลาสเดมและเพมคณสมบตบางประการ
INHERITANCE
in java
INHERITANCE
in java
สมมตวาม Class A และเราตองการสราง class B ทไดรบคณลกษณะตางๆ จาก Class A สงทเราตองการตอนสราง class B คอการเพม keyword “extends” เขาไปดงแสดงในรป
รปแบบ
Class B extends A {
//definition of class B}
in java
• 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]
ซบคลาส (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]
ใส 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
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
ทดสอบโปรแกรม
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
• เมอมการสราง 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]
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
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
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
ถาเราก าหนด 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
ถาเราก าหนด 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();
}}
A B extends A
printprint
in java
ทดสอบการสบทอดคณสมบตของคลาส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
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
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
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
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
Polymorphism
With java
in java
เปนลกษณะการท างานของ method ชนดหนงทตองอาศยกลไกการท างานของ Inheritance และ Dynamic Binding
method จะสามารถตอบสนองการท างานไดหลายรปแบบขนอยกบ Object ทสงเขามาวาเปนของ class ใด กจะท าตามค าสงทไดเขยนไวใน method ของclass นน
Polymorphism
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
อ.รชดำพร คณำวงษ 152
ตวอยางซเปอรคลาสและซบคลาส
• สมมตวาเรามคลาสเรมตนเปน คลาสชอ Shape บอกลกษณะของรปเรขาคณตของวตถ 2 มต
• มคลาส Square บอกลกษณะของสเหลยม และคลาสTriangle บอกลกษณะของสามเหลยม ทสบทอดลกษณะมาจากคลาส Shape
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
อ.รชดำพร คณำวงษ 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]
อ.รชดำพร คณำวงษ 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;}
}
อ.รชดำพร คณำวงษ 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]
อ.รชดำพร คณำวงษ 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]
ค าถามทายบท
1. จงเขยนแผนภาพแสดง Generalization จาก Problem Domain ตอไปน
“Problem Domain 1 เมอเราพดถงฐานะของบคคล เราจะจ าแนกฐานะออกเปน 2 สวนคอ ทรพยสน และหนสน โดยทรพยสนจ าแนกออกเปน เงนสดและเงนฝากในบญช และเงนในรปแบบอนๆ ซงไดแก หน และหลกทรพย หนส น จ าแนกออกเปน หนสนระยะสน และหนสนระยะยาว”
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
“Problem Domain 2 งานศลปะแบงออกเปน 3 ประเภทคอ งานจตรกรรม งานประตมากรรม และงานสถาปตยกรรม โดยงานจตรกรรมนน จ าแนกเปน ภาพวาด (งานลายเสน งานสน างานสน ามน งานสชอลค และงานสฝ น) และภาพพมพ งานประตมากรรม แบงออกเปน งานปน และงานหลอ สวนงานสถาปตยกรรมนน แบงออกเปน สถาปตยกรรมไทย และสถาปตยกรรมประยกต”
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
2. ดวยหลกการ Generalization Abstract ของลกจาง กบหวหนางาน จะเปลยนเปนเชนไร เมอม Class ตอไปนเพมเขาไป
Class : ลกจางช วคราวAttributes : เงนเดอนFunctions : ปฏบตงาน
ลาพกงาน
Class : บรการระดบสงAttributes : เงนเดอน
ต าแหนงเงนประจ า
ต าแหนงFunctions : ปฏบตงาน
ลาพกงานส งงานวางนโยบาย
หากสนใจ slide นเพอการเรยนการสอนโปรดตดตอ [email protected]
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
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
ค าถาม
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]
Inside View ของ Class D