• 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
Bài viết: 22
Ngày tham gia: T.Sáu 12/08/2011 2:01 pm

đa kế thừa trong vb.net

Gửi bàigửi bởi lephuckhanh » T.Bảy 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
  1.   Public Class obj_DoiTuong
  2.     '1. -------------- các thuộc tính-----------
  3.     Private _MaDT As String
  4.     Private _TenDT As String
  5.     Private _CheDo As Integer
  6.     '2. các contructer -----------------------------------------------
  7.     Sub New()
  8.         Me.MaDT = Nothing
  9.         Me.TenDT = Nothing
  10.         Me.CheDo = 0
  11.     End Sub
  12.  
  13.     Sub New(ByVal MaDT As String, ByVal TenDT As String, ByVal CheDo As Integer)
  14.         Me.MaDT = MaDT
  15.         Me.TenDT = TenDT
  16.         Me.CheDo = CheDo
  17.     End Sub
  18.  
  19.     Sub New(ByVal MaDT As String, ByVal TenDT As String)
  20.         Me.MaDT = MaDT
  21.         Me.TenDT = TenDT
  22.     End Sub
  23.     '3. các phương thức set và get  
  24.     Public Property MaDT() As String
  25.         Get
  26.             Return Me._MaDT
  27.         End Get
  28.         Set(ByVal value As String)
  29.             Me._MaDT = value
  30.         End Set
  31.     End Property
  32.  
  33.     Public Property TenDT() As String
  34.         Get
  35.             Return Me._TenDT
  36.         End Get
  37.         Set(ByVal value As String)
  38.             Me._TenDT = value
  39.         End Set
  40.     End Property
  41.  
  42.     Public Property CheDo() As Integer
  43.         Get
  44.             Return Me._CheDo
  45.         End Get
  46.         Set(ByVal value As Integer)
  47.             Me._CheDo = value
  48.         End Set
  49.     End Property
  50. End Class
  51.  


và 1 class Lớp:
  1. Public Class obj_Lop
  2.     '1.----------- các thuộc tính
  3.     Private _MaL As String
  4.     Private _TenL As String
  5.     '2.-----------các contructer
  6.     Sub New()
  7.         Me.MaL = Nothing
  8.         Me.TenL = Nothing
  9.     End Sub
  10.  
  11.     Sub New(ByVal MaL As String, ByVal TenL As String)
  12.         Me.MaL = MaL
  13.         Me.TenL = TenL
  14.     End Sub
  15.     '3. ---------các phương thức set và get
  16.  
  17.     Public Property MaL() As String
  18.         Get
  19.             Return Me._MaL
  20.         End Get
  21.         Set(ByVal value As String)
  22.             Me._MaL = value
  23.         End Set
  24.     End Property
  25.  
  26.     Public Property TenL() As String
  27.         Get
  28.             Return Me._TenL
  29.         End Get
  30.         Set(ByVal value As String)
  31.             Me._TenL = value
  32.         End Set
  33.     End Property
  34. End Class
  35.  


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



Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

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

Gửi bàigửi bởi alexanderdna » T.Tư 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
Bài viết: 22
Ngày tham gia: T.Sáu 12/08/2011 2:01 pm

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

Gửi bàigửi bởi lephuckhanh » T.Sáu 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.

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

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

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 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?


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

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách