Object Roles and the Importance of Polymorphism

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

C# เบื้องต้น ก่อนการเขียนเกมด้วย XNA
Introduction to Java Graphic 2D
สรุปคำสั่ง if(เงื่อนไข)
Object-Oriented Programming IUP02 At Exceep camp.
Inheritance.
05_3_Constructor.
Object-Oriented Programming
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
Selected Topics in IT (Java)
Enhanced Entity-Relationship Model
การสืบทอด (Inheritance)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
บทที่ 4 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
Javascripts.
Generalization & Specialization
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Algorithm มหาวิทยาลัยเนชั่น Java Pre-Test 49 (Series 1, 2 )
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
บทที่ 6 เมธอด.
JAVA PROGRAMMING PART IV.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
The ServerSocket Class ใช้ในการจัดทำเครื่องที่เป็นการบริการ ใช้ในการจัดทำเครื่องที่เป็นการบริการ โดยจะมี ช่วงชีวิตดังนี้ โดยจะมี ช่วงชีวิตดังนี้
Method of Class อ.สุพจน์ สิงหัษฐิต
บทที่ 4 Aggregation Abstraction
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)
Object-Oriented Programming
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
การจัดวางคอมโพเนนต์กราฟิก
Visual Basic.NET กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
Powerpoint Templates Page 1 Powerpoint Templates Selection Structure โครงสร้างการทำงานแบบทางเลือก.
Chapter 6 Abstract Class and Interface
บทที่ 3 การสืบทอด (Inheritance)
Java Network Programming – Network Operating Systems and Protocols Choopan Rattanapoka.
Timed Math Quiz. โปรแกรมสุ่มคำนวณเลขแข่งกับ เวลา.
The Unified Modelling Language (UML)
Object Oriented Development with UML
อินเตอร์เฟส (Interface)
Java Development Tools
Inheritance and Method Overriding
พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language)
Object-Oriented Programming Paradigm
Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)
การออกแบบระบบ System Design.
อาจารย์ชนิดา เรืองศิริวัฒนกุล หลักสูตรสาขาวิชาเทคโนโลยีสารสนเทศ
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Class Diagram.
Object-Oriented Programs Design and Construction
Creating And Using Exceptions
The Collections Framework
การบริการพื้นฐานของห้องสมุด
Abstract Class and Interface
Method and Encapsulation
Inheritance and Encapsulation
Inheritance Chapter 07.
Overload Method and Poly Morphism
การเขียนโปรแกรมด้วยภาษาไพทอน การโปรแกรมด้วยไพทอนเพื่อประยุกต์ใช้งาน
Class Inheritance and Interfaces.
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
Class Diagram.
ใบสำเนางานนำเสนอ:

Object Roles and the Importance of Polymorphism อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tkorinp@hotmail.com)

บทบาทของobject และความสำคัญของ Polymorphism ช่วยให้เราสามารถจัดการกับ Class ที่เกี่ยวข้องกันได้ ใช้ polymorphism ในโปรแกรม Java ใช้ overridden methods เพื่อให้เกิดความแตกต่างกัน กำหนดอินเตอร์เฟซที่จะขยาย polymorphism เกินลำดับชั้นในการสืบทอด ขอบเขตในการขยายให้มีรูปแบบที่หลากหลาย

Object Roles and the Importance of Polymorphism Class Types Substitutability Polymorphism Extensibility Interfaces Extensibility Again Distinguishing Subclass Summary

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(…);

Substitutability การออกแบบClass ช่วยให้เราสามารถจัดวางวัตถุของแต่ละ Subclass ทำให้แน่ใจว่าสามารถสร้างวัตถุที่ทดแทน Superclass overriding methods เป็นการปรับแต่งให้ตอบสนองความต้องการ subclass โดยแทนที่ด้วยฟังก์ชันการทำงานที่แตกต่างกับ superclass ประกันว่าสืบทอดคุณสมบัติของวัตถุไปยัง subclass ได้ครบถ้วน subclass ไม่สามารถลบการดำเนินการรับมรดกมาจาก superclass ได้ แต่ subclass สามารถขยายขีดความสามารถของ superclass ได้ “Extends” ช่วยในการสืบทอด

