03.ke thua daxa
TRANSCRIPT
LTUDQL 2
©HCMUS. - 1 -
Kế thừa – Đa xạ - Tương ứng bội
Bùi Tấn Lộc
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 -
LTUDQL 2
©HCMUS.
1. Thừa kế- Inherits
Public Class B Inherits AEnd Class
Public Class MachDon Inherits MachDienEnd Class
- 3 -
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 -
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 -
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 -
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 -
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 -
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 -
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
LTUDQL 2
©HCMUS.
6.Ví dụ (tt)
• Xem source code
- 11 -
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 -
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 -
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 -