PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG THỦ TỤC VÀ HÀM

Một phần của tài liệu lập trình hướng đối tượng trong VB (Trang 39)

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)

Một phần của tài liệu lập trình hướng đối tượng trong VB (Trang 39)

Tải bản đầy đủ (PDF)

(89 trang)