Bài giảng Ngôn ngữ lập trình nâng cao - Bài 3: Thực thi hàm tạo, nạp chồng - Nguyễn Xuân Hùng
Hàm hủy Finalize() được gọi sau khi tham chiếu của đối
tượng được giải phóng khỏi bộ nhớ.
Hàm Dispose() được gọi khi thu hồi tài nguyên, như là kết
nối cơ sở dữ liệu, tài nguyên hiện tại không sử dụng.
Thuật ngữ đa hình được lấy từ tiếng Hy Lạp ‘poly’ và
‘morphos’, có nghĩa là ‘nhiều’ và ‘hình dạng’.
Đa hình cho phép một giao diện sử dụng nhiều hàm khác
nhau.
Đa hình tĩnh đề cập tới một thực thể tồn ại theo nhiều hình
dạng khác nhau cùng một lúc.
Trong đa hình động, việc quyết định hàm nào xử lý được thực
thi khi mã được xử lý
26 trang |
Chia sẻ: huongthu9 | Lượt xem: 454 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ lập trình nâng cao - Bài 3: Thực thi hàm tạo, nạp chồng - Nguyễn Xuân Hùng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Slide 1 of 25Ver. 1.0
Object-Oriented Programming Using C#
NGÔN NGỮ LẬP TRÌNH NÂNG CAO
Slide 2 of 25Ver. 1.0
Object-Oriented Programming Using C#
Trong phần này, chúng ta sẽ học:
Thực thi hàm tạo (constructors)
Thực thi hàm hủy (destructors)
Xác định vòng đời một đối tượng
Miêu tả đa hình (polymorphism)
Thực thi nạp chồng hàm
Xác định sự cần thiết nạp chồng toán tử
Mục tiêu
Slide 3 of 25Ver. 1.0
Object-Oriented Programming Using C#
Một hàm tạo là một kiểu đặc biệt của phương thức mà
được gọi khi chúng ta tạo một thể hiện mới của một lớp.
Một hàm tạo đươc sử dụng để khởi tạo các thành viên của
lớp.
Tên của hàm tạo trùng với tên của lớp chứa nó.
Thực thi hàm tạo - Constructors
Slide 4 of 25Ver. 1.0
Object-Oriented Programming Using C#
Một hàm tạo là hàm thành viên đặc biệt của lớp khi một
đối tượng của lớp được tạo.
Sự cần thiết của hàm tạo
Slide 5 of 25Ver. 1.0
Object-Oriented Programming Using C#
Hai kiểu của hàm tạo là:
Thể hiển của hàm tạo: Nó được gọi khi một thể hiển của lớp
được tạo. Những hàm tạo này được sử dụng để khởi tạo biến
thành viên của lớp.
Hàm tạo tĩnh: Nó được sử dụng để khởi tạo biến tĩnh của lớp.
Những biến này được tạo sử dụng từ khóa static và nó lưu
trữ giá trị có thể được chia sẻ bởi tất cả thể hiện của lớp.
Các kiểu của hàm tạo
Slide 6 of 25Ver. 1.0
Object-Oriented Programming Using C#
Một hàm tạo có thể được chỉnh sửa để chấp nhận giá trị
người sử dụng cung cấp khi chương trình chạy.
Đối tượng có thể khởi tạo sử dụng hàm tạo mặc định với
giá trị mặc định trong chương trình. Nhưng có thể có yêu
cầu các biến cần khởi tạo với giá trị người sử dụng cung
cấp.
Hàm tạo với tham số
Slide 7 of 25Ver. 1.0
Object-Oriented Programming Using C#
Hàm hủy la phương thức đặc biệt được sử dụng để hủy các
thể hiện của lớp trong bộ nhớ.
Một lớp chỉ có một hàm hủy.
Mục đích của hàm hủy là thực thi giải phóng bộ nhớ.
.NET Framework tự động chạy hàm hủy để giải phỏng đối
tượng trong bộ nhớ.
Thực thi hàm hủy - Destructors
Slide 8 of 25Ver. 1.0
Object-Oriented Programming Using C#
Một hàm hủy cùng tên với lớp nhưng có tiền tố dấu ngã ở
trước tên hàm hủy~ ,
Hàm hủy không thể kế thừa và nạp chồng.
Bộ thu hồi rác là quá trình tự động giải phóng bộ nhớ của
các đối tượng không được sử dụng.
Quyết định gọi hàm hủy được tạo bởi mọt chương trình đặc
biệt của C# được biết đến như bộ thu hồi rác (garbage
collector).
Quá trình của bộ thu hồi rác thực thi tự động. Điều này để
chắc chắn rằng:
Đối tượng đã được hủy
Chỉ đối tượng không sử dụng được hủy
Khai báo hàm hủy - Destructors
Slide 9 of 25Ver. 1.0
Object-Oriented Programming Using C#
C# cung các các phương thức sau để giải phóng thể hiện
của lớp từ bộ nhớ:
Finalize(): Nó là môt phương thức đặc biệt được gọi từ
class chứa nó hoặc từ lớp con. Hàm hủy Finalize() được
goi sau khi tham chiếu cuối cùng của đối tượng được giải
phóng trong bộ nhớ.
Dispose(): Phương thức này được gọi để giải phóng tài
nguyên, như là kết nối cơ sở dữ liệu, ngay khi đối tượng sử
dụng như là một tài nguyên không sử dụng bây giờ. Giao diện
(interface) IDisposable chứa phương thức Dispose(). Do
đó, để gọi phương thức Dispose() class phải được thực thi
thi từ interface IDisposable.
Khai báo hàm hủy – Destructors (tiếp)
Slide 10 of 25Ver. 1.0
Object-Oriented Programming Using C#
Xác định vòng đời của một đối tượng
Chúng ta cùng hiểu vòng đời của một đối tượng thông qua
ví dụ sau:
using System;
//Vòng đời của một đối tượng
namespace Objects
{
class TestCalculator
{
TestCalculator()
{
Console.WriteLine("Constructor Invoked");
}
Slide 11 of 25Ver. 1.0
Object-Oriented Programming Using C#
Xác định vòng đời của một đối tượng (tiếp)
Đối tượng Calc1 có
phạm vi hàm. Do đó
hàm tạo của nó được
gọi sau khi hàm
Main() bắt đầu.
Hàm hủy tất cả đối
tượng được gọi khi bộ
thu hồi rác được gọi.
~TestCalculator()
{
Console.WriteLine
("Destructor Invoked");
}
public static void
Main(string[] args)
{
Console.WriteLine("Main()
Begins");
TestCalculator Calc1 =
new TestCalculator();
Slide 12 of 25Ver. 1.0
Object-Oriented Programming Using C#
Xác định vòng đời của một đối tượng
{
Console.WriteLine("Inner Block Begins ");
TestCalculator Calc2 = new TestCalculator();
Console.WriteLine("Inner Block Ends");
}
Console.WriteLine("Main() ends");
}
}
}
Đối tượng Calc2 có
phạm vi khối. Đó đó,
hàm tạo được xử lý
sau khi khối nội bộ bắt
đầu.
Slide 13 of 25Ver. 1.0
Object-Oriented Programming Using C#
Xác định vòng đời của một đối tượng
Slide 14 of 25Ver. 1.0
Object-Oriented Programming Using C#
Trong lập trình hướng đối tượng - Object-Oriented
Programming (OOPs), đa hình cho phép một giao diện
được sử dụng cho nhiều hàm
Đa hình giảm sự phức tạp trong các hàm của một lớp trong
một chương trình.
Đa hình có thể hoặc là tĩnh, hoặc là động.
Giới thiệu về đa hình - Polymorphism
Slide 15 of 25Ver. 1.0
Object-Oriented Programming Using C#
Đa hình tĩnh đề cập tới một thực thể tồn tại trong nhiều
dạng trong cùng một lúc.
C# sử dụng hai phương thức để thực thi đa hình tĩnh. Đó là:
Nạp chồng hàm: phương pháp này cho phép sử dụng cùng
tên cho hai hoặc nhiều hàm. Mỗi định nghĩa lại một hàm phải
sử dụng các kiểu của tham số, tuần tự tham số, hoặc số tham
số.
Nạp chồng toán tử: Phương pháp này cho phép kiểu người
dung định nghĩa như là structures và classes để sử dụng nạp
chồng toán tử đối với các thao tác dễ dàng của các đối tượng
đó.
Đa hình tĩnh - Static Polymorphism
Slide 16 of 25Ver. 1.0
Object-Oriented Programming Using C#
Trong đa hình động, việc quyết định về hàm được xử lý
được tạo trong khi chạy chương trình.
Đa hình động có nhiều hữu dụng hơn đa hình tĩnh, nó cung
cấp nhiều sự mềm dẻo hơn cho tính toán các đối tượng.
C# sử dụng hai phương pháp để thực thi đa hình động:
Lớp trừu tượng - Abstract classes: là một kiểu đặc biệt của lớp
cơ sở bao gồm các thành viên lớp trừu tượng.
Hàm ảo - Virtual functions: Là hàm mà không thực sự tồn tại,
tuy nhiên, nó xuất hiện để trình bày một số phần của chương
trình.
Đa hình động - Dynamic Polymorphism
Slide 17 of 25Ver. 1.0
Object-Oriented Programming Using C#
Nạp chồng hàm được thực thi bằng cách xác định hai hoặc
nhiều hàm trong lớp với cùng tên hàm.
Trong nạp chồng hàm, mỗi định nghĩa hàm phải khác nhau
chữ ký hàm.
Thực thi nạp chồng hàm
Slide 18 of 25Ver. 1.0
Object-Oriented Programming Using C#
Chữ ký hàm được định nghĩa bởi:
Số tham số
Kiểu dữ liệu của tham số
Tuần tự tham số
Chữ ký hàm
Slide 19 of 25Ver. 1.0
Object-Oriented Programming Using C#
Hàm tạo cũng có thể có tham số, do đó nó có thể nạp
chồng.
Nạp chồng hàm tạo thường sử dụng trong C# để cung cấp
tính mềm dẻo trong khi tạo một đối tượng.
Nạp chồng hàm tạo
Slide 20 of 25Ver. 1.0
Object-Oriented Programming Using C#
Nạp chồng toán tử
Nạp chồng toán tử cung cấp thêm khả năng cho toán tử C#
khi nó được áp dụng cho kiểu dữ liệu người dùng định
nghĩa.
Chỉ tập định nghĩa trước của toán tử C# mới được nạp
chồng.
Slide 21 of 25Ver. 1.0
Object-Oriented Programming Using C#
Sự cần thiết phải nạp chồng toán tử
Để sử dụng toán tử với kiểu dữ liệu người dùng định nghĩa,
nó cần phải nạp chồng theo yêu cầu người lập trình.
Bảng sau miêu tả các toán tử có khả năng nạp chồng trong
C#.
Toán tử Miêu tả
+, -, ! , ~, ++ , -- Những toán tử một ngôi dành cho một toán hạng
+, -, * , /, % Toán tử hai ngôi dành cho nạp chồng hai toán hạng.
==, !=, , = Toán tử so sánh
&&, || Toán tử logic không thể nạp chồng trực tiếp, nhưng nó sử
dụng & và | để nạp chồng
+=, -=, *=, /=, %= Toán tử gán không thể nạp chồng.
=, ., ?:, ->, new, is,
sizeof, typeof
Toán tử không thể nạp chồng.
Slide 22 of 25Ver. 1.0
Object-Oriented Programming Using C#
Ví dụ: Hiển thị ngày tháng sử dụng nạp chồng hàm
Vấn đề đặt ra:
Bình phải phát triển một ứng dụng phần mềm cho trường
WRU. Ứng dụng sẽ chấp nhận số tháng bởi sinh viên và hiển
thị tên tháng bằng chữ và tổng số ngày của tháng đó.
Slide 23 of 25Ver. 1.0
Object-Oriented Programming Using C#
Giải pháp:
Để phát triển ứng dụng trên. Bình cần thực thi các nhiệm vụ
sau:
1. Tạo một ứng dụng console.
2. Dịch và chạy ứng dụng
Ví dụ: Hiển thị ngày tháng sử dụng nạp chồng hàm (tiếp)
Slide 24 of 25Ver. 1.0
Object-Oriented Programming Using C#
Trong mục này chúng ta đã học:
Hàm tạo là hàm thành viên của lớp và được gọi khi thể hiện
của lớp đó được tạo.
Hàm tạo cùng tên với class của nó.
Hàm hủy được gọi khi bất kỳ thể hiện của lớp không tồn tại.
Hàm hủy cùng tên với class của nó, nhưng có thêm tiền tố ~
(dấu ngã).
Hàm tạo là phương thức đặc biệt cho phép điều khiển qua
khởi tạo đối tượng.
Hàm hủy là phương thức đặc biệt mà sử dụng để thu hồi thể
hiện của class từ bộ nhớ.
Bộ thu hồi rác (Garbage collection) là quá trình tự động giải
phóng bộ nhớ của các đối tượng mà không được sử dụng
nữa.
Tổng kết
Slide 25 of 25Ver. 1.0
Object-Oriented Programming Using C#
Hàm hủy Finalize() được gọi sau khi tham chiếu của đối
tượng được giải phóng khỏi bộ nhớ.
Hàm Dispose() được gọi khi thu hồi tài nguyên, như là kết
nối cơ sở dữ liệu, tài nguyên hiện tại không sử dụng.
Thuật ngữ đa hình được lấy từ tiếng Hy Lạp ‘poly’ và
‘morphos’, có nghĩa là ‘nhiều’ và ‘hình dạng’.
Đa hình cho phép một giao diện sử dụng nhiều hàm khác
nhau.
Đa hình tĩnh đề cập tới một thực thể tồn ại theo nhiều hình
dạng khác nhau cùng một lúc.
Trong đa hình động, việc quyết định hàm nào xử lý được thực
thi khi mã được xử lý.
Tổng kết (tiếp)
Slide 26 of 25Ver. 1.0
Object-Oriented Programming Using C#
Nạp chồng hàm là quá trình sử dụng cùng tên cho hai hoặc
nhiều hàm trong trong class.
Số tham số, kiểu tham số, thứ tự tham số của hàm được gọi là
chữ ký của hàm.
Nạp chồng hàm tạo thường sử dụng trong C# để cung cấp
tính mềm dẻo trong khi tạo đối tượng.
Nạp chồng toán tử cung cấp thêm khả năng cho toán tử C#
khi nó được áp dụng cho kiểu dữ liệu người dùng định nghĩa.
Tổng kết (tiếp)
Các file đính kèm theo tài liệu này:
- bai_giang_ngon_ngu_lap_trinh_nang_cao_bai_3_thuc_thi_ham_tao.pdf