C# OOP

Giới thiệu về Lập trình Hướng Đối Tượng (OOP) trong C#

Lập trình Hướng Đối Tượng (Object-Oriented Programming - OOP) là một phương pháp lập trình dựa trên việc sử dụng các đối tượng để mô phỏng các khái niệm trong thế giới thực. C# là một ngôn ngữ lập trình mạnh mẽ hỗ trợ OOP, cho phép lập trình viên xây dựng các ứng dụng phức tạp với tính linh hoạt và khả năng tái sử dụng mã nguồn cao.

Định nghĩa OOP trong C#

OOP trong C# được xây dựng dựa trên bốn nguyên tắc chính:

  • Đóng gói (Encapsulation): Là việc nhóm dữ liệu và phương thức thao tác trên dữ liệu đó thành một đơn vị duy nhất gọi là lớp (class). Điều này giúp bảo vệ dữ liệu và giảm thiểu sự can thiệp từ bên ngoài.
  • Kế thừa (Inheritance): Cho phép một lớp mới kế thừa thuộc tính và phương thức từ một lớp hiện có, giúp tái sử dụng mã và tạo ra mối quan hệ giữa các lớp.
  • Đa hình (Polymorphism): Là khả năng sử dụng một phương thức hoặc thuộc tính ở nhiều dạng khác nhau, thường thông qua việc ghi đè phương thức (method overriding) hoặc dùng giao diện (interface).
  • Trừu tượng (Abstraction): Là việc ẩn đi các chi tiết phức tạp và chỉ cung cấp những thông tin cần thiết cho người dùng.

Cú pháp cơ bản trong C# OOP

Lớp và Đối tượng

Lớp là một bản thiết kế cho các đối tượng, trong khi đối tượng là một thực thể được tạo ra từ lớp. Cú pháp để định nghĩa một lớp trong C# như sau:

class TenLop
{
    // Thuộc tính (properties)
    public int ThuocTinh1 { get; set; }
    
    // Phương thức (methods)
    public void PhuongThuc1()
    {
        // Thực hiện một số hành động
    }
}

Để tạo một đối tượng từ lớp, bạn có thể làm như sau:

TenLop doiTuong = new TenLop();
doiTuong.ThuocTinh1 = 100;
doiTuong.PhuongThuc1();

Kế thừa

C# hỗ trợ kế thừa qua từ khóa `:`, cho phép lớp con kế thừa từ lớp cha. Ví dụ:

class LopCha
{
    public void PhuongThucCha()
    {
        // Thực hiện một số hành động
    }
}

class LopCon : LopCha
{
    public void PhuongThucCon()
    {
        // Thực hiện một số hành động
    }
}

Khi tạo đối tượng của lớp con, bạn cũng có quyền truy cập vào các phương thức của lớp cha:

LopCon doiTuongCon = new LopCon();
doiTuongCon.PhuongThucCha(); // Gọi phương thức của lớp cha
doiTuongCon.PhuongThucCon(); // Gọi phương thức của lớp con

Đa hình

Đa hình thường được thực hiện thông qua việc ghi đè phương thức. Ví dụ:

class DongVat
{
    public virtual void Keu()
    {
        Console.WriteLine("Dong vat keu");
    }
}

class Cho : DongVat
{
    public override void Keu()
    {
        Console.WriteLine("Gau gau");
    }
}

class Meo : DongVat
{
    public override void Keu()
    {
        Console.WriteLine("Meo meo");
    }
}

Khi bạn gọi phương thức `Keu` từ các đối tượng khác nhau, nó sẽ cho ra kết quả khác nhau:

DongVat myCho = new Cho();
DongVat myMeo = new Meo();

myCho.Keu(); // In ra "Gau gau"
myMeo.Keu(); // In ra "Meo meo"

Kết luận

C# OOP giúp lập trình viên tổ chức mã nguồn một cách có cấu trúc và linh hoạt hơn. Với các khái niệm như lớp, đối tượng, kế thừa, đa hình, và trừu tượng, bạn có thể phát triển các ứng dụng phức tạp và dễ bảo trì. Hi vọng rằng bài viết này sẽ giúp bạn bắt đầu với OOP trong C# và khám phá thêm những khả năng mạnh mẽ mà ngôn ngữ này mang lại.