Polymorphism ภาวะหลายรูปแบบ เราสามารถจัดการวัตถุที่สร้างจาก Subclass ได้เหมือนวัตถุที่สร้างจาก Superclass สามารถใช้งานการทำงานของ superclass ได้จาก subclass แต่ละตัวได้โดยไม่ต้องกังวลรายละเอียดของการทำงานของ superclass เป็นความคิดในการใช้ชื่อที่จินตนาการขึ้นร่วมกัน เพื่อให้แต่ละส่วนนำไปใช้กำหนดในแบบของตนเองได้ หากobject “p”เป็น สิ่งพิมพ์มันอาจจะเป็น หนังสือ หรือ นิตยสาร สิ่งพิมพ์มีเมธอด sellCopy() สามารถเรียกได้จากหนังสือและนิตยสาร โดยไม่ต้องกังวลว่า p คืออะไร เป็นวิธีที่ง่ายในการจัดการกับวัตถุที่อยู่ในลำดับชั้นที่ได้รับการสืบทอด

Extensibility การใช้จ่ายจำนวนมหาศาลในแต่ละปี เพื่อสร้างโปรแกรมคอมพิวเตอร์ใหม่ แต่ค่าใช้จ่ายส่วนมากใช้ในการปรับเปลี่ยนโปรแกรมเพื่อตอบสนองความต้องการขององค์กรที่เปลี่ยนแปลง วิศวกรซอฟต์แวร์มีหน้าที่อำนวยความสะดวกและช่วยให้โปรแกรมง่ายต่อการรักษาและปรับปรุง หากต้องการปรับปรุงและพัฒนาเมธอดในการขายของ subclass sellBook (Book pBook) sellMagazine (Magazine pMagazine) sellDiscMag (DiscMag pDiscMag) ต้องใช้ Polymorphism เพื่อปรับปรุงที่ Superclass sellItem (Publication pPub) ช่วยให้ขยายการทำงานของ Subclass หรือใช้เมธอดในการขายของ Superclass เพราะทุก subclass เป็นชนิดที่สืบทอดมาจาก superclass ดังนั้นวัตถุที่สร้างจาก Subclass จึงสามารถส่งผ่านเป็นพารามิเตอร์ของ Superclass ได้

Interfaces การสืบทอดมี 2 รูปแบบ subclass สืบทอดอินเตอร์เฟซของ superclass (public members) นี้จะทำให้มีหลายรูปแบบที่เป็นไปได้ subclass สืบทอดการดำเนินงานของ superclass (เช่นคุณสมบัติและเมธอด) แบบนี้ช่วยให้คัดลอกรายละเอียดจาก superclass Java ใช้คำว่า “Extends” เพื่อให้ใช้งานได้อัตโนมัติ (inheritance) ใช้คำว่า “Implementation” เพื่อกำหนดการทำงานของเมธอด (Interfaces) subclass is a subtype. ‘plug and socket’

Interfaces

Extensibility Again polymorphism ช่วยให้วัตถุสามารถจัดการได้ โดยไม่คำนึงถึงระดับชั้นของคลาส ช่วยให้สามารถขยายระบบ โดยมีการห่อหุ้มตามที่ออกแบบ เราสามารถสร้างคลาสใหม่สำหรับผลิตภัณฑ์ต่างๆ ได้โดยใช้ Interface Saleable() without a single change to its code! การกำหนดรายละเอียดของเมธอดได้ โดยไม่ส่งผลกระทบต่อ Class อื่น การใช้ Interface เพื่อเชื่อมต่อกับส่วนอื่นๆ ได้ตามมาตรฐาน เช่นเดียวกับเครื่องใช้ไฟฟ้า

Distinguishing Subclasses 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"); } }

Summary polymorphism ช่วยให้เราสามารถอ้างถึงวัตถุตาม superclass polymorphism ทำให้มันง่ายต่อการขยายโปรแกรม ด้วยการเพิ่มเติม Class โดยไม่ต้องเปลี่ยน Class อื่น ๆ สามารถจัดการ object โดยเรียกเมธอดที่กำหนดไว้สำหรับ superclass โดยไม่ต้องกังวลกับ subclass Java ทำให้แน่ใจว่าเป็นวิธีการที่เหมาะสมสำหรับ object ที่เกิดขึ้นจาก class ในขณะทำงาน การใช้งานอินเตอร์เฟซร่วมกันของclass ต่างๆ และกำหนดการดำเนินงานทั้งหมดเองได้