Lập trình hướng đối tượng trong c#

Lập trình hướng đối tượng trong c# và nhưng vấn đề thực tế với cuộc sống.

  1. Lập trình hướng đối tượng là gì
  2. Tại sao lập trình hướng đối tượng quan trọng
  3. Lập trình hướng đối và cuộc sống thực tế
  4. Các khái niệm về lập trình hướng đối tượng

1. Lập trình hướng đối tượng là gì

OOP là viết tắt của Object-Oriented Programming dịch ra là lập trình hướng đối tượng. Lập trình hướng đối tượng là kỹ thuật lập trình sử dụng các đối tượng (objects) để xây dựng ứng dụng. Hầu hết các ngôn ngữ như: C#, PHP, Java, Ruby... đều hỗ trợ lập trình hướng đối tượng.

2. Tại sao lập trình hướng đối tượng quan trọng

Nếu ứng dụng lập trình hướng đối tượng một cách mềm dẻo.

  • Giúp phần mềm chất lượng tốt hơn với người dùng.
  • Tốc độ làm phần mềm nhanh hơn.
  • Các dòng code có thể kế thừa tốt giữa các lập trình viên, vì lập trình viên nào cũng lập trình theo kỹ thuật hướng đối tượng.
  • Nâng cấp bảo trì dễ dàng hơn.
  • Quy trình làm phần mềm khép kín hơn từ khâu phân tích đến code, tester đến thương mại phần mềm.

3. Chia sẽ quan điểm cá nhân của tôi về Lập trình hướng đối tượng.

Lập trình hướng đối tượng là 1 kỹ thuật lập trình, nên bạn có thể / không  ứng dụng vào công việc lập trình của bạn.

Một người ứng dụng lập trình hướng đối tượng thì không suy ra là phần mềm sẽ tốt hơn so với 1 người không dùng lập trình hướng đối tượng.

Điều này nó giống với một cầu thủ đá banh nắm được kỹ thuật nhiều chưa chắc đá banh thắng, mà phải là một người kinh nghiệm thi đấu nhiều quan trong hơn.

Lập trình hướng đối tượng giúp bạn tư duy chuyển từ nghiệp vụ thành những dòng code nhanh nhất.

Câu chuyện thực tế từ lập trình hướng đối tượng

Tôi có 1 người bạn làm phần mềm bằng vb6 thời xưa, khi làm phần mềm người bạn này không hề ứng dụng lập trình hướng đối tượng vào việc code VS và 1 người bạn học thạc sĩ bên ấn độ ngành phần mềm, hai người bạn lập trình viên này hiện tại đang ở Việt Nam

Kết quả là 2 người bạn làm sản phẩm bán ra thị trường thì người bạn thạc sĩ bán chỉ bằng 1/10 so với người bạn làm vb6. Điều đó cho bạn thấy là lập trình hướng đối tượng nó không phải là một phương pháp sẽ mang lại hiệu quả tuyệt đối, mà nó còn tùy vào sự ứng dụng linh hoạt mềm dẻo khi code, nó cũng giống như người học võ công trong các bộ phim kiếm hiệp mà chúng ta hay xem, nhân vật trong phim 'Trương Vô Kỵ' trong phim Ỷ Thiên Đồ Long Ký là một minh chứng.

Tóm lại việc ứng dụng lập trình hướng đối tượng vào phần mềm nó tùy thuộc vào sự mềm dẻo, điều đó có nghĩa bạn có phải chú tâm vào đi tìm các nguyên lý lập trình hướng đối tượng và đó là sự hiểu biết về nghiệp vụ của bạn đang làm.

 

4. Các khái niệm về lập trình hướng đối tượng

Để ứng dụng tốt lập trình hướng thì việc đầu tiên bạn cần nắm các khái niệm về lập trình hướng đối tượng

Khái niệm đầu tiên phải bàn đến là Class, class là 1 kiểu dữ liệu, là 1 cái bản phân tích giúp mô hình hóa các đối tượng thực tế.

Class sẽ có các thuộc tính (properties) và các phương thức (methods) tương ứng với thuộc tính và hành động thực tế bên ngoài.

//(C# code)
public class ConNguoi
{
       private string Ten {get;set;}
       private DateTime NgaySinh {get;set;}
       private string DiaChi {get;set;}
       public void HoSoCaNhan()
       {
              //Do something
       }       
}

 

Tính kế thừa (Inheritance)

Bạn khai báo lớp ConVat
Sau đó từ lớp ConVat bạn tạo thêm các lớp ConMeo, ConCho ...

//(C# code)
public class ConVat
{
       private string Ten {get;set;}
       private int SoChan {get;set;}      
}
public class ConCho:ConVat
{
       private string GiongCho {get;set;}
        
}
public class ConHeo:ConVat
{
       private bool LaHeoRung {get;set;}        
}
public class Program
{
       public static void Main(string[] args)
       {
               ConVat _cv1 = new ConCho();
               _cv1.GiongCho="Cho Nhật";
               ConVat _cv2 = new ConHeo();
               _cv1.LaHeoRung=false;
              
               Console.Read();
       }
}

 

 

Tính đa hình (Polymorphism)

//(C# code)


public class NhanVien()
{
    public object GetThongTin(int idNhanVien)
    {
    //To do something
    }

    public object GetThongTin(string soCCCD)
    {
    //To do something
    }

    public object GetThongTin(string hoten,string idHoKhau)
    {
    //To do something
    }
}

//(C# code)


public class OTo //Base class
{
    public decimal getTieuHaoNhienLieu()
    {
        //To do something
    }
}

public class Hyundai: OTo
{
    public decimal getTieuHaoNhienLieu()
    {
        //To do something
    }
}

public class Honda: OTo
{
    public decimal getTieuHaoNhienLieu()
    {
        //To do something
    }
}

public class Program
{
       public static void Main(string[] args)
       {
               OTo _oto_1 = new Hyundai();
               Console.WriteLine(_oto_1.getTieuHaoNhienLieu());
               OTo _oto_2 = new Honda();
               Console.WriteLine(_oto_2.getTieuHaoNhienLieu());
               Console.Read();
       }
}