Upload
torn
View
31
Download
2
Embed Size (px)
DESCRIPTION
Chapter 2 Abstractions. จุดประสงค์ 1. เพื่อให้นักศึกษาได้เข้าใจความหมายและความสำคัญของ Abstraction ที่มีต่อ OOAD 2. เพื่อให้นักศึกษาทำความเข้าใจเบื้องต้นเกี่ยวกับ Abstraction แบบต่างๆ ได้แก่ Classification, Aggregation, Generalization และ Association. 2.1 Abstractions. - PowerPoint PPT Presentation
Citation preview
ChaptChapterer 2 2
AbstraAbstractionsctions
จุ�ดประสงค์� 1. เพื่��อให้�นั�กศึ�กษาได�เข้�าใจุค์วามห้มายและค์วาม
ส"าค์�ญข้อง Abstraction ที่%�ม%ต่'อ OOAD
2. เพื่��อให้�นั�กศึ�กษาที่"าค์วามเข้�าใจุเบื้�)องต่�นัเก%�ยวก�บื้ Abstraction แบื้บื้ต่'างๆ ได�แก'
Classification, Aggregation, Generalization และ Association
2.1 Abstrac
tionsเราได�ร+�จุ�กก�บื้ Class (เร%ยกอ%กอย'างห้นั��งว'า Abstract Data Type) ซึ่��งห้มายถึ�งกล�'มข้อง
Objects ที่%�ม%ค์วามเห้ม�อนัห้ร�อค์ล�ายค์ล�งก�นัในัแง'ใดแง'ห้นั��ง ห้ร�อในัห้ลายๆ แง' โดยส/�งที่%�ใช้�ในัการก"าห้นัด
ค์วามเห้ม�อนัห้ร�อค์ล�ายค์ล�งด�งกล'าวนั�)นัก1ค์�อ Concept นั��นัเอง เราสามารถึบื้อกได�ว'า Object ในั Class เด%ยวก�นั ล�วนัแล�วแต่'ม% Concept เด%ยวก�นั
โดยข้�)นัอย+'ก�บื้ Domain ที่%�เราก"าห้นัด
กระบื้วนัการในัการให้� Concept ก�บื้ Objects ต่'างๆ ในั Real World เพื่��อสร�าง
Class นั�)นั เราเร%ยกว'า Abstractions ซึ่��งแบื้'งออกได� 4 กระบื้วนัการย'อยๆ ค์�อ1. Classification Abstraction
2. Aggregation Abstraction
3. Generalization Abstraction
4. Association Abstraction
การใช้�งานั Abstraction เพื่��อการว/เค์ราะห้� Problem Domain นั�)นั ไม'ได�ม%ข้�อก"าห้นัดต่ายต่�ว
ว'าในั Problem Domain ห้นั��งๆ จุะต่�องใช้�ที่�ก Abstraction ห้ร�อ จุะใช้� Abstraction ต่าม
ล"าด�บื้ก'อนัห้ร�อห้ล�งอย'างไร แต่'ส'วนัมากแล�ว Classification ม�กจุะเป2นั Abstraction แรก
ที่%�ถึ+กใช้� ห้ล�งจุากนั�)นัจุะข้�)นัอย+'ก�บื้ม�มมองและว/จุารณญาณข้องผู้+�ว/เค์ราะห้�ออกแบื้บื้ระบื้บื้ ที่%�จุะใช้� Abstraction ใดที่%�เห้มาะสมเพื่��อการว/เค์ราะห้� Problem Domain และในัค์วามจุร/งพื่บื้ว'า
Abstraction ห้นั��งๆ นั�)นัม�กจุะถึ+กใช้�มากกว'า 1ค์ร�)งเสมอ เพื่��อการว/เค์ราะห้� Problem Domain
เพื่%ยงห้นั��งเด%ยว
22.Classification Abstraction
Classification Abstraction เป2นักระบื้วนัการที่%�ใช้�เพื่��อแยกประเภที่ (Classify) Object
ต่'างๆ ที่%�อย+'ในั Domain และให้� Concept ก�บื้ Object ต่'างๆ เห้ล'านั�)นั เพื่��อให้�ได� “Class พื่�)นัฐานั ”
(Fundamental Classes) ที่%�ต่�องการต่�วอย'าง พื่/จุารณาส/�งที่%�อย+'ในั Problem
Domain ซึ่��งได�แก' (1) รถึยนัต่�นั��งโต่โยต่�า (2) รถึจุ�กรยานัยนัต่�ซึ่+ซึ่+ก/ และ (3) รถึโดยสาร 6 ล�อ
Volvo (4) เร�อซึ่%ที่รานัส�ค์ว%นัส� (5) ห้�วรถึจุ�กรไอนั")า Dodge และ (6) จุ�กรยานั BMX จุะพื่บื้ว'า
Concept ที่%�เห้ม�อนัก�นัข้อง (1) รถึยนัต่�นั��งโต่โยต่�า (2) รถึจุ�กรยานัยนัต่�ซึ่+ซึ่+ก/ และ (3) รถึโดยสาร 6 ล�อ
Volvo ก1ค์�อ ม%เค์ร��องยนัต่� ม%ล�อจุ"านัวนัห้นั��ง สามารถึว/�งไปบื้นัถึนันัได� และใช้�นั")าม�นัห้ร�อแก7สเป2นัพื่ล�งงานัในัการข้�บื้เค์ล��อนั เพื่ราะฉะนั�)นัเราสามารถึให้� Concept
ก�บื้ (1) (2) และ (3) ว'าเป2นั “Class รถึยนัต่� ด�วย”กระบื้วนัการ Classification ด�งร+ป
Concepts เก%�ยวก�บื้รถึ1.ม%เค์ร��องยนัต่� 2. ม%ล�อจุ"านัวนัห้นั��ง
3.ว/�งไปบื้นัถึนันัได�4.ใช้�แก7สห้ร�อนั")าม�นัเป2นัเช้�)อ
เพื่ล/ง
รถึจุ�กรยานัยนัต่�ซึ่+ซึ่+ก/
รถยนต์�น��งโต์โยต์�า
รถโดยสาร 6ล้�อ Volvo
เร�อซึ่%ที่รานัส�ค์ว%นัส�ไม'ม%
ล�อห้�วรถึจุ�กรไอนั")าว/�งไปบื้นัถึนันัไม'ได�
รถึจุ�กรยานั BMXไม'ต่�องใช้�เช้�)อ
เพื่ล/ง
รถึยนัต่�
ร+ป Classification ข้องรถึยนัต่�
จุากต่�วอย'าง เราใช้� Concept เพื่%ยง 4 ข้�อเที่'านั�)นัเพื่��อสร�าง Class รถึยนัต่� จุาก Objects (1)
(2) และ (3) นั��นัค์�อ 1. ม%เค์ร��องยนัต่� 2. ม%ล�อจุ"านัวนัห้นั��ง 3 . ว/�งไปบื้นัถึนันัได� และ 4. ใช้�แก7สห้ร�อนั")าม�นัเป2นัเช้�)อเพื่ล/ง โดยเราไม'สนัใจุว'า จุะต่�องม%จุ"านัวนัล�อเที่'าก�บื้ 4 ล�อ ห้ร�อจุะต่�องสามารถึบื้รรที่�กข้องได�เราถึ�อว'า Classification เป2นั Abstraction ที่%�ส"าค์�ญที่%�ส�ด เพื่ราะ Class เก/ดข้�)นัด�วย Classification Abstraction ถึ�าห้ากว'า Class พื่�)นัฐานัที่%�เก/ดข้�)นัในัข้�)นัต่อนันั%)เก/ดข้�อผู้/ดพื่ลาด
การสร�าง Class ให้ม'ๆ ด�วยกระบื้วนัการ Aggregation และ Generalization และการสร�างค์วามเป2นัส�มพื่�นัธ์�ระห้ว'าง Class ต่'างๆ ด�วย
Association ย'อมจุะม%ค์วามผู้/ดพื่ลาดด�วยเช้'นัก�นั
23.Aggregation AbstractionAggregation Abstraction ค์�อ
กระบื้วนัการที่%�นั"าเอา Class พื่�)นัฐานั มารวมก�นัห้ร�อประกอบื้ก�นั (Aggregate) เพื่��อให้�เก/ดเป2นั Class ที่%�ให้ญ'ข้�)นั โดย Class พื่�)นัฐานัด�งกล'าวค์�อ Class ที่%�
สร�างข้�)นัในัข้�)นัต่อนั Classification นั��นัเองการที่"า Aggregation ค์�อ การต่อบื้ค์"าถึามว'า ในั Class กล�'มห้นั��งนั�)นั เราสามารถึที่%�จุะนั"าม�นัมารวม
ก�นั (Compose) เพื่��อที่"าให้�เก/ด Class ให้ม' ที่%�ม% Concept ให้ม' ได�ห้ร�อไม'อย'างไร ห้ร�อในัที่างกล�บื้ก�นั
ก1ค์�อ การต่อบื้ค์"าถึามว'า ม% Class ใดบื้�างที่%�สามารถึแบื้'งย'อย (Decompose) ออกเป2นัส'วนัประกอบื้
ต่'างๆ ซึ่��งม% Concept ต่'างไปจุากเด/มได�
ต่�วอย'าง รถึยนัต่�แต่'ละค์�นัประกอบื้ไปด�วย ต่�วถึ�ง ล�อ เค์ร��องยนัต่� ซึ่��งในัส'วนัข้องต่�วถึ�ง จุะประกอบื้ไปด�วย ประต่+ กระจุกห้นั�ารถึ และโค์รงรถึ ซึ่��งจุาก Domain นั%)
สามารถึแสดงค์วามส�มพื่�นัธ์�ในัเช้/ง Aggregation ได�ด�งร+ป
Aggregation
รถยนต์�
ต์�วถ�งรถ
ล้�อ เคร��องยนต์�
Aggregation
ประต์� กระจกหน�ารถ
โครงรถ
ร+ป Aggregation ข้องรถึยนัต่�
จุากต่�วอย'าง จุะเห้1นัว'าม%การใช้� Aggregation เพื่��อการรวมเอา Class ประต่+รถึ
กระจุกห้นั�ารถึ และโค์รงรถึ ซึ่��งแต่'ละ Class ม% Concept ต่'างก�นัโดยส/)นัเช้/ง เพื่��อให้�เป2นั Class
ให้ม'ค์�อ Class ต่�วถึ�งรถึ และม%การใช้� Aggregation อ%กค์ร�)งเพื่��อรวมเอา Class ต่�วถึ�ง
รถึ ล�อ และ เค์ร��องยนัต่� เข้�าไว�ด�วยก�นั เพื่��อเป2นั Class รถึยนัต่�
2.4 Generalization
AbstractionGeneralization Abstraction ค์�อกระบื้วนัการในัการนั"า Class ที่%�ม%ล�กษณะเห้ม�อนัห้ร�อค์ล�ายค์ล�งก�นั ห้ร�อม%ค์�ณสมบื้�ต่/อย'างใดอย'างห้นั��งร'วม
ก�นั (General) มาจุ�ดห้มวดห้ม+'ไว�เป2นั Class เด%ยวก�นั กระบื้วนัการย�อนักล�บื้ข้อง
Generalization Abstraction เร%ยกว'า Specialization ซึ่��ง Specialization ค์�อการต่อบื้ค์"าถึามว'าในั Class ห้นั��งๆ นั�)นัสามารถึจุ"าแนัก
เป2นั Class อะไรได�บื้�าง
ต่�วอย'าง รถึยนัต่�สามารถึแบื้'งออกเป2นั รถึบื้รรที่�ก รถึเก:ง และรถึสปอร�ต่ซึ่��งสามารถึ ว/�งได�เร1วกว'ารถึเก:งปกต่/ สามารถึเข้%ยนัแสดงค์วามส�มพื่�นัธ์�ในัเช้/ง Generalization และ Specialization ข้อง
ต่�วอย'างนั%)ได�ด�งร+ปรถยนต์�ค�ณสมบั�ต์ : ม!ล้�อ ม!เคร��องยนต์�
รถบัรรทุ�กค�ณสมบั�ต์ : ค�ณสมบั�ต์ ของรถยนต์� + สามารถบัรรทุ�กของได�
รถเก%งค�ณสมบั�ต์ : ค�ณสมบั�ต์ ของรถยนต์� + ใช้�โดยสาร ม! 4 ประต์�
รถสปอร�ต์ค�ณสมบั�ต์ : ค�ณสมบั�ต์ ของรถเก%ง +สามารถว �งได�เร(วกว)ารถเก%งปกต์
Genera
liz
ati
on
General
ization
Generalization
Speciali
zation
Specialization
Speci
ali
zati
on
ร+ป Generalization ข้องรถึยนัต่�
จุากต่�วอย'าง จุะเห้1นัว'าเราใช้� Generalization เพื่��อการจุ�ดห้มวดห้ม+' Class รถึ
บื้รรที่�กและ Class รถึเก:ง ไว�เป2นั Class รถึยนัต่� เพื่ราะรถึเก:งและรถึบื้รรที่�กนั�)นัต่'างก1ม%ค์�ณสมบื้�ต่/ข้อง
รถึยนัต่� ค์�อ ม%ล�อ และม%เค์ร��องยนัต่�ด�วยก�นัที่�)งค์+' ด�งนั�)นั Class รถึเก:งและรถึบื้รรที่�ก สามารถึอย+'ในัห้มวดห้ม+'เด%ยวก�นัได� ค์�อ Class รถึยนัต่�เอง ในัที่างกล�บื้ก�นัเราสามารถึจุ"าแนัก รถึยนัต่� ออกเป2นัรถึเก:งและรถึบื้รรที่�ก ด�วยกระบื้วนัการ Specialization เพื่ราะที่�)งรถึเก:ง
และรถึบื้รรที่�กม%ค์�ณสมบื้�ต่/ที่�กอย'างที่%�รถึยนัต่�ที่��วไปม% แต่'รถึเก:งม%ข้�อพื่/เศึษกว'ารถึยนัต่�ที่��วไป ต่รงที่%� ม�นัใช้�ส"าห้ร�บื้
การโดยสาร และม% 4 ล�อ ในัข้ณะที่%�รถึบื้รรที่�กม%ค์�ณสมบื้�ต่/พื่/เศึษกว'ารถึยนัต่�ที่��วไปและต่'างจุากรถึเก:ง
ต่รงที่%�รถึบื้รรที่�กสามารถึบื้รรที่�กข้องได�
ในัข้ณะเด%ยวก�นัย�งใช้� Specialization เพื่��อการจุ"าแนักรถึเก:งออกเป2นัรถึเก:งช้นั/ดพื่/เศึษ เร%ยกว'า “
รถึสปอร�ต่”
25
Association AbstractionAssociation Abstraction ค์�อ
กระบื้วนัการในัการสร�างค์วามส�มพื่�นัธ์�ระห้ว'าง Class ต่'างๆ ในั Problem Domain ที่%�เราสนัใจุ ค์วามส�มพื่�นัธ์�ด�งกล'าว ค์�อค์วามส�มพื่�นัธ์�ที่%�ไม'สามารถึอธ์/บื้ายได�ด�วย Aggregation (ค์วามส�มพื่�นัธ์�ในัเช้/งการรวมก�นั การประกอบื้ก�นั ห้ร�อการแบื้'งแยกส'วนัประกอบื้ ) ห้ร�อ Generalization (ค์วาม
ส�มพื่�นัธ์�ในัเช้/ง การจุ�ดประเภที่จุ�ดห้มวดห้ม+' ห้ร�อการจุ"าแนัก ) แต่' Association เป2นัการอธ์/บื้ายค์วามส�มพื่�นัธ์�ข้อง Class ในัเช้/งก/จุกรรม เช้'นั การใช้�งานั การข้�บื้เค์ล��อนั การบื้ร/โภค์ เป2นัต่�นั ห้ร�อค์วามส�มพื่�นัธ์�ในัเช้/งสถึ/ต่ย� เช้'นั การเป2นัเจุ�าข้อง การให้�ก"าเนั/ด การ
ผู้ล/ต่ เป2นัต่�นั
ต่�วอย'าง ต่ามปกต่/รถึยนัต่�ต่�องใช้�นั")าม�นัเป2นัเช้�)อเพื่ล/งเพื่��อให้�สามารถึว/�งไปได� และรถึยนัต่�เองก1ว/�งอย+'บื้นัถึนันั นัอกจุากนั%) ค์นัข้�บื้รถึก1ค์�อ ผู้+�ข้�บื้ข้%�รถึยนัต่� เราแสดงค์วามส�มพื่�นัธ์�ข้อง Class ต่'างๆ ในั Domain ได�ด�ง
ร+ปค์นั รถึย
นัต่�ถึนันั
รถึยนัต่�
ข้�บื้ ว/�งอย+'บื้นั
ใช้�เป2นัเช้�)อเพื่ล/ง
ร+ป Association Abstraction ข้อง Domain
จุากต่�วอย'างข้�างต่�นัจุะพื่บื้ว'า Class ต่'างๆ ในั Problem Domain ซึ่��งได�แก' ค์นั รถึยนัต่� ถึนันั และนั")าม�นั ม%ค์วามส�มพื่�นัธ์�ต่'อก�นั ซึ่��งค์วามส�มพื่�นัธ์�ที่%�
กล'าวถึ�ง ประกอบื้ด�วย ค์นัก�บื้รถึยนัต่� (ค์นัข้�บื้รถึยนัต่� ) รถึยนัต่�ก�บื้ถึนันั (รถึยนัต่�ว/�งไปบื้นัถึนันั )และรถึยนัต่�ก�บื้นั")าม�นั (รถึยนัต่�ใช้�นั")าม�นั ) ซึ่��งค์วาม
ส�มพื่�นัธ์�เห้ล'านั%)ไม'สามารถึอธ์/บื้ายได�ด�วย Aggregation และ Generalization Abstraction แต่'สามารถึอธ์/บื้ายได�ด�วย
Association Abstraction ด�งต่�วอย'างที่%�ผู้'านัมา
จุากต่�วอย'างข้�างต่�นั จุะใช้�เส�นัที่%�ม%ห้�วล+กศึรเพื่��อแสดงค์วามส�มพื่�นัธ์�ระห้ว'าง Class โดยบื้นัเส�นัจุะ
ม%ช้��อข้องค์วามส�มพื่�นัธ์�ก"าก�บื้อย+' ล+กศึรบื้นัเส�นัใช้�เพื่��ออ"านัวยค์วามสะดวกในัการอ'านัและที่"าค์วามเข้�าใจุก�บื้
ค์วามส�มพื่�นัธ์� เช้'นั จุากร+ปจุะอ'านัว'า ค์นัข้�บื้รถึยนัต่� “ ”ค์�ออ'านัต่ามห้�วล+กศึร
ค์"าถึามที่�ายบื้ที่ 1. Generalization
Abstraction และ Aggregation Abstraction
ม%ค์วามเห้ม�อนัห้ร�อแต่กต่'างก�นัอย'างไร
2. Aggregation Abstraction และ Association Abstraction ม%ค์วามห้มายห้ร�อแต่กต่'างก�นัอย'างไร และสามารถึใช้�แที่นัก�นัได�ห้ร�อไม'
อย'างไร3. จุากประโยค์ต่'อไปนั%) สามารถึอธ์/บื้ายได�ด�วย Abstraction ใดบื้�าง- ค์นัม%อว�ยวะต่'างๆ ค์�อ แข้นั ข้า ล"าต่�ว และศึ%รษะ
- โรงเร%ยนัประกอบื้ด�วยอาค์ารห้ลายๆ อาค์าร แต่'ละ อาค์ารประกอบื้ด�วยห้�องห้ลายๆ
ห้�อง- นัายด"า และนัายแดง เป2นัผู้+�ช้าย นัางสาวข้าว และ
สมศึร% เป2นัผู้+�ห้ญ/ง