• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

đa kế thừa trong vb.net

Nơi trao đổi, hỏi đáp về hướng đối tượng (OOP - Object-Oriented Programming), không giới hạn về ngôn ngữ lập trình
lephuckhanh
Thành viên chính thức
Thành viên chính thức
Posts: 22
Joined: Fri 12/08/2011 2:01 pm

đa kế thừa trong vb.net

Postby lephuckhanh » Sat 12/11/2011 3:10 pm

Xin chào các bạn mình đang viết chương trình Quản Lí Sinh Viên.
mô tả như sau:
Một sinh viên sẽ thuộc 1 lớp duy nhất
Một sinh viên cũng thuộc 1 đối tượng duy nhất (VD: con nhà nghèo, bộ đội xuất ngũ....)
mình tạo 1 class Sinnh viên:
  1.   Public Class obj_SinhVien
  2.    
  3.     '1. các thuộc tính
  4.     Private _MaSV As String
  5.     Private _HoTen As String
  6.     Private _Phai As Boolean
  7.     Private _NamSinh As Date
  8.     Private _HoKhau As String
  9.     Private _CMND As String
  10.     '2. các contructer
  11.     Sub New(ByVal MaSV As String, ByVal HoTen As String, ByVal Phai As Boolean, ByVal NamSinh As Date, ByVal HoKhau As String, ByVal CMND As String, ByVal MaDT As String, ByVal MaL As String)
  12.        
  13.         Me.MaSV = MaSV
  14.         Me.HoTen = HoTen
  15.         Me.Phai = Phai
  16.         Me.NamSinh = NamSinh
  17.         Me.HoKhau = HoKhau
  18.         Me.CMND = CMND
  19.     End Sub
  20.  
  21.     '3. các phương thức get và set
  22.  
  23.     Public Property MaSV() As String
  24.         Get
  25.             Return Me._MaSV
  26.         End Get
  27.         Set(ByVal value As String)
  28.             Me._MaSV = value
  29.         End Set
  30.     End Property
  31.  
  32.     Public Property HoTen() As String
  33.         Get
  34.             Return Me._HoTen
  35.         End Get
  36.         Set(ByVal value As String)
  37.             Me._HoTen = value
  38.         End Set
  39.     End Property
  40.  
  41.     Public Property Phai() As Boolean
  42.         Get
  43.             Return Me._Phai
  44.         End Get
  45.         Set(ByVal value As Boolean)
  46.             Me._Phai = value
  47.         End Set
  48.     End Property
  49.  
  50.     Public Property NamSinh() As Date
  51.         Get
  52.             Return Me._NamSinh
  53.         End Get
  54.         Set(ByVal value As Date)
  55.             Me._NamSinh = value
  56.         End Set
  57.     End Property
  58.  
  59.     Public Property HoKhau() As String
  60.         Get
  61.             Return Me._HoKhau
  62.         End Get
  63.         Set(ByVal value As String)
  64.             Me._HoKhau = value
  65.         End Set
  66.     End Property
  67.  
  68.     Public Property CMND() As String
  69.         Get
  70.             Return Me._CMND
  71.         End Get
  72.         Set(ByVal value As String)
  73.             Me._CMND = value
  74.         End Set
  75.     End Property
  76.  
  77. End Class
  78.  


mình cũng tạo một class: Đối tượng
[vbnet]
Public Class obj_DoiTuong
'1. -------------- các thuộc tính-----------
Private _MaDT As String
Private _TenDT As String
Private _CheDo As Integer
'2. các contructer -----------------------------------------------
Sub New()
Me.MaDT = Nothing
Me.TenDT = Nothing
Me.CheDo = 0
End Sub

Sub New(ByVal MaDT As String, ByVal TenDT As String, ByVal CheDo As Integer)
Me.MaDT = MaDT
Me.TenDT = TenDT
Me.CheDo = CheDo
End Sub

