Bài mẫu 5. Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh. Tính điểm trung bình và xuất kết quả.
ĐƠN THỂ LỚP HỌC SINH Public Class CHocSinh
Private HoTen As String Private Toan As Integer Private Van As Integer
Private DiemTrungBinh As Double Public Sub New()
Return End Sub
Public Sub Nhap()
Console.Write("Nhap ho ten:")
HoTen = Console.ReadLine()
Console.Write("Nhap toan:")
Toan = Console.ReadLine()
Console.Write("Nhap van:")
Van = Console.ReadLine() End Sub
DiemTrungBinh = (Toan + Van) / 2 End Sub
Public Sub Xuat()
Console.WriteLine("Ho ten :" & HoTen)
Console.WriteLine("Toan :" & Toan)
Console.WriteLine("Van:" & Van)
Console.WriteLine("Diem Trung Binh:"
& DiemTrungBinh) End Sub End Class ĐƠN THỂ CHÍNH Module Module1 Sub Main()
Dim hs As New CHocSinh
hs.Nhap() hs.XuLy() hs.Xuat() End Sub End Module 4.6 ỨNG DỤNG: 4.6.1 Ứng dụng 1
Bài mẫu 6. Viết chương trình nhập vào một phân số. Rút gọn phân số đó và xuất ra kết quả .
ĐƠN THỂ LỚP PHÂN SỐ Public Class CPhanSo
Private Mau As Integer Public Sub New()
Tu = 0 Mau = 1 End Sub
Public Sub Nhap()
Console.Write("Nhap tu: ")
Tu = Console.ReadLine()
Console.Write("Nhap mau: ")
Mau = Console.ReadLine() End Sub
Public Sub Xuat()
Console.WriteLine(Tu & "/" & Mau) End Sub
Public Sub RutGon()
Dim a As Integer = Math.Abs(Tu) Dim b As Integer = Math.Abs(Mau) While (a * b <> 0) If (a > b) Then a = a - b Else b = b - a End If End While Tu = Tu / (a + b) Mau = Mau / (a + b) End Sub End Class ĐƠN THỂ CHÍNH Module Module1 Sub Main()
Dim ps As New CPhanSo
ps.RutGon() ps.Xuat()
End Sub End Module
4.6.2 Ứng dụng 2
Bài mẫu 7. Viết chương trình nhập toa độ hai điểm trong mặt phẳng Oxy. Tính khoảng cách giữa chúng và xuất ra kết quả.
ĐƠN THỂ LỚP CDIEM Public Class CDiem
Private x As Double Private y As Double Public Sub New()
x = 0 y = 0 End Sub
Public Sub Nhap()
Console.Write("Nhap x: ")
x = Console.ReadLine()
Console.Write("Nhap y: ")
y = Console.ReadLine() End Sub
Public Sub Xuat()
Console.Write("(" & x & "," & y & ")") End Sub
Public Function KhoangCach(ByVal P As CDiem) As Double
Return Math.Sqrt((x - P.x) * (x - P.x) + (y - P.y) * (y - P.y))
End Class
ĐƠN THỂ CHÍNH Module Module1
Sub Main()
Dim A As New CDiem
Dim B As New CDiem
Dim kc As Double A.Nhap() B.Nhap() kc = A.KhoangCach(B) A.Xuat() B.Xuat()
Console.Write(vbLf & "Khoang cach giua hai diem
la:" & kc)
End Sub End Module
4.7 BÀI TẬP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI VB.NET
Hãy làm các bài tập dưới đây bằng phương pháp lập trình hướng đối tượng với ngôn ngữ VB.NET
8. Viết chương trình nhập vào một phân số. Hãy cho biết
phân số đó là phân số âm hay dương hay bằng không. 9. Viết chương trình nhập tọa độ hai điểm trong không
gian. Tính khoảng cách giữa chúng và xuất kết quả.
10. Viết chương trình nhập vào 2 phân số. Tìm phân số lớn
11. Viết chương trình nhập vào 2 số phức. Tính tổng, hiệu, tích và xuất kết quả.
12. Viết chương trình nhập toạ độ 3 đỉnh A,B,C của 1 tam
giác trong mặt phẳng Oxy. Tính chu vi của tam giác và xuất ra kết quả.
13. Viết chương trình nhập vào một ngày. Tìm ngày kế tiếp và xuất kết quả.
14. Viết chương trình nhập vào một ngày. Tìm ngày hôm qua và xuất kết quả.
CHƯƠNG 5 PHƯƠNG THỨC THIẾT LẬP CONSTRUCTORS
5.1 MỤC ĐÍCH
Các phương thức thiết lập của một lớp có nhiệm vụ thiết lập thông tin ban đầu cho các đối tượng thuộc về lớp ngay khi đối tượng được khai báo.
5.2 CÁC ĐẶT ĐIỂM CỦA PHƯƠNG THỨC THIẾT LẬP
- Phương thức thiết lập của lớp được định nghĩa thông qua toán tử new.
- Không có giá trị trả về.
- Được tự động gọi thực hiện ngay khi đối tượng được khai báo.
- Có thể có nhiều phương thức thiết lập trong một lớp.
- Trong một quá trình sống của đối tượng thì chỉ có 1 lần duy nhất phương thức thiết lập được gọi thực hiện đó là khi đối tượng được khai báo.
- Các phương thức thiết lập của lớp thuộc nhóm các phương thức khởi tạo.
- Từ khóa để tham khảo trong MSDN là “New constructor”.
5.3 GHI CHÚ
Khi khai báo một lớp đối tượng trong VB.NET ta phải định nghĩa ít nhất một phương thức thiết lập cho lớp đó. Thông thường các lập trình viên chọn là phương thức thiết lập mặc định (không nhận tham số đầu vào). Tuy nhiên, đây không phải là phương thức thiết lập bắt buộc phải định nghĩa.
5.4 PHÂN LOẠI PHƯƠNG THỨC THIẾT LẬP
Đ ể đơn giản ta có thể chia các phương thức thiết lập của một lớp thành 3 nhóm như sau:
- Phương thức thiết lập mặc định. - Phương thức thiết lập sao chép.
- Phương thức thiết lập nhận tham số đầu vào.
Về mặt nguyên tắc có bao nhiêu phương thức khởi tạo thì có bấy nhiêu phương thức thiết lập, phương thức khởi tạo mặc định thì tương ứng với phương thức thiết lập mặc định, phương thức khởi tạo dựa vào 1 đối tượng khác tương ứng 1 phương thức thiết lập sao chép, các phương thức khởi tạo còn lại tương ứng với lại phương thức thiết lập nhận tham số đầu vào.
5.5 ỨNG DỤNG PHƯƠNG THỨC THIẾT LẬP
Bài mẫu 8. Hãy xác định và cài đặt các phương thức thiết lập cho lớp phân số.
Lớp phân số có hai thuộc tính tử số và mẫu số.
- Phương thức thiết lập mặc định: tử số được lấy mặc định là 0 và mẫu số được lấy mặc định là 1.
- Phương thức thiết lập khi biết tử số: tử số được gán giá trị tương ứng với giá trị của đối số đầu vào và mẫu số được lấy mặc định là 1.
- Phương thức thiết lập khi biết đầy đủ thông tin: tử số và mẫu số được gán giá trị tương ứng với giá trị của các đối số đầu vào. - Phương thức thiết lập sao chép: nhận tham số đầu vào là một
đối tượng cùng thuộc về lớp phân số và tạo ra một đối tượng phân số mới giống hoàn toàn đối tượng phân số đối số tương ứng.
Chương trình minh họa
ĐƠN THỂ LỚP PHÂN SỐ Public Class CPhanSo
‘Các thuộc tính
Private Tu As Integer Private Mau As Integer
‘ Phương thức thiết lập mặc định Public Sub New()
Tu = 0 Mau = 1 End Sub
‘ Phương thức thiết lập khi biết tử số Public Sub New(ByVal t As Integer)
Tu = t Mau = 1 End Sub
‘ Phương thức thiết lập khi biết đầy đủ thông tin Public Sub New(ByVal t As Integer,
ByVal m As Integer) Tu = t
Mau = m End Sub
‘ Phương thức thiết lập sao chép Public Sub New(ByRef ps As CPhanSo)
Tu = ps.Tu Mau = ps.Mau End Sub
Public Sub Nhap()
Console.Write("Nhap tu: ")
Tu = Console.ReadLine()
Console.Write("Nhap mau: ")
Mau = Console.ReadLine() End Sub
Public Sub Xuat()
Console.WriteLine(Tu & "/" & Mau) End Sub
End Class
HƯỚNG DẪN SỬ DỤNG CONSTRUCTOR Module Module1
Dim a As New CPhanSo a.Xuat()
Dim b As New CPhanSo(1)
b.Xuat()
Dim c As New CPhanSo(1, 2)
c.Xuat()
Dim d As New CPhanSo(c)
d.Xuat()
End Sub End Module
5.6 BÀI TẬP PHƯƠNG THỨC THIẾT LẬP
15. Hãy xác định và cài đặt các phương thức thiết lập cho
lớp điểm trong mặt phẳng Oxy.
16. Hãy xác định và cài đặt các phương thức thiết lập cho
lớp đường tròn trong mặt phẳng Oxy.
17. Hãy xác định và cài đặt các phương thức thiết lập cho
lớp số phức.
18. Hãy xác định và cài đặt các phương thức thiết lập cho
lớp tam giác trong mặt phẳng Oxy.
19. Hãy xác định và cài đặt các phương thức thiết lập cho
CHƯƠNG 6 PHƯƠNG THỨC PHÁ HỦY
6.1 MỤC ĐÍCH
Mục tiêu: Phương thức phá huỷ có nhiệm vụ dọn dẹp “xác chết” của đối tượng khi đối tượng “đi bán muối”. Nói cách khác, phương thức phá huỷ có nhiệm vụ thu hồi lại tất cả các tài nguyên đã cấp phát cho đối tượng trong quá trình sống của đối tượng khi đối tượng hết phạm vi hoạt động.
6.2 CÁC ĐẶT ĐIỂM
- Phương thức thiết lập của lớp được định nghĩa thông qua toán tử Finalize.
- Không có giá trị trả về. - Không có tham số đầu vào.
- Được tự động gọi thực hiện khi đối tượng hết phạm vi sử dụng.
- Phương thức phá huỷ thuộc nhóm các phương thức xử lý. - Có và chỉ có duy nhất một phương thức phá huỷ trong 1 lớp
mà thôi.
- Từ khóa để tham khảo trong MSDN là “Finalize destructor”.
6.3 GHI CHÚ
Một phương thức phá hủy Finalize không nên gọi exceptions, bởi vì ứng dụng không thể quản lý được và chương trình có thể bị ngắt giữa chừng.
6.4 ỨNG DỤNG PHƯƠNG THỨC PHÁ HỦY
Bài mẫu 9. Hãy xác định và cài đặt các phương thức thiết lập cho lớp phân số.
CHƯƠNG 7 CÂU LỆNH PROPERTY
7.1 MỤC ĐÍCH
Câu lệnh Property được sử dụng để dùng để gán giá trị cho một thuộc tính, một biến thành phần hoặc lấy giá trị của một thuộc tính, một biến thành phần đã được khai báo trong Module, Class hoặc Structure.
7.2 CÚ PHÁP KHAI BÁO CÂU LỆNH PROPERTY
[<attributelist>][Default][accessmodifier] [propertymodifiers][Shared][Shadows]
[ReadOnly|WriteOnly]
Property name ( [parameterlist] )
[As returntype] [Implements implementslist] [<attributelist>] [accessmodifier] Get
[statements] End Get
[<attributelist>][accessmodifier] Set
(ByVal value As returntype [,parameterlist]) [statements]
End Set End Property
7.3 VÍ DỤ
Bài mẫu 10. Hãy sử dụng câu lệnh Property
dùng để gán giá trị và lấy giá trị đối với thuộc tính intMaSo trong class CHocSinh.
Khai báo định nghĩa phương thức. Public Class CHocSinh
Private intMaSo As Integer Private strHoTen As String Private dblToan As Double Private dblVan As Double
Private dblTrungBinh As Double Private intMaKhoi As Integer Property _MaSo() As Integer
Get
Return intMaSo End Get
Set(ByVal value As Integer) intMaSo = value End Set End Property End Class Hướng dẫn sử dụng Module Module1 Sub Main()
Dim hs As New ChocSinh
hs._MaSo = 5
Dim a As Integer = hs._MaSo
...
End Module
7.4 CÁC LƯU Ý KHI SỬ DỤNG CÂU LỆNH PROPERTY
- Câu lệnh Property được sử dụng để cập nhật và cung cấp thông tin của một thuộc tính. Một thuộc tính có thể có thủ tục Get (đọc), thủ tục Set (ghi), hoặc cả hai (đọc-ghi).
- Từ khóa để tham khảo trong MSDN là “Property Statement”.
- Nếu không có các từ khóa chỉ phạm vi Public, Protected, Private, Friend thì thuộc tính (Property) của thủ tục Get và thủ tục Set sẽ mặc định là Public.
7.5 TÀI LIỆU THAM KHẢO
[4].Connell–Coding Techniques for Microsoft Visual Basic .NET– Copyright © 2002 by Microsoft Corporation.
[5].Microsoft Visual Studio 2005 Documentation–Copyright © 2002 by Microsoft Cororation.
CHƯƠNG 8 TOÁN TỬ TRONG VB.NET
8.1 CÚ PHÁP CHUNG KHAI BÁO VÀ ĐỊNH NGHĨA TOÁN TỬ
[<attrlist>] Public [Overloads] Shared [Shadows]
[ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ])
[ As [ <attrlist> ] type ] [ statements ] [ statements ] Return returnvalue [ statements ] End Operator
- Từ khóa để tham khảo trong MSDN là “Operator Statement”.
8.2 TOÁN TỬ SỐ HỌC
8.2.1 Khái niệm
8.2.2 Ứng dụng toán tử số học
Bài mẫu 11. Hãy định nghĩa toán tử cộng (operator+) cho lớp đối tượng phân số (CPhanSo).
Public Class CPhanSo Private Tu As Integer Private Mau As Integer Public Sub New()
Tu = 0 Mau = 1 End Sub
Public Shared Operator +(ByVal x As CPhanSo, ByVal y As CPhanSo) As CPhanSo Dim temp As New CPhanSo
temp.Tu = x.Tu * y.Mau + x.Mau * y.Tu temp.Mau = x.Mau * y.Mau
Return temp End Operator Public Sub Nhap()
... End Sub
Public Sub Xuat()
Console.WriteLine(Tu & "/" & Mau) End Sub
End Class
ĐƠN THỂ CHÍNH Module Module1
Sub Main()
Dim a As New CPhanSo Dim b As New CPhanSo a.Nhap() b.Nhap() Dim kq As CPhanSo kq = a + b kq.Xuat() End Sub End Module
8.3 TOÁN TỬ GÁN
Khái niệm: Toán tử gán trong các ngôn ngữ lập trình được sử dụng để gán giá trị của biến này cho biến khác. Trong ngôn ngữ lập trình hướng đối tượng toán tử gán được sử dụng để gán thành phần dữ liệu của đối tượng này cho đối tượng khác.
Trong ngôn ngữ lập trình VB.NET toán tử gán có ý nghĩa hai đối tượng cùng tham chiếu tới một địa chỉ bộ nhớ.
8.4 TOÁN TỬ SO SÁNH
8.4.1 Khái niệm
Trong ngôn ngữ VB.NET cung cấp các toán tử so sánh như sau:
STT Toán tử Ý nghĩa Ghi chú
1 Operator < Toán tử so sánh nhỏ hơn. 2 Operator > Toán tử so sánh lớn hơn. 3 Operator = Toán tử so sánh bằng. 4 Operator <> Toán tử so sánh khác.
5 Operator >= Toán tử so sánh lớn hơn bằng. 6 Operator <= Toán tử so sánh nhỏ hơn bằng.
8.4.2 Ghi chú
- Toán tử overload được sử dụng để tái định nghĩa lại các thuộc tính hay thủ tục có cùng một tên
8.4.3 Ứng dụng toán tử so sánh
Bài mẫu 12. Hãy định nghĩa toán tử so sánh lớn hơn (operator>) cho lớp đối tượng phân số (CPhanSo).
Public Class CPhanSo Private Tu As Integer Private Mau As Integer Public Sub New()
Tu = 0 Mau = 1 End Sub
Public Overloads Shared Operator –(ByVal x As CPhanSo, ByVal y As CPhanSo) As CPhanSo Dim temp As New CPhanSo
temp.Tu = x.Tu * y.Mau - x.Mau * y.Tu temp.Mau = x.Mau * y.Mau
temp.Rutgon() Return temp End Operator
Public Overloads Shared Operator >(ByVal x As CPhanSo, ByVal y As CPhanSo) As Boolean Dim temp As New CPhanSo
temp = x - y
Return (temp.Tu * temp.Mau > 0) End Operator
Public Overloads Shared Operator <(ByVal x As CPhanSo, ByVal y As CPhanSo) As Boolean Dim temp As New CPhanSo
temp = x - y
Return (temp.Tu * temp.Mau < 0) End Operator
Public Sub Rutgon()
Dim a As Integer = Math.Abs(Tu) Dim b As Integer = Math.Abs(Mau) While (a * b <> 0) If (a > b) Then a -= b Else b -= a End If End While Tu = Tu / (a + b) Mau = Mau / (a + b) End Sub
Public Sub Nhap()
Console.Write("Nhap tu: ")
Tu = Console.ReadLine()
Console.Write("Nhap mau: ")
Mau = Console.ReadLine() End Sub
Public Sub Xuat()
Console.WriteLine(Tu & "/" & Mau) End Sub
End Class
8.5 TOÁN TỬ ÉP KIỂU
8.5.1 Khái niệm
Toán tử ép kiểu được sử dụng để ép một đối tượng thuộc lớp này thành một đối tượng thuộc lớp khác.
8.5.2 Ghi chú
- Để định nghĩa toán tử ép kiểu ta phải sử dụng từ khóa widening trong việc định nghĩa.
- Từ khóa widening được sử dụng chung với thủ tục có khai báo public shared.
8.5.3 Ứng dụng toán tử ép kiểu
Bài mẫu 13. Hãy định nghĩa toán tử ép kiểu (CType) để ép một đối tượng thuộc lớp số nguyên thành một đối tượng phân số (CPhanSo).
Public Shared Widening Operator CType(ByVal t As Integer) As CPhanSo
Dim temp As New CPhanSo temp.Tu = t
temp.Mau = 1 Return temp End Operator
CHƯƠNG 9 CƠ SỞ DỮ LIỆU
9.1 LỚP ĐỐI TƯỢNG OLEDBCONNECTION
9.1.1 Mục đích
OleDbConnection là một lớp đối tượng được sử dụng để kết nối cơ sở dữ liệu.
9.1.2 Các đặc điểm chính của lớp đối tượng OleDbConnection - Không cho phép một lớp đối tượng khác kế thừa. - Kế thừa trực tiếp từ lớp đối tượng DbConnection. - Namespace: System.Data.OleDb
- Assembly: System.Data (in system.data.dll)
9.1.3 Cây kế thừa System.Object System.MarshalByRefObject System .ComponentModel.Component System.Data.Common.DbConnection System.Data.Odbc.OdbcConnection System.Data.OleDb.OleDbConnection
9.1.4 Các thuộc tính của lớp đối tượng OleDbConnection
Danh sách các thuộc tính thuộc phạm vi public của lớp đối tượng OleDbConnection.
Các thuộc tính thuộc phạm vi public của lớp đối tượng OleDbConnection
TT Tên thuộc tính Ý nghĩa
1 ConnectionString Overridden. Gets or sets the string used to open a database.
2 ConnectionTimeout
Overridden. Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error.
3 Container Gets the IContainer that contains the Component.(Inherited from Component.)
4 Database Overridden. Gets the name of the current database or the database to be used after a connection is opened.
5 DataSource Overridden. Gets the server name or file name of the data source.
6 Provider Gets the name of the OLE DB provider specified in the "Provider= " clause of the connection string. 7 ServerVersion Overridden. Gets a string that contains the version of the server to which the client is connected.
8 Site Gets or sets the ISite of the Component.(Inherited from Component.) 9 State Overridden. Gets the current state of the connection
Danh sách các thuộc tính thuộc phạm vi protected của lớp đối tượng OleDbConnection.
Các thuộc tính thuộc phạm vi protected của lớp đối tượng OleDbConnection
TT Tên thuộc tính Ý nghĩa
1 CanRaiseEvents Gets a value indicating whether the component can raise an event.(Inherited from Component.)
2 DesignMode
Gets a value that indicates whether the Component is currently in design mode.(Inherited from
Các thuộc tính thuộc phạm vi protected của lớp đối tượng OleDbConnection
TT Tên thuộc tính Ý nghĩa
3 Events Gets the list of event handlers that are attached to this Component.(Inherited from Component.)
9.1.5 Các vấn đề cần lưu ý khi sử dụng lớp OleDbConnection
When you create an instance of OleDbConnection, all properties are set to their initial values. For a list of these values, see the OleDbConnection constructor.
If the OleDbConnection goes out of scope, it is not closed. Therefore, you must explicitly close the connection by calling Close or Dispose, or by using the OleDbConnection object within a Using statement.
9.1.6 Phương thức thiết lập của lớp OleDbConnection Lớp OleDbConnection có hai phương thức thiết lập:
- OleDbConnection () - OleDbConnection (String)
Trong đó phương thức thiết lập mặt định sẽ tạo ra một thể hiện (một đối tượng) của lớp OleDbConnection.
Phương thức thiết lập nhận tham số đầu vào là một chuỗi ký tự tương ứng với chuỗi kết nối dữ liệu.
Phương thức thiết lập
TT Dạng thức khai báo Dạng thức sử dụng