งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา."— ใบสำเนางานนำเสนอ:

1 1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา

2 2 Inheritance คือ คุณสมบัติในการ ถ่ายทอดลักษณะ และ Member จาก Class หนึ่งไปยังอีก Class หนึ่ง โดย Class ที่รับการถ่ายทอด จะมี ลักษณะเช่นเดียวกัน Class ต้นแบบ ทุกประการ โดยที่เราสามารถปรับปรุง เปลี่ยนแปลงลักษณะและ Member จาก Class ต้นแบบ ให้มี ความสามารถใหม่ๆ ขึ้นมา ช่วยให้ ประหยัดเวลาในการพัฒนา

3 3  Class ต้นแบบ เรียกว่า “Base Class” หรือ “Parent Class” หรือ “Parent Class”  Class ที่รับการถ่ายทอด เรียกว่า “Derived Class” หรือ “Child Class” หรือ “Child Class” Parent Class Child Class

4 4  Class ต้นแบบ คือ Person  Class ที่รับการถ่ายทอด คือ Student, Nurse, Doctor ซึ่งจะมีคุณลักษณะ เหมือน Person Person Nurse Doctor Student

5 5 เนื้อหา  Inheritance  Overriding  Accessibility  การป้องกันไม่ให้ Class ถูกใช้เป็น ต้นแบบ

6 6 Inheritance typename คือ Class ที่เราต้องการ ถ่ายทอด Member โดยการถ่ายทอด Member จะมาจาก Class ใด Class หนึ่ง ได้เพียง Class เดียวเท่านั้น Inherits typename

7 7 Example1: Inheritance (1/5) ต้องการสร้างฟอร์มสำหรับ รับ ข้อมูลชื่อ และนามสกุล โดยที่ให้ Class Person ถ่ายทอดคุณลักษณะ ให้กับ Class DerivedPerson และ ทดสอบการถ่ายทอดคุณลักษณะ ว่า เป็นไปตามนิยามของ Inheritance หรือไม่ ?

8 8 Example1: Inheritance (2/5) วัตถุคุณสมบัติ ค่าที่ กำหนด Label1Text First name: Label2Text Last name: TextBox1Text TextBox2Text

9 9 Example1: Inheritance (3/5)  เพิ่ม Class เข้ามาใน Project แล้วพิมพ์คำสั่ง ลงใน Class1.vb ดังนี้ Public Class Person Dim msName As String Property Name() As String Get Name = msName End Get Set (ByVal Value As String) msName = Value End Set End Property Public Function UpperName() As String Return UCase(msName) End Function End Class Public Class DerivedPerson Inherits Person End Class Person Property: Name Method: UpperName() DerivedPerson Property: Name Method: UpperName() ให้สังเกตว่าจะมีการถ่ายทอด จากต้นแบบมาทั้งหมด

10 10 Example1: Inheritance (4/5)  ใน Form1.vb ให้พิมพ์คำสั่งดังนี้ Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 Dim myPerson As New Person myPerson. Name = TextBox 1. Text myPerson. Name = TextBox 1. Text TextBox 1. Text = myPerson.UpperName () TextBox 1. Text = myPerson.UpperName () End Sub End Sub Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson myDerivedPerson. Name = TextBox 2. Text myDerivedPerson. Name = TextBox 2. Text TextBox 2. Text = myDerivedPerson.UpperName () TextBox 2. Text = myDerivedPerson.UpperName () End Sub End Sub

11 11 Example1: Inheritance (5/5)

12 12 Example2: Inheritance (1/5)  จากการถ่ายทอดคุณสมบัติใน Example1 เราสามารถปรับปรุง Class ที่ถูก Derived ให้สามารถมี คุณลักษณะ หรือ Member เพิ่มเติม ได้  โดยจะให้ Derived Class มีฟังก์ชัน สำหรับการตรวจสอบว่าข้อมูลที่ กรอกนั้นเป็นตัวอักษรทั้งหมดใช่ หรือไม่ ด้วย

