03.ke thua daxa

14
LTUDQL 2 ©HCMUS . - 1 - Kế thừa – Đa xạ - Tương ứng bội Bùi Tấn Lộc [email protected]

Upload: dung-dinh

Post on 28-Jun-2015

356 views

Category:

Education


3 download

TRANSCRIPT

Page 1: 03.ke thua daxa

LTUDQL 2

©HCMUS. - 1 -

Kế thừa – Đa xạ - Tương ứng bội

Bùi Tấn Lộc

[email protected]

Page 2: 03.ke thua daxa

LTUDQL 2

©HCMUS.

0.Câu hỏi: Sử dụng kế thừa, đa xạ, tương ứng bội trong VB.NET?

1. Thừa kế ?

2. Hàm ảo ?

3. Cài đặt hàm ảo ?

4. Áp dụng đa xạ, tương ứng bội ?

- 2 -

Page 3: 03.ke thua daxa

LTUDQL 2

©HCMUS.

1. Thừa kế- Inherits

Public Class B Inherits AEnd Class

Public Class MachDon Inherits MachDienEnd Class

- 3 -

Page 4: 03.ke thua daxa

LTUDQL 2

©HCMUS.

1bis.Sử dụng lại hàm tạo của lớp cha - Kế thừa lại hàm tạo của lớp cha

Public Class B Inherits A Private _r As Double Public Sub New() MyBase.New() End Sub Public Sub New(ByVal m As Double, ByVal n As Double) MyBase.New(m)

_r = (m+n)/2 End SubEnd Class

- 4 -

Page 5: 03.ke thua daxa

LTUDQL 2

©HCMUS.

2.Phương thức ảo - Overridable

Public Class MachDien Public Overridable Function TongTro() As Double Dim kq As Double kq = 0 Return kq End FunctionEnd Class

- 5 -

Page 6: 03.ke thua daxa

LTUDQL 2

©HCMUS.

3.Cài đặt phương thức ảo ở lớp con – Overrides

Public Class MachDon Inherits MachDien Private _r As DoublePublic Overrides Function TongTro() As Double Return _r End FunctionEnd Class

- 6 -

Page 7: 03.ke thua daxa

LTUDQL 2

©HCMUS.

4.Áp dụng đa xạ, tương ứng bội

‘………………………………Dim m1 As MachDienDim m23 As MachDienDim m45 As MachDienDim m6 As MachDien

m1 = New MachDon(1)m23 = New MachSongSong(2, 3)m45 = New MachNoiTiep(4, 5)m6 = New MachDon(6)

tongTro1 = m23.TongTro()tongTro2 = m45.TongTro()

- 7 -

Page 8: 03.ke thua daxa

LTUDQL 2

©HCMUS.

5.Tóm tắt

• Thừa kế – Inherits

• Hàm ảo – Overridable

• Cài đặt hàm ảo – Overrides

• Áp dụng đa xạ, tương ứng bội – dùng kiểu lớp trừu tượng nhưng tham chiếu đến vùng nhớ cụ thể.

- 8 -

Page 9: 03.ke thua daxa

LTUDQL 2

©HCMUS.

6.Ví dụ

• Tính tổng trở của mạch điện. Trong đó:• Mạch điện có thể có nhiều mạch đơn hoặc mạch phức

• Mạch đơn là mạch chỉ có một điện trở

• Mạch phức là mạch chứa bện trong nó nhiều mạch thành phần

• Mỗi mạch thành phần có thể là mạch đơn hoặc mạch phức

• Mạch phức có thể được mắc song song hoặc nối tiếp

- 9 -

Page 10: 03.ke thua daxa

LTUDQL 2

©HCMUS.

6.Ví dụ (tt)

- 10 -

MachDien

MachDon

MachPhuc

MachNoiTiepMachSongSong

Nhap()

Xuat()

TongTro()_dsMachDi

en_r

• Các thuộc tính private được vẽ màu xanh bên trái

• Các thuộc tính protected được vẽ màu xanh bên phải

• Các phương thức public được vẽ màu đỏ bên phải

• Các thuộc tính, phương thức được kế thừa, không cài đặt lại thì được vẽ với né đứt (có thể hiểu ngầm không vẽ ra)

_dsMachDien

Page 11: 03.ke thua daxa

LTUDQL 2

©HCMUS.

6.Ví dụ (tt)

• Xem source code

- 11 -

Page 12: 03.ke thua daxa

LTUDQL 2

©HCMUS.

7.Áp dụng 1

• Tính tiền chi tiết máy. Trong đó• 1 cái máy có nhiều chi tiết. Mỗi chi tiết máy là chi tiết đơn hoặc chi tiết

phức.

• Chi tiết đơn là chi tiết không chứa bên trong nó chi tiết khác. Thông tin của chi tiết đơn bao gồm MSCT, giá tiền

• Chi tiết phức là chi tiết chứa bên trong nó nhiều chi tiết thành phần. Mỗi chi tiết thành phần là chi tiết đơn hoặc chi tiết phức.

• Thông tin của chi tiết phức bao gồm MSCT, danh sách chi tiết thành phần.

• Giá tiền của chi tiết phức là tổng giá tiền của các chi tiết thành phần

- 12 -

Page 13: 03.ke thua daxa

LTUDQL 2

©HCMUS.

8.Áp dụng 2

• Công ty ABC có nhiều nhân viên làm việc trong các bộ phận khác nhau: quản lý, sản xuất, văn phòng.

• Lương nhân viên văn phòng: • lương cơ bản + số ngày làm việc * 100k + trợ cấp

• Lương nhân viên sản xuất:• lương cơ bản + số sản phẩm*2000

• Lương nhân viên quản lý:• Lương cơ bản + hệ số công việc + thưởng

• Ngoài ra công ty còn có các thông tin về nhân viên: họ tên, và các thông số trên để tính lương cho nhân viên trong công ty.

• Viết chương trình phục vụ cho việc tính lương

- 13 -

Page 14: 03.ke thua daxa

LTUDQL 2

©HCMUS.

9.Câu hỏi – Shadows?

Public Class A Public Function Add(ByVal x As Integer, ByVal y As Integer) As Integer Return x + y End Function Public Function Add(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) As Integer Return x + y + z End FunctionEnd ClassPublic Class B Inherits A Public Shadows Function Add(ByVal x As Integer, ByVal y As Integer) As Integer Return x - y End FunctionEnd Class

- 14 -