object roles the importance of polymorphism

12
Object Roles and the Importance of Polymorphism อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี ([email protected])

Upload: cc-nakhon-pathom-rajabhat-university

Post on 21-Mar-2017

30 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Object Roles the Importance of Polymorphism

Object Roles and the Importance ofPolymorphism

อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี

([email protected])

Page 2: Object Roles the Importance of Polymorphism

บทบาทของobject และความส าคัญของ Polymorphism

• แนวคิดของ polymorphism ที่มีต่อการออกแบบซอฟต์แวรเ์ชิงวัตถุ

– ช่วยให้เราสามารถจัดการกับ Class ที่เกี่ยวข้องกันได้

– ใช้ polymorphism ในโปรแกรม Java

– ใช้ overridden methods เพื่อให้เกิดความแตกต่างกัน

– ก าหนดอินเตอรเ์ฟซที่จะขยาย polymorphism เกินล าดับชั้นในการสืบทอด

– ขอบเขตในการขยายให้มีรูปแบบที่หลากหลาย

Page 3: Object Roles the Importance of Polymorphism

Object Roles and the Importance ofPolymorphism

1) Class Types2) Substitutability3) Polymorphism4) Extensibility5) Interfaces6) Extensibility Again7) Distinguishing Subclass8) Summary

Page 4: Object Roles the Importance of Polymorphism

Class Types

• การจัดหมวดหมู่ตามล าดับชั้นของสิ่งที่สนใจ• การระบุชนิดของสิ่งที่แตกต่างกันในแต่ละระดับ

– ระดับที่สูงกว่า=พื้นฐาน– ระดับที่ต่ ากว่า=พิเศษ

• ในแต่ละล าดับชั้นมีความสัมพันธ์กันคือ “เป็น” เช่น– คน เป็นสัตว์เลี้ยงลูกดว้ยนม

• ในการจัดกลุ่มของคลาส เพื่อสร้าง “type” ใหม่ ของแต่ละระดับของClass– เป็นการรวมกนัระหว่าง ตัวแปร และ พารามิเตอร์ เพื่อระบุสิ่งที่สนใจ

• subclass เป็นส่วนย่อยของ superclass และสามารถใช้ทดแทนด้วย 'supertype' ต่อเนื่องไปจนถึงการใช้แทนวัตถุในล าดับล่างได้

Publication p = new Book(…);Publication p = new DiscMag(…);Magazine m = new DiscMag(…);DiscMag dm = new Magazine(…);Publication p = new Publication(…);

Page 5: Object Roles the Importance of Polymorphism

Substitutability

• การออกแบบClass ช่วยให้เราสามารถจดัวางวตัถุของแต่ละ Subclass

• ท าให้แน่ใจว่าสามารถสรา้งวัตถุที่ทดแทน Superclass

• overriding methods เป็นการปรับแต่งให้ตอบสนองความต้องการsubclass โดยแทนที่ด้วยฟังก์ชนัการท างานที่แตกต่างกับ superclass

• ประกันว่าสืบทอดคุณสมบัติของวัตถุไปยัง subclass ได้ครบถ้วน

• subclass ไม่สามารถลบการด าเนินการรับมรดกมาจาก superclass ได้

• แต่ subclass สามารถขยายขีดความสามารถของ superclass ได้

• “Extends” ช่วยในการสืบทอด

Page 6: Object Roles the Importance of Polymorphism

Polymorphism

• ภาวะหลายรูปแบบ• เราสามารถจัดการวัตถุที่สร้างจาก Subclass ได้เหมือนวัตถุที่สร้างจาก

Superclass• สามารถใช้งานการท างานของ superclass ได้จาก subclass แต่ละตัวได้โดย

ไม่ต้องกังวลรายละเอียดของการท างานของ superclass• เป็นความคิดในการใชช้ื่อที่จินตนาการขึ้นร่วมกัน เพื่อให้แต่ละส่วนน าไปใช้

ก าหนดในแบบของตนเองได้ • หากobject “p”เป็น สิ่งพิมพ์มันอาจจะเป็น หนังสือ หรือ นิตยสาร • สิ่งพิมพ์มีเมธอด sellCopy() สามารถเรียกได้จากหนังสือและนิตยสาร โดยไม่

ต้องกังวลว่า p คืออะไร• เป็นวิธีที่ง่ายในการจัดการกับวัตถุที่อยู่ในล าดับชั้นที่ได้รับการสืบทอด

Page 7: Object Roles the Importance of Polymorphism

Extensibility