Sub New(ByVal MaDT As String, ByVal TenDT As String)
Me.MaDT = MaDT
Me.TenDT = TenDT
End Sub
'3. các phương thức set và get
Public Property MaDT() As String
Get
Return Me._MaDT
End Get
Set(ByVal value As String)
Me._MaDT = value
End Set
End Property

Public Property TenDT() As String
Get
Return Me._TenDT
End Get
Set(ByVal value As String)
Me._TenDT = value
End Set
End Property

Public Property CheDo() As Integer
Get
Return Me._CheDo
End Get
Set(ByVal value As Integer)
Me._CheDo = value
End Set
End Property
End Class
[/vbnet]

và 1 class Lớp:
[vbnet]
Public Class obj_Lop
'1.----------- các thuộc tính
Private _MaL As String
Private _TenL As String
'2.-----------các contructer
Sub New()
Me.MaL = Nothing
Me.TenL = Nothing
End Sub

Sub New(ByVal MaL As String, ByVal TenL As String)
Me.MaL = MaL
Me.TenL = TenL
End Sub
'3. ---------các phương thức set và get

Public Property MaL() As String
Get
Return Me._MaL
End Get
Set(ByVal value As String)
Me._MaL = value
End Set
End Property

Public Property TenL() As String
Get
Return Me._TenL
End Get
Set(ByVal value As String)
Me._TenL = value
End Set
End Property
End Class
[/vbnet]

1. Vấn đề là mình muốn tận dụng thuộc tính MaDT trong class Đối tượng. và thuộc tính MaL trong class Lớp.
Nhưng trong lập trình hướng đối tượng không cho phép 1 class kế thừa từ 2 class khác.
2. mình nghĩ là phải dùng interace nhưng không biết sử dụng như thế nào. nhờ các bạn giúp dùm mình nhe



User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

Re: đa kế thừa trong vb.net

Postby alexanderdna » Wed 16/11/2011 8:57 pm

1. Nếu bạn dùng C++ thì sẽ làm được đa kế thừa.
2. Nếu dùng interface, bạn sẽ dùng property.
Thí dụ:
  1. interface IDoiTuong
  2. {
  3.     int MaDT
  4.     {
  5.         get;
  6.         set;
  7.     }
  8. }
  9.  
  10. interface ILop
  11. {
  12.     int MaLop
  13.     {
  14.         get;
  15.         set;
  16.     }
  17. }
  18.  
  19. class SinhVien : IDoiTuong, ILop
  20. {
  21.     private int maDT;
  22.     private int maLop;
  23.    
  24.     public int MaDT
  25.     {
  26.         get { return this.maDT; }
  27.         set { this.maDT = value; }
  28.     }
  29.    
  30.     public int MaLop
  31.     {
  32.         get { return this.maLop; }
  33.         set { this.maLop = value; }
  34.     }
  35. }

Không biết có đúng ý bạn không?

lephuckhanh
Thành viên chính thức
Thành viên chính thức
Posts: 22
Joined: Fri 12/08/2011 2:01 pm

Re: đa kế thừa trong vb.net

Postby lephuckhanh » Fri 18/11/2011 1:58 pm

nếu theo các bạn viết như thế thì cũng đâu có kế thừa 2 class DoiTuong va Lop đâu.
và cũng không tận dụng 2 thuộc tính MaDT va MaL đâu. vì nếu có class A nào đó cần sử dụng thuộc tính MaDT và MaL thì cũng phải viết code lại thôi
ý mình muốn là class DoiTuong và class Lop là 2 lớp cơ sở để các lớp còn lại có thể kế thừa cả 2 lớp cùng 1 lúc.

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: đa kế thừa trong vb.net

Postby vo_minhdat2007 » Fri 18/11/2011 2:26 pm

Vậy thì bạn viết 2 interface, rồi tạo 1 abstract class kế thừa cả 2 interface đó thử xem? Mình không có thời gian đọc code trên của bạn, chỉ dò theo bài trả lời phía trên để đoán ý. Bạn có thể tóm tắt lại bạn cần gì không?


Return to “Lập trình hướng đối tượng (OOP)”

Who is online

Users browsing this forum: No registered users and 4 guests