Nội dung
C# là một ngôn ngữ lập trình hướng đối tượng
C# hỗ trợ đầy đủ các đặc điểm của lập trình hướng đối tượng bao gồm các tính chất: đóng gói, kế thừa, đa hình:
- Đóng gói là sự gom nhóm các thuộc tính, phương thức và những thành phần vào một đơn vị hoặc đối tượng.
- Kế thừa được mô tả là cho phép tạo lớp mới dựa trên lớp đã có.
- Đa hình có nghĩa là bạn có thể có nhiều lớp khác nhau được sử dụng thay thế cho nhau, mặc dù mỗi lớp sử dụng cùng các thuộc tính hoặc phương thức nhưng khác nhau về cách thực hiện.
Lớp và đối tượng
Lớp là kiểu dữ liệu của một tập hợp các đối tượng và đối tượng chính là một thể hiện của lớp mô tả đó. Vì vậy, việc tạo ra đối tượng chính là việc khởi tạo đối tượng đó.
Để định nghĩa một lớp, chúng ta khai báo như sau, trong C#:
public class BankAccount { }
Để tạo một đối tượng của một lớp, chúng ta khai báo như sau, trong C#:
BankAccount bankAccount = new BankAccount();
Thành phần của lớp
Mỗi lớp có các thành phần khác nhau bao gồm các thuộc tính mô tả dữ liệu của lớp, các phương thức xác định hành vi của lớp và các sự kiện cung cấp liên lạc giữa các lớp và đối tượng khác nhau
Thuộc tính và trường
Các trường và thuộc tính thể hiện thông tin của đối tượng. Các trường như là các biến có thể được đọc hoặc gán dữ liệu trực tiếp tùy thuộc vào phạm vi truy cập.
Định nghĩa trường dữ liệu number có thể được truy cập bởi các đối tượng của lớp
class BankAccount { string number; }
Các thuộc tính có bộ truy cập get và set, cung cấp nhiều quyền kiểm soát hơn về cách các giá trị được gán hoặc trả về.
Thuộc tính được tạo tự động như sau:
class BankAccount { public string Number { get; set; } }
Nếu bạn cần thực hiện một số thao tác bổ sung để đọc và ghi giá trị thuộc tính, hãy xác định trường để lưu trữ giá trị thuộc tính và cung cấp logic cơ bản để gán và truy xuất nó.
class BankAccount { private string number; public string Number { // Return the value stored in a field. get => number; // Store the value in the field. set => number = value; } }
Phương thức
Phương thức là hành động mà đối tượng có thể thực hiện.
Dưới đây là định nghĩa 2 phương thức của một lớp: MakeDeposit và MakeWithdrawal.
public class BankAccount { public string Number { get; } public string Owner { get; set; } public decimal Balance { get; } public void MakeDeposit(decimal amount, DateTime date, string note) { } public void MakeWithdrawal(decimal amount, DateTime date, string note) { } }
Một lớp có thể triển khai các phương thức nạp chồng, cùng tên phương thức nhưng khác nhau về số lượng hoặc kiểu dữ liệu tham số.
public void MakeDeposit(decimal amount, DateTime date, string note) { } public void MakeDeposit(decimal amount, DateTime date) { }
Hàm khởi tạo
Hàm khởi tạo là phương thức của lớp được thực thi ngay khi đối tượng được khởi tạo. Hàm khởi tạo thường được dùng để khởi tạo giá trị cho các thuộc tính và trường. Hàm khởi tạo chỉ được thực hiện một lần khi đối tượng được khởi tạo. Hơn nữa, mã lệch của hàm này luôn được chạy trước bất kỳ mã lệnh nào của một lớp. Bạn vẫn có thể tạo hàm tạo nạp chồng tương tự như cách làm với phương thức của lớp.
Dưới đây là hàm khởi tạo BankAccount, với hai tham số name và initialBalance.
public class BankAccount { public string Number { get; } public string Owner { get; set; } public decimal Balance { get; } private static int accountNumberSeed = 1234567890; public BankAccount(string name, decimal initialBalance) { this.Number = accountNumberSeed.ToString(); accountNumberSeed++; this.Owner = name; Balance = initialBalance; } }
Hàm huỷ
Hàm huỷ được sử dụng để huỷ các thể hiện (đối tượng) của lớp. Trình thu gom rác tự động (the garbage collector) của .NET Framework sẽ quản lý việc cấp phát và giải phóng bộ nhớ cho các ứng ụng. Tuy nhiên, trong một số trường hợp, bạn cũng cần các công cụ để chủ động dọn sạch mọi tài nguyên không được quản lý do ứng dụng tạo ra. Chỉ có một hàm huỷ được định nghĩa cho một lớp.
Dưới đây là hàm huỷ ~BankAccount của lớp BankAccount.
public class BankAccount { public string Number { get; } public string Owner { get; set; } public decimal Balance { get; } private static int accountNumberSeed = 1234567890; public BankAccount(string name, decimal initialBalance) { this.Number = accountNumberSeed.ToString(); accountNumberSeed++; this.Owner = name; Balance = initialBalance; } ~BankAccount() { Console.WriteLine("Finalizing object"); } }
Sự kiện
Sự kiện cho phép một lớp hoặc đối tượng thông báo cho lớp hoặc đối tượng khác khi có điều gì đó xảy ra. Để hiểu sâu hơn về sự kiện, bạn hãy tìm hiểu nâng cao hơn trong bài khác.
ĐỌC THÊM CÁC TÀI LIỆU, HƯỚNG DẪN HỌC LẬP TRÌNH C# KHÁC TẠI ĐÂY
TÌM HIỂU VỀ KHÓA HỌC .NET TẠI CODEGYM – TRỞ THÀNH LẬP TRÌNH VIÊN CHUYÊN NGHIỆP TRONG VÒNG 6 THÁNG
0 Lời bình