13 13 Example2: Inheritance (2/5)  เราต้องปรับปรุง Class DerivedPerson Public Class DerivedPerson Inherits Person Inherits Person Public Function chkName () As String Public Function chkName () As String Dim i As Integer Dim i As Integer Dim temp _ name As String Dim temp _ name As String Dim result As Boolean = True Dim result As Boolean = True Const ascA As Integer = Asc (" a ") Const ascA As Integer = Asc (" a ") Const ascZ As Integer = Asc (" z ") Const ascZ As Integer = Asc (" z ") Person Property: Name Method: UpperName() DerivedPerson Property: Name Method: UpperName() Method: chkName() ให้สังเกตว่าหลังจากที่มีการถ่ายทอดจาก ต้นแบบมาทั้งหมด แล้ว Class DerivedPerson ได้ เพิ่มความสามารถ ด้วย Function chkName()

14 14 Example2: Inheritance (3/5) ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน temp_name = LCase ( Me. Name ) ' Me คือ Class DerivedPerson temp_name = LCase ( Me. Name ) ' Me คือ Class DerivedPerson For i = 1 To Len ( temp _ name ) For i = 1 To Len ( temp _ name ) If Asc ( Mid ( temp _ name, i, 1)) ascZ Then If Asc ( Mid ( temp _ name, i, 1)) ascZ Then result = False result = False Exit For Exit For End If End If Next Next If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A - Z, a - z เท่านั้น If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A - Z, a - z เท่านั้น Return Me. UpperName () Return Me. UpperName () Else Else Return " Invalid Entry " Return " Invalid Entry " End If End If End Function End Function End Class

15 15 Example2: Inheritance (4/5)  ใน Form1.vb ให้แก้ไขเฉพาะ TextBox2 นี้ Private Sub TextBox2_Leave(…) Private Sub TextBox2_Leave(…) Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson myDerivedPerson.Name = TextBox2.Text myDerivedPerson.Name = TextBox2.Text TextBox2.Text = myDerivedPerson.chkName() TextBox2.Text = myDerivedPerson.chkName() End Sub End Sub

16 16 Example2: Inheritance (5/5)

17 17 Overriding Overriding เป็นการทำให้ Member ของ Base Class และ Derived Class สามารถใช้ ชื่อซ้ำกันได้ ถ้าเราไม่พอใจกับ ความสามารถของ Member ตัวเดิมของ Base Class เราสามารถนำ Member ตัวนั้น มาแก้ไข โดยไม่มีผลกระทบต่อ Member ของ Base Class แต่อย่างใด อย่างไรก็ตามการทำ Overriding จะไม่ ครอบคลุมการทำ Constructor

18 18 Overriding สามารถทำได้ โดยกำหนดคำสั่ง ไว้ที่หน้า Member ที่ต้องการให้มีชื่อ ซ้ำกัน กำหนดดังนี้ Base Class : ใช้คำสั่ง Overridable Derived Class : ใช้คำสั่ง Overrides

19 19 Example3:Overriding (1/4)  ปกติการถ่ายทอด คุณลักษณะ Derived Class จะมีคุณลักษณะ เหมือน Base Class ทุก ประการ  อย่างไรก็ตาม เราเห็น ว่า Method : UpperName () ของ Class Person ไม่มี ประสิทธิภาพ เรา สามารถใช้วิธีการ Overriding ในการปรับปรุง ประสิทธิภาพของ Method: UpperName () ได้ Person Property: Name Method: UpperName() DerivedPerson Property: Name Method: UpperName()

20 20 Example3:Overriding (2/4)  ให้นิสิตแก้ไข Class1.vb ใหม่ โดยที่เราจะเพิ่มประสิทธิภาพให้กับ Function UpperName() Public Class Person Dim msName As String Dim msName As String Property Name () As String Property Name () As String Get Get Name = msName Name = msName End Get End Get Set ( ByVal Value As String ) Set ( ByVal Value As String ) msName = Value msName = Value End Set End Set End Property End Property Public Overridable Function UpperName () As String Public Overridable Function UpperName () As String Return UCase ( msName ) Return UCase ( msName ) End Function End Function End Class