• การใช้จ่ายจ านวนมหาศาลในแต่ละปี เพื่อสร้างโปรแกรมคอมพิวเตอร์ใหม่ • แต่ค่าใช้จ่ายส่วนมากใช้ในการปรับเปลี่ยนโปรแกรมเพื่อตอบสนองความต้องการขององค์กรที่

เปลี่ยนแปลง• วิศวกรซอฟต์แวร์มีหน้าที่อ านวยความสะดวกและช่วยให้โปรแกรมง่ายต่อการรักษาและปรับปรุง• หากต้องการปรับปรุงและพัฒนาเมธอดในการขายของ subclass

– sellBook (Book pBook)– sellMagazine (Magazine pMagazine)– sellDiscMag (DiscMag pDiscMag)

• ต้องใช้ Polymorphism เพื่อปรับปรุงที่ Superclass– sellItem (Publication pPub)

• ช่วยให้ขยายการท างานของ Subclass หรือใช้เมธอดในการขายของ Superclass• เพราะทุก subclass เป็นชนิดที่สืบทอดมาจาก superclass• ดังนั้นวัตถุที่สร้างจาก Subclass จึงสามารถส่งผ่านเป็นพารามิเตอร์ของ Superclass ได้

Page 8: Object Roles the Importance of Polymorphism

Interfaces

• การสืบทอดมี 2 รูปแบบ• subclass สืบทอดอินเตอรเ์ฟซของ superclass (public members) นี้จะ

ท าให้มหีลายรูปแบบที่เป็นไปได้• subclass สืบทอดการด าเนินงานของ superclass (เช่นคุณสมบัติและเมธอด)

แบบนี้ช่วยให้คัดลอกรายละเอียดจาก superclass• Java

– ใช้ค าว่า “Extends” เพื่อให้ใช้งานได้อัตโนมัติ (inheritance)– ใช้ค าว่า “Implementation” เพื่อก าหนดการท างานของเมธอด (Interfaces)

• subclass is a subtype.• ‘plug and socket’

Page 9: Object Roles the Importance of Polymorphism

Interfaces

Page 10: Object Roles the Importance of Polymorphism

Extensibility Again

• polymorphism ช่วยให้วัตถสุามารถจดัการได้ โดยไม่ค านึงถึงระดับชั้นของคลาส

• ช่วยให้สามารถขยายระบบ โดยมีการห่อหุ้มตามที่ออกแบบ• เราสามารถสร้างคลาสใหม่ส าหรับผลิตภัณฑ์ต่างๆ ได้โดยใช้ Interface

Saleable()• without a single change to its code!• การก าหนดรายละเอียดของเมธอดได้ โดยไม่ส่งผลกระทบต่อ Class

อื่น• การใช้ Interface เพื่อเชื่อมต่อกับส่วนอื่นๆ ได้ตามมาตรฐาน

เช่นเดียวกับเครื่องใช้ไฟฟ้า

Page 11: Object Roles the Importance of Polymorphism

Distinguishing Subclasses

• การตรวจสอบวัตถุที่สร้างขึ้นจาก Class– object instanceof class

• ผลจะเป็นจริง ถ้าวัตถุเป็นของคลาสที่ระบุ (หรือ subclass)

• นอกจากนี้ยังสามารถใช้กับอินเตอร์เฟซ

• การตรวจสอบว่าอินเตอร์เฟซนั้นเป็นของ Subclass ใดpublic void saleType (SaleableItem pSelb){if (pSelb instanceof Publication){ System.out.println("This is a Publication"); }else if (pSelb instanceof Ticket){ System.out.println("This is a Ticket"); }else{ System.out.println("This is a an unknown sale type"); }}

Page 12: Object Roles the Importance of Polymorphism

Summary

• polymorphism ช่วยให้เราสามารถอ้างถึงวัตถุตาม superclass• polymorphism ท าให้มันง่ายต่อการขยายโปรแกรม ด้วยการ

เพิ่มเติม Class โดยไม่ต้องเปลี่ยน Class อื่น ๆ• สามารถจัดการ object โดยเรียกเมธอดที่ก าหนดไว้ส าหรับ

superclass โดยไม่ต้องกังวลกับ subclass• Java ท าให้แน่ใจว่าเป็นวิธีการที่เหมาะสมส าหรับ object ที่

เกิดขึ้นจาก class ในขณะท างาน• การใช้งานอินเตอรเ์ฟซร่วมกันของclass ต่างๆ และก าหนดการ

ด าเนินงานทั้งหมดเองได้