Trong phương pháp này người ta xem chương trình là một hệ thống các thủ tục và hàm. Trong đó, mỗi thủ tục và hàm là một dãy các lệnh được sắp thứ tự. Khi đó, việc viết chương trình là xác định xem chương trình gồm các thủ tục và hàm nào, mối quan hệ giữa chúng ra sao?
3.3 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐƠN THỂ
3.3.1 Khái niệm
Trong phương pháp này người ta xem chương trình là 1 hệ thống các đơn thể, mỗi đơn thể là 1 hệ thống các thủ tục và hàm. Khi đó, việc viết chương trình là xác định xem chương trình gồm những đơn thể nào? Đơn thể nào đã có sẵn, đơn thể nào phải đi mua, đơn thể nào phải tự viết.
3.3.2 Phân loại đơn thể Có 2 loại đơn thể: Có 2 loại đơn thể:
- Đơn thể hướng dữ liệu. - Đơn thể hướng chức năng.
3.4 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trong phương pháp này người ta xem chương trình là một hệ thống các đối tượng, mỗi một đối tượng là sự bao bọc bên trong nó 2 thành phần:
Dữ liệu: là các thông tin về chính đối tượng. Trong một số sách, thành phần này còn được gọi là thành phần thuộc tính, thông tin .
Hành động: là các khả năng mà đối tượng có thể thực hiện. Thành phần này còn có các tên như sau: phương thức, hàm thành phần, hành vi.
Mỗi một đối tượng sẽ được cài đặt trong chương trình với dạng đơn thể chứa dữ liệu. Thêm vào đó tính chất kế thừa cho phép chúng ta xây dựng đối tượng mới dựa trên cơ sở đối tượng đã có.
3.5 CÁC NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Ngôn ngữ lập trình hướng đối tượng đầu tiên là SMALLTALK. Ngoài ra cho tới thời điểm hiện nay có các ngôn ngữ hỗ trợ hướng đối tượng như sau: Eiffel, CLos, Lopps, Flavors, Pascal, C++, Delphi, Java, Python, C#, VB.Net, ...
CHƯƠNG 4 PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET
Bài mẫu 4. 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ả.
4.1 LỚP ĐỐI TƯỢNG
4.1.1 Khái niệm
Lớp hiểu một cách đơn giản là sự tích hợp giữa hai thành phần: thành phần dữ liệu và thành phần xử lý.
4.1.2 Cú pháp khai báo lớp
[<attributelist>] [accessmodifier] [Shadows]
[MustInherit|NotInheritable] [Partial]
Class name [(Of typelist)]
[Inherits classname]
[Implements interfacenames]
[statements] End Class
4.1.3 Ghi chú
- Từ khóa để tham khảo khái niệm class trong MSDN là “Class statement”
4.2 ĐỐI TƯỢNG
4.2.1 Khái niệm
Đối tượng là 1 sự thể hiện của lớp. Một lớp có thể có nhiều sự thể hiện khác nhau.
4.2.2 Cú pháp khai báo đối tượng
Dim variablename As [New] { objectclass | Object } Ví dụ minh hoạ:
Dim a As new CHocSinh Dim x As new ChocSinh Dim y As new CHocSinh
Trong ví dụ trên ta nói a,x,y là 3 đối tượng thuộc class CHocSinh. Nói cách khác, trong ví dụ này, lớp CHocSinh có 3 thể hiện.
4.2.3 Ghi chú
- Có thể có nhiều đối tượng cùng thuộc về một lớp.
- Từ khóa để tham khảo khái niệm đối tượng trong MSDN là “object variables, declaring”
4.3 PHƯƠNG THỨC
4.3.1 Khái niệm
Phương thức là khả năng mà đối tượng thuộc về lớp có thể thực hiện.
4.3.2 Cú pháp định nghĩa phương thức
[<attributelist>] [accessmodifier] [Shadows]
[MustInherit|NotInheritable] [Partial]
Class name [(Of typelist)]
[Inherits classname] [Implements interfacenames] [statements] ... ... End Class 4.3.3 Ghi chú
- Từ khóa để tham khảo khái niệm method trong MSDN là “Class statement”
4.4 ĐỐI TƯỢNG HÀNH ĐỘNG
4.4.1 Khái niệm
Đối tượng hành động là đối tượng thực hiện khả năng mà lớp nó thuộc về có.
4.4.2 Cú pháp gọi thực hiện phương thức
...<Tên đối tượng>.<Tên Phương Thức>(<Đối số>)... Ví dụ:
4.5 CHƯƠNG TRÌNH MINH HỌA
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)