21 21 Example3:Overriding (3/4) Public Class DerivedPerson Inherits Person Inherits Person Public Overrides Function UpperName () As String ‘ เดิมเป็น Function chkName() แต่เราเปลี่ยนโดยใช้ Overriding Public Overrides Function UpperName () As String ‘ เดิมเป็น Function chkName() แต่เราเปลี่ยนโดยใช้ Overriding Dim i As Integer Dim i As Integer Dim temp_name As String Dim temp_name As String Dim result As Boolean = True Dim result As Boolean = True Const ascA As Integer = Asc("a") Const ascA As Integer = Asc("a") Const ascZ As Integer = Asc("z") Const ascZ As Integer = Asc("z") ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson For i = 1 To Len(temp_name) For i = 1 To Len(temp_name) If Asc(Mid(temp_name, i, 1)) ascZ Then If Asc(Mid(temp_name, i, 1)) ascZ Then result = False result = False Exit For Exit For End If End If Next Next If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น Return Me.UpperName() Return Me.UpperName() Else Else Return "Invalid Entry" Return "Invalid Entry" End If End If End Function End Function End Class

22 22 Example3:Overriding (4/4)  ใน Form1.vb ให้แก้ไขเฉพาะ TextBox2 นี้ Private Sub TextBox2_Leave(…) Private Sub TextBox2_Leave(…) Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson myDerivedPerson.Name = TextBox2.Text myDerivedPerson.Name = TextBox2.Text TextBox2.Text = myDerivedPerson.UpperName() TextBox2.Text = myDerivedPerson.UpperName() End Sub End Sub

23 23 Overriding: MyBase การเรียกใช้ Member ที่ถูก กำหนดให้เป็นแบบ Overriding โดย ไม่ระบุเจ้าของใน Derived Class โดย ปกติ Member ที่ถูกนำมาประมวลผล จะได้แก่ Member ใน Derived Class เอง แต่ถ้าต้องการให้ Member ใน Base Class ถูกนำมาประมวลผลแทน โดย กำหนดค่าให้เป็น MyBase

24 24 Example4: MyBase (1/5)  ตัวอย่างนี้จะทำการปรับปรุงฟังก์ชัน UpperName () ในส่วน Derived Class ให้มี ความแตกกับ Base Class โดยที่ UpperName () ในส่วน Derived Class จะมีการ รับอาร์กิวเมนต์ว่าต้องการให้แปลง ข้อความเป็นอักษรตัวใหญ่หรือไม่ ?  ไม่รับอาร์กิวเมนต์ / หรือรับอาร์กิวเมนต์ False: ให้เรียกฟังก์ชัน UpperName () จาก Base Class  รับอาร์กิวเมนต์ True: ให้มีการตรวจสอบ โดยใช้ฟังก์ชัน UpperName () ของ Derived Class

25 25 Example4: MyBase (2/5)  ให้นิสิตแก้ไข Class1.vb ใหม่ โดยที่เราจะเพิ่มประสิทธิภาพให้กับ Function UpperName() Public Class Person Dim msName As String Dim msName As String Property Name() As String Property Name() As String Get Get Name = msName Name = msName End Get End Get Set(ByVal Value As String) Set(ByVal Value As String) msName = Value msName = Value End Set End Set End Property End Property Public Overridable Function UpperName(Optional ByVal chrOnly As Boolean = False) As String Public Overridable Function UpperName(Optional ByVal chrOnly As Boolean = False) As String Return UCase(msName) Return UCase(msName) End Function End Function End Class

26 26 Example4: MyBase (3/5) Public Class DerivedPerson Inherits Person Inherits Person Public Overrides Function UpperName(Optional ByVal chrOnly As Boolean = False) As String Public Overrides Function UpperName(Optional ByVal chrOnly As Boolean = False) As String If (chrOnly = True) Then If (chrOnly = True) Then Dim i As Integer Dim i As Integer Dim temp_name As String Dim temp_name As String Dim result As Boolean = True Dim result As Boolean = True Const ascA As Integer = Asc (" a ") Const ascA As Integer = Asc (" a ") Const ascZ As Integer = Asc (" z ") Const ascZ As Integer = Asc (" z ") ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson For i = 1 To Len(temp_name) For i = 1 To Len(temp_name) If Asc(Mid(temp_name, i, 1)) ascZ Then If Asc(Mid(temp_name, i, 1)) ascZ Then result = False result = False Exit For Exit For End If End If Next Next If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น Return Me.UpperName() Return Me.UpperName() Else Else Return " Invalid Entry " Return " Invalid Entry " End If End If Else Else Return MyBase.UpperName () ' จะเรียกใช้ function UpperName () จาก Person Return MyBase.UpperName () ' จะเรียกใช้ function UpperName () จาก Person End If End If End Function End Function End Class

