CodeGym /Các khóa học /C# SELF /Khái niệm về class và object

Khái niệm về class và object

C# SELF
Mức độ , Bài học
Có sẵn

1. Giới thiệu

Như bạn đã nghe, class là một mẫu (template), còn object là instance của nó.
Nhưng giờ là lúc đào sâu hơn về class và object nhé!

Hãy tưởng tượng bạn là kỹ sư thiết kế ở nhà máy ô tô. Thay vì lắp từng chiếc xe bằng tay, bạn tạo ra bản vẽ kỹ thuật – một hướng dẫn chung để lắp nhiều xe cùng loại. Trong bản vẽ này ghi rõ xe phải có động cơ, bánh xe, thân xe, màu sắc, và các chức năng nó thực hiện.

Bản vẽ này trong lập trình gọi là class.

Giờ tưởng tượng nhà máy sản xuất một loạt xe dựa trên bản vẽ đó. Mỗi chiếc là thật, chạy ngoài đường, có biển số, màu riêng, thậm chí có vài cài đặt cá nhân hóa. Nhưng tất cả đều lắp từ cùng một bản vẽ.

Những chiếc xe thật này trong lập trình gọi là object (hay instance của class).

Vậy nhớ nhé:

  • Class – giống như bản vẽ, mẫu, sơ đồ. Nó mô tả những dữ liệu mà một thứ gì đó có thể có (ví dụ: hãng, màu, số cửa) và những gì nó có thể làm (ví dụ: chạy, phanh, bấm còi). Class chỉ là mô tả, bản thân nó không chiếm nhiều bộ nhớ và không phải là thứ "sống".
  • Object – là "chiếc xe" cụ thể được lắp từ bản vẽ class. Nó là thực thể "sống" trong chương trình, chiếm bộ nhớ, có giá trị riêng cho dữ liệu (biển số, màu riêng) và có thể thực hiện các hành động đã mô tả trong class.

Nghe hơi trừu tượng nhỉ? Đừng lo, giờ mình sẽ giải thích kỹ hơn.

2. Class là gì?

Class là kiểu dữ liệu do người dùng định nghĩa, mô tả cách các object kiểu đó sẽ như thế nào: có đặc điểm gì (trạng thái/thuộc tính/field) và có thể thực hiện hành động gì (hành vi/phương thức/function).

Class xác định:

  • Field (biến) – dữ liệu lưu trong object.
  • Method (function) – hành động object có thể làm.
  • Property – method đặc biệt để truy cập dữ liệu.
  • Event – cơ chế thông báo (phần này nói sau).
  • Constructor – method đặc biệt để tạo object.

public class Person
{
    // Поля (данные)
    public string Name;
    public int Age;

    // Метод (действие)
    public void SayHello()
    {
        Console.WriteLine($"Xin chào! Tớ tên là {Name}, tớ {Age} tuổi.");
    }
}

Trong ví dụ này, mình khai báo class Person. Nó có hai field (NameAge) và một method SayHello(). Thế là đủ cho một class đơn giản.

3. Object là gì?

Object là instance của class, tức là thực thể cụ thể được tạo trong bộ nhớ dựa trên "bản vẽ" (class).

Khi bạn tạo biến kiểu Person, bạn có một object – với giá trị riêng cho từng field. Không chỉ là một người, mà ví dụ, một người tên là Johnny, 12 tuổi. Và khi nó chào bạn (gọi method SayHello()), nó "nói" thông tin về bản thân.


// Tạo object class Person
Person person1 = new Person();
person1.Name = "Alice";
person1.Age = 28;
person1.SayHello(); // => Xin chào! Tớ tên là Alice, tớ 28 tuổi.

// Tạo thêm một "người" nữa
Person person2 = new Person();
person2.Name = "Bob";
person2.Age = 32;
person2.SayHello(); // => Xin chào! Tớ tên là Bob, tớ 32 tuổi.

Mỗi object không chỉ là bản sao: nó là thực thể độc lập với dữ liệu riêng (trong ví dụ là tên và tuổi).

4. Sự khác biệt chính giữa class và object

Khác biệt chính:

  • Class – "bản vẽ", hướng dẫn, kiểu dữ liệu.
  • Object – đại diện cụ thể của kiểu đó; "ngôi nhà" thật được xây từ bản vẽ; "chiếc xe" được sản xuất từ bản vẽ.

Bạn có thể tạo bao nhiêu object của một class cũng được. Ví dụ, nếu có class Person, bạn có thể tạo cả triệu "người" trong chương trình.

Tại sao lại tiện và quan trọng?

Thử tưởng tượng chương trình không có class. Nếu có danh sách sinh viên, bạn sẽ phải lưu tên, tuổi, điểm số và các dữ liệu khác vào từng mảng riêng cho từng thuộc tính:

string[] studentNames = { "Sergey", "Grisha", "Masha" };
int[] studentAges = { 20, 19, 21 };

// Nếu muốn thêm thuộc tính nữa, lại phải thêm một mảng mới.
// Muốn đổi chỗ hai người thì đúng là ác mộng!

Dùng class, dữ liệu không bị rải rác mà được gom lại hợp lý:

public class Student
{
    public string Name;
    public int Age;
}

Student[] students = new Student[3];
students[0] = new Student { Name = "Sergey", Age = 20 };
students[1] = new Student { Name = "Grisha", Age = 19 };
students[2] = new Student { Name = "Masha", Age = 21 };

Dễ hiểu và tiện hơn nhiều! Thêm nữa, mỗi sinh viên giờ có thể có method riêng (ví dụ "chào hỏi" hoặc "tính điểm trung bình").

Hình minh họa: liên kết giữa class và object

+------------------+          +----------------+
|   class Person   |=========>|  person1:      | 
| (bản vẽ/kiểu)    |          |  Name = "Alice"|
|                  |         /|  Age = 28      |
+------------------+        / +----------------+
                          /
+------------------------/----------------------+
                        /
                  +----------------+
                  |  person2:      |
                  |  Name = "Bob"  |
                  |  Age = 32      |
                  +----------------+

5. Class và object dùng ở đâu trong thực tế?

Class và object là nền tảng cho mọi ứng dụng C#. Tất cả những gì bạn thấy trong .NET: cửa sổ, nút bấm, form, mảng, collection, kết nối database, log – đều là object được tạo từ các class nhất định.

Ví dụ:

  • Class Button – là hướng dẫn để tạo nút trên màn hình. Mỗi lần bạn tạo nút mới – đó là object của class.
  • Class Stream (trong hệ thống I/O): bạn có object để làm việc với file.
  • Class User bạn sẽ tự tạo để lưu thông tin người dùng – cũng là template như vậy.

Ngắn gọn về tên, modifier và quy ước

  • Class thường đặt tên viết hoa chữ cái đầu, ví dụ Person, Order, Product.
  • Biến thì viết thường, ví dụ person, user1, orderList.
  • Thường class để public – để dùng được ở mọi nơi trong project.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION