Dạng bài tập về P17: Sau khi biết qua về .NET, câu hỏi bạn sẽ đặt ra là bạn có nên học lập trình trên .NET hay không. Nói chung, về lập trình có nhiều tôn giáo như VC++/Java, VB6, Delphi Bạn có thể chọn giữa C# và . Đối với VB6 programmers, học lập trình sẽ mất một thời gian, nhưng không khó. Nên nhớ rằng .NET không phải chỉ cho ta các ngôn ngữ lập trình, mà cả một hệ thống triển khai phần mềm chú trọng vào mục tiêu hơn là cách thức | Các bài tập Microsoft .NET 81 End Sub Trong code bên trên ta dùng cả property Item của Class LineItem lẫn property Description của Class ProductLine. Cả hai đều là property của ProductLine vì nó là một SubClass của LineItem. Giống như vậy một ServiceLine có thể có ghi ngày giờ cung cấp service. Ta code Class ServiceLine như sau Public Class ServiceLine Inherits LineItem Private mdtDateProvided As Date Public Sub New Make 1 as default number of services of this kind for invoice Quantity 1 End Sub Public Property DateProvided As Date Get Return mdtDateProvided End Get Set ByVal Value As Date mdtDateProvided Value End Set End Property End Class Một lần nữa ta dùng Statement Inherits để nói rằng ServiceLine là một SubClass của LineItem. Ta thêm property DateProvided vào interface thừa kế từ Class LineItem. Các bài tập Microsoft .NET 82 Bài 6 Những chức năng Đối Tượng mới của phần III Dùng OO trong Ngăn cản Thừa kế Bình thường By default class nào cũng có thể được dùng làm base class để từ đó ta thừa kế. Nhưng đôi khi ta không muốn cho ai thừa kế từ một Class nào đó để làm việc ấy ta dùng keyword NotInheritable khi declare class Public NotInheritable Class KhôngCon End Class Khi ta đã dùng keyword NotInheritable rồi thì không class nào có thể dùng keyword Inherits để tạo một subclass từ class ấy. Thừa kế và Phạm vi hoạt động Khi ta dùng đặc tính thừa kế để tạo một SubClass thì class mới này có đủ mọi methods properties và variables với Access Modifier Public hay Friend của SuperClass. Bất cứ thứ gì declared là Private trong SuperClass thì SubClass không thấy hay dùng được. Có một ngoại lệ là New method. Các Constructor methods cần phải được implemented định nghĩa lại trong mỗi SubClass. Một chốc nữa ta sẽ bàn vào chi tiết về điểm này. Để làm sáng tỏ vấn đề SubClass có thể dùng Class Members nào của SuperClass ta thử code lại Function Amount trong Lineitem class bằng cách khiến nó gọi một Private Function tên CalculateAmount để tính ra Amount thay vì để nó