27 27 Example4: MyBase (4/5)  ใน Form1.vb ให้พิมพ์คำสั่งดังนี้ Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 myDerivedPerson. Name = TextBox 1. Text myDerivedPerson. Name = TextBox 1. Text TextBox 1. Text = myDerivedPerson. UpperName () TextBox 1. Text = myDerivedPerson. UpperName () End Sub End Sub Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 myDerivedPerson. Name = TextBox 2. Text myDerivedPerson. Name = TextBox 2. Text TextBox 2. Text = myDerivedPerson. UpperName(True) TextBox 2. Text = myDerivedPerson. UpperName(True) End Sub End Sub

28 28 Example4: MyBase (5/5) 1 2 3

29 29 Accessibility (1/2)  ในการนำ Class มาใช้งานเป็น ต้นแบบในการถ่ายทอด คุณลักษณะให้แต่ละ Member ของ Class มีขอบเขตในการถ่ายทอดที่ แตกต่างกันได้ โดยการกำหนด คำสั่งต่อไปนี้ประกอบ

30 30 Accessibility (2/2) คำสั่งขอบเขตในการถ่ายทอด Public ทุกที่ใน Project ที่ Class นั้นถูกสร้าง หรือนำไปใช้ Friend ทุกที่ใน Project ที่ Class นั้นถูกสร้าง ขึ้น Protected ทั้งใน Derived Class ที่ถ่ายทอดไปจาก Class นั้นและในตัว Class นั้นเอง Protected Friend ทุกที่ใน Project ที่ Class นั้นถูกสร้าง ขึ้นและใน Derived Class Private เฉพาะใน Class ของตัวเอง

31 31 Example5: Accessibility (1/4)  เปิด Project ใหม่  เพิ่ม Class1.vb เข้าไปใน Project  แล้วพิมพ์คำสั่งที่อยู่ในหน้าถัดไป

32 32 Example5: Accessibility (2/4) Public Class Person Public Overridable Sub PublicSub () Public Overridable Sub PublicSub () End Sub End Sub Friend Overridable Sub FriendSub () Friend Overridable Sub FriendSub () End Sub End Sub Protected Overridable Sub ProtectedSub () Protected Overridable Sub ProtectedSub () End Sub End Sub Protected Friend Overridable Sub ProtectedFriendSub () Protected Friend Overridable Sub ProtectedFriendSub () End Sub End Sub Private Sub PrivateSub () Private Sub PrivateSub () End Sub End Sub End Class

33 33 Example5: Accessibility (3/4)  เพิ่ม Class Student เข้าไปใน Class1.vb  พิมพ์คำสั่งดังที่ เห็น จะเห็นว่า Class Student มี Accessibility ตัว ใดบ้างที่สามารถ Derived คุณลักษณะจาก Class Person ได้

34 34 Example5: Accessibility (4/4)  แก้ไข Class Student ใน Class1.vb  พิมพ์คำสั่งดังที่ เห็น จะเห็นว่า Class Student มี Accessibility ตัว ใดบ้างที่สามารถ Derived คุณลักษณะจาก Class Person ได้

35 35 การป้องกันไม่ให้ Class ถูก ใช้เป็นต้นแบบ  นิสิตสามารถทำได้ โดยกำหนดคำสั่ง NotInheritable ไว้หน้าชื่อของ Class ที่ไม่ต้องการ ให้ถูกนำไปใช้เป็น Class ต้นแบบเพื่อ ถ่ายทอดไปยัง Class อื่น Public NotInheritable Class Person End Class Public Class DerivedClass Inherits Person‘ จะเกิดข้อผิดพลาดขึ้นเมื่อมีการ เรียกใช้งาน End Class


ดาวน์โหลด ppt 1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.

งานนำเสนอที่คล้ายกัน


Ads by Google