บทที่ 3 การสืบทอด (Inheritance)

Slides:



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

Class Diagram.
Structure Programming
Inheritance.
Week 6 ประกาศค่าตัวแปร.
05_3_Constructor.
ฟังก์ชั่น function.
Object-Oriented Programming
Object Oriented Programing
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
SCC : Suthida Chaichomchuen
Selected Topics in IT (Java)
การสืบทอด (Inheritance)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
OOP (Object-Oriented Programming)
Generalization & Specialization
Lecture 9 Class (คลาส) To do: Hand back assignments
Inheritance การสืบทอดคลาส
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
บทที่ 6 เมธอด.
ตัวแปรกับชนิดของข้อมูล
JAVA PROGRAMMING PART IV.
หลักการวิเคราะห์และออกแบบระบบฐานข้อมูล
บทที่ 4 การใช้ตัวดำเนินการ
โปรแกรมภาษาจาวาเบื้องต้น Basic Java Programming 3(2-2-5)
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
ตัวแปรกับชนิดของข้อมูล
Method of Class อ.สุพจน์ สิงหัษฐิต
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)
Lec03 :: หลักการเชิงออปเจ็ค (Object Oriented Concept)
Lec05 :: การสืบทอด (inheritance)
Object-Oriented Programming
บทที่ 3 Class and Object (2).
Java Programming Java Structure and Datatype,Variable
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
Object Oriented Programming : OOP
Java Network Programming 1
การสืบทอด (inheritance)
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Class. ทบทวน Object ประกอบด้วย ชื่อ Attributes -> คุณลักษณะ Methods -> การกระทำ ให้ลองเขียน Object โดยใช้รูปแบบดังนี้ ชื่อ Attributes Methods.
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
Object-Oriented Programming
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
คอนสตรัคเตอร์ (Constructor)
chapter 2 - Construction and destruction - Overloading method
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
บทที่ 5 การเขียนรายงานโครงงานคอมพิวเตอร์
1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
Chapter 6 Abstract Class and Interface
Inheritance and Method Overriding
Inheritance and Encapsulation
Inheritance Chapter 07.
Class Inheritance and Interfaces.
Class Diagram.
ใบสำเนางานนำเสนอ:

บทที่ 3 การสืบทอด (Inheritance) และ (Reusable) การนำกลับมาใช้ใหม่ และการ Overriding method

คำอธิบายรายวิชา : แนวคิดพื้นฐานเกี่ยวกับการออกแบบ และพัฒนาโปรแกรมเชิง วัตถุโครงสร้างของภาษาเชิงวัตถุ เช่น คลาส ออปเจ็ค เมธอด อินเตอร์เฟส แพคแกจ การสืบทอดคลาส เอนแคปซูเลชั่น และพอริมอร์ฟิซึม เอพีไอของภาษาที่ใช้ในการเขียนโปรแกรมเชิงวัตถุ

สิ่งที่จะเรียนรู้ใน Week นี้

ระดับการเข้าใช้ class ,attribute, method ระดับ ต่าง ๆ วันนี้จะยังไม่ลงรายละเอียด จะไปเรียนในหัวข้อเรื่อง การปกป้องข้อมูล (Encapsulation)) ระดับการเข้าใช้ class ,attribute, method ระดับ ต่าง ๆ public กำหนดให้ class, attribute, method ? ไม่ได้เขียนอะไร กำหนดให้ class ,attribute, method ? protected กำหนดให้ attribute, method ? private กำหนดให้ attribute , method?

เนื้อหา ตอนที่ 1 การสืบทอด (Inheritance) class แม่ (super class) , class ลูก (subclass) รู้จัก keyword “extends” รู้จักคำว่า method Overriding (การ override เมธอด) รู้จัก keyword “super” final class ,final method

การสืบทอด (Inheritance) คืออะไร เป็นคุณสมบัติหนึ่งของ OOP ที่อนุญาตให้ผู้เขียนโปรแกรมสามารถสร้าง class ใหม่โดยสืบทอดเอาคุณสมบัติต่าง ๆ มาจาก class ที่มีอยู่แล้ว

คลาสแม่(super class ) , คลาสลูก(sup class) คืออะไร “เมื่อ class หนึ่งสืบทอดคุณสมบัติมาจากอีก class หนึ่ง” เราจะเรียกclassที่ถูกสืบทอดคุณสมบัติไปว่า คลาสแม่(super class) และเรียก class ที่สืบทอดคุณสมบัติมาว่า คลาสลูก(sub class) เช่น class A เป็นคลาสแม่ของ class B (class B เป็นคลาสลูกของ class A) คือclass B ทำการสืบทอดคุณสมบัติมาจาก class A

[modifier] class ชื่อคลาส extends ชื่อคลาสที่ถูกสืบทอด{ Keyword “extends” ใช้ระบุให้กับ class เพื่อกำหนดว่า class นั้น ต้องการสืบทอดคุณสมบัติมาจาก class ใด รูปแบบ superclass, คลาสแม่ subclass, คลาสลูก [modifier] class ชื่อคลาส extends ชื่อคลาสที่ถูกสืบทอด{ }

ข้อแตกต่าง [modifier] class ชื่อคลาส { } [modifier] class ชื่อคลาส extends ชื่อคลาสที่ถูกสืบทอด{ }

public class Student extends People{ } ตัวอย่าง1 ชื่อคลาส ชื่อคลาสที่ถูกสืบทอด public class Student extends People{ } อธิบาย class Student สืบทอดคุณสมบัติมาจาก class People class Student เป็น sup class (คลาสลูก) class People เป็น super class (คลาสแม่)

public class Manager extends Employee{ } ตัวอย่าง2 ชื่อคลาส ชื่อคลาสที่ถูกสืบทอด public class Manager extends Employee{ } อธิบาย class Manager สืบทอดคุณสมบัติมาจาก class Employee class Manager เป็น sup class (คลาสลูก) class Employee เป็น super class (คลาสแม่)

class แม่ สามารถถ่ายทอดอะไรให้แก่ class ลูก? ถ่ายทอด attribute , method class ลูกสามารถเรียกใช้งาน attribute และ method ที่สืบ ทอดมาได้เลย เสมือนถูกสร้างไว้ใน class ลูกเอง นอกจากนี้ class ลูกสามารถกำหนด attribute ,method สร้างเพิ่มเติมเข้าไปใน class ลูกได้ด้วย ดังนั้น class ลูกมี attribute และ method ที่ได้รับถ่ายทอดมา และก็มี attribute และ method ที่สร้างขึ้นมาเองเพิ่มเติม

Inheritance (การสืบทอดคุณสมบัติ) คลาสแม่ (Super Class) “Employee” Emp_ID position Emp_ID Position Emp_ID Position Position_Car Hout_per_mounth คลาสลูก (SubClass) “Manager คลาสลูก (SubClass) “SecurityGuard”

Inheritance (การสืบทอดคุณสมบัติ)

class 1 class สามารถ extends มาจาก class ใดๆ ได้แค่ 1 class single inheritance class 1 class สามารถ extends มาจาก class ใดๆ ได้แค่ 1 class ตัวอย่างที่ผิด class A extends B,C{ }

ทำไมต้องสืบทอด ? การที่เรานำหลักการของ inheritance มาใช้ก็เพื่อประหยัดเวลาในการสร้าง class คือ จะได้นำสิ่งที่มีอยู่แล้วใน class เดิมมาใช้ได้เลย โดยที่ไม่ต้องเสียเวลาสร้างใหม่

คือ“การแก้ไข method ที่ได้รับการ ถ่ายทอดมาจาก class แม่” Overriding คืออะไร? คือ“การแก้ไข method ที่ได้รับการ ถ่ายทอดมาจาก class แม่”

อย่างไรถึงเรียกว่า เมธอดถูกทำการ Override เมธอดใน class ลูกมีชื่อเหมือนกับ เมธอดใน class แม่ ค่าที่ถูกส่งกลับออกไป (return type) เป็นข้อมูลชนิดเดียวกัน argument ที่ส่งเข้ามาใน method จำนวนข้อมูลและชนิดข้อมูลเดียวกัน (เหมือนกัน)

ประโยชน์ของการ Overriding จะช่วยให้ class ลูกสามารถแก้ไขหรือเพิ่มเติมการทำงานบางอย่างของเมธอดที่ได้รับการถ่ายทอดมาจาก class แม่ กระบวนการนี้เรียกว่า method overriding

ตัวอย่าง method จาก class แม่ method ของ class ลูก

ตัวอย่าง method จาก class แม่ method ของ class ลูก

การแก้ไข ระดับการเข้าใช้ (Access modifier) private package , default ,none protected public มาก

การแก้ไข ระดับการเข้าใช้ (Access modifier) private package , default ,none protected public มาก

รู้จัก keyword “super” เป็น keyword ที่ใช้อ้างอิงถึง member [attribute,method]ของ superclass ของ class นั้น ๆ รูปแบบ super.ชื่อเมธอด([อากิวเมนต์]); super.ชื่อattribute;

ตัวอย่าง

คลาสแม่ super class คลาสลูก sub class Student - name : String People - name : String + age : int # address :String + setName(n:String) + getName(): String +setAge(age:int) +getAge():int +setAddress(addresss:String) +getAddresss():String +showData():void Student - name : String + age : int # address :String - grade :char + setName(n:String) + getName(): String +setAge(age:int) +getAge():int +setAddress(a:String) +getAddresss():String +setGrade(score:double) +getGrade():char +showData():void คลาสแม่ super class extends คลาสลูก sub class Student - grade : char +setGrade(score:double) +getGrade():char + showData():void

People - name : String + age : int # address :String + setName(n:String) + getName(): String +setAge(age:int) +getAge():int +setAddress(address:String) +getAddresss():String +showData():void

+setGrade(score:double) +getGrade():char + showData():void People Student - grade : char +setGrade(score:double) +getGrade():char + showData():void extends

สร้าง class “Test_Student” ขึ้นใหม่เพื่อทดลองเรียกใช้ Class Student People Student - grade : char +setGrade(score:double) +getGrade():char + showData():void extends name is Peter age is 22 address is Roi ed City grade is D

การห้ามสืบทอด class (final class) ถ้าเราไม่ต้องการให้มี class ใดมาสืบทอดคลาสนี้ได้ สามารถกำหนด keyword final ประกอบกับการประกาศ class ตัวอย่าง 1.สร้าง class “A” กำหนด final ประกอบกับการประกาศ class 2. สร้าง class “B” เพื่อทดสอบ extends

การปกป้องไม่ให้ override method (final method) ถ้าเราไม่ต้องการให้มี class ที่สืบทอด override เมธอดใดเรา สามารถกำหนด keyword final ประกอบกับการประกาศ method ตัวอย่าง 1.สร้าง class “A” ดังนี้ 2. สร้าง class “B” extends “A” แล้วทดสอบ override getID()

ตัวอย่าง กฎของการถ่ายทอด ตัวอย่าง กฎของการถ่ายทอด

ตัวอย่าง กฎของการถ่ายทอด และการ Overriding

สรุป การสืบทอดในแนวคิดของ OOP ใช้แนวความคิดเดียวกับการถ่ายทอดคุณลักษณะจากพ่อและแม่ การสืบทอดทำให้เกิดการนำไปใช้ใหม่ได้ (Reusable) เมธอดที่ใช้กับ class แม่ได้ ก็สามารถใช้กับ class ลูกได้ class ลูกสามารถ override เมธอดใน class แม่ได้ ถ้า class ลูกอยู่ต่าง package กับ class แม่ , class ลูกสามารถเรียกใช้ เมธอดของ class แม่ได้ในกรณีที่ methodกำหนดการเข้าใช้ระดับ public หรือ protected

กำหนดให้กับ attribute ? กำหนดให้กับ method ? final กำหนดให้กับ class ? กำหนดให้กับ attribute ? กำหนดให้กับ method ?

การบ้าน ให้นักศึกษา เขียนโปรแกรม โดยใช้ ทฤษฎี กฎของการถ่ายทอด(Inheritance) และการ override เมธอด (overriding)