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ý

pdf26 trang | Chia sẻ: huongthu9 | Lượt xem: 454 | Lượt tải: 0download
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:

  • pdfbai_giang_ngon_ngu_lap_trinh_nang_cao_bai_3_thuc_thi_ham_tao.pdf