C# - Lớp học cho người mới bắt đầu

Xin chào các bạn tương lai của các lập trình viên! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các lớp C#. Đừng lo lắng nếu bạn chưa bao giờ viết mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, giải thích mọi thứ từng bước một. Vậy, chúng ta cùng nhảy vào nào!

C# - Classes

Lớp là gì?

Trước khi chúng ta bắt đầu, hãy hiểu lớp là gì. Hãy tưởng tượng một lớp như một bản vẽ để tạo ra các đối tượng. Nó giống như một khuôn bánh quy định hình dạng và đặc điểm của các bánh quy bạn sẽ làm. Trong lập trình, một lớp xác định các thuộc tính và hành vi mà các đối tượng của lớp đó sẽ có.

Định nghĩa một lớp

Hãy bắt đầu bằng cách tạo một lớp đơn giản. Chúng ta sẽ tạo một lớp Dog vì, à, ai lại không yêu chó nhỉ?

public class Dog
{
// Các thành viên của lớp ở đây
}

Đây là cấu trúc cơ bản của một lớp. Từ khóa public có nghĩa là lớp này có thể được truy cập từ các phần khác của chương trình của bạn. Trong dấu ngoặc vuông {}, chúng ta sẽ xác định các thành viên của lớp.

Thêm các thuộc tính

Các thuộc tính giống như đặc điểm của con chó của chúng ta. Hãy thêm một số thuộc tính:

public class Dog
{
public string Name;
public int Age;
public string Breed;
}

Bây giờ lớp Dog của chúng ta có tên, tuổi và giống loài. Những cái này được gọi là các trường hoặc thuộc tính của lớp.

Các hàm thành viên và封装

Các hàm thành viên (hoặc phương thức) là các hành động mà con chó của chúng ta có thể thực hiện. Hãy thêm một phương thức để con chó sủa:

public class Dog
{
public string Name;
public int Age;
public string Breed;

public void Bark()
{
Console.WriteLine("Woof! Woof!");
}
}

Phương thức Bark là một hành động đơn giản in ra "Woof! Woof!" lên console.

封装

Encapsulation giống như đặt các đặc điểm của con chó của bạn trong một quả bóng bảo vệ. Đó là cách để kiểm soát quyền truy cập vào các thành viên của lớp. Hãy thay đổi lớp của chúng ta để sử dụng封装:

public class Dog
{
private string name;
private int age;
public string Breed { get; set; }

public string Name
{
get { return name; }
set { name = value; }
}

public int Age
{
get { return age; }
set
{
if (value > 0)
age = value;
}
}

public void Bark()
{
Console.WriteLine("Woof! Woof!");
}
}

Bây giờ, nameage là riêng tư, và chúng ta truy cập chúng thông qua các thuộc tính công khai. Điều này cho phép chúng ta thêm logic, chẳng hạn như đảm bảo tuổi luôn dương.

Các hàm tạo trong C

Một hàm tạo là một phương thức đặc biệt được gọi khi bạn tạo một实例 mới của một lớp. Nó giống như thiết lập con chó của bạn khi bạn lần đầu tiên nhận nó. Hãy thêm một hàm tạo vào lớp Dog của chúng ta:

public class Dog
{
// ... mã trước đó ...

public Dog(string name, int age, string breed)
{
Name = name;
Age = age;
Breed = breed;
}
}

Bây giờ chúng ta có thể tạo một con chó mới như thế này:

Dog myDog = new Dog("Buddy", 3, "Labrador");

Các hàm hủy trong C

Các hàm hủy là các phương thức dọn dẹp tài nguyên khi một đối tượng không còn cần thiết nữa. Trong C#, chúng hiếm khi được sử dụng vì bộ thu gom rác xử lý quản lý bộ nhớ. Nhưng để đầy đủ, đây là cách bạn xác định một hàm hủy:

public class Dog
{
// ... mã trước đó ...

~Dog()
{
Console.WriteLine("Goodbye, " + Name + "!");
}
}

Hàm hủy này sẽ được gọi khi đối tượng chó bị hủy bởi bộ thu gom rác.

Các thành viên tĩnh của một lớp C

Các thành viên tĩnh thuộc về lớp itself, không phải bất kỳ thực thể cụ thể nào. Chúng được chia sẻ bởi tất cả các thực thể của lớp. Hãy thêm một thành viên tĩnh để theo dõi số lượng chó chúng ta đã tạo:

public class Dog
{
// ... mã trước đó ...

public static int DogCount = 0;

public Dog(string name, int age, string breed)
{
Name = name;
Age = age;
Breed = breed;
DogCount++;
}

public static void ReportDogCount()
{
Console.WriteLine("Total number of dogs: " + DogCount);
}
}

Bây giờ, mỗi lần chúng ta tạo một Dog, DogCount sẽ tăng lên. Chúng ta có thể gọi Dog.ReportDogCount() bất cứ lúc nào để xem chúng ta đã tạo bao nhiêu con chó.

Kết hợp tất cả lại

Hãy sử dụng lớp Dog của chúng ta trong một chương trình:

class Program
{
static void Main(string[] args)
{
Dog dog1 = new Dog("Buddy", 3, "Labrador");
Dog dog2 = new Dog("Max", 5, "German Shepherd");

Console.WriteLine(dog1.Name + " is a " + dog1.Breed);
dog1.Bark();

Console.WriteLine(dog2.Name + " is " + dog2.Age + " years old");
dog2.Bark();

Dog.ReportDogCount();
}
}

Chương trình này tạo hai con chó, hiển thị thông tin của chúng, làm chúng sủa và báo cáo tổng số con chó đã tạo.

Kết luận

Chúc mừng! Bạn vừa học xong cơ bản về các lớp C#. Chúng ta đã bao gồm việc định nghĩa các lớp, thêm các thuộc tính và phương thức, sử dụng các hàm tạo và hàm hủy, và thậm chí đã chạm vào các thành viên tĩnh. Nhớ rằng, thực hành là cách tốt nhất để trở nên hoàn hảo, vì vậy hãy thử tạo ra các lớp của riêng bạn và thử nghiệm với các thuộc tính và phương thức khác nhau.

Dưới đây là bảng tóm tắt các phương thức chính mà chúng ta đã thảo luận:

Phương thức Mô tả
Constructor Khởi tạo một instance mới của lớp
Destructor Dọn dẹp tài nguyên khi đối tượng bị hủy
Bark() Làm con chó sủa
ReportDogCount() Báo cáo tổng số con chó đã tạo

Tiếp tục lập trình, và sớm bạn sẽ tạo ra các chương trình phức tạp một cách dễ dàng. Học tập vui vẻ!

Credits: Image by storyset