HOTLINE: + (123) 1800-567-8990
Mon - Fri: 9:00 - 19:00
  • English
  • Việt Nam
Blog

Cơ bản về OOP (Object Oriented Programming) trong C#

  • January 5, 2019
  • Ly
  • Blog, C#
  • 0 comments

OOP hiện vẫn đang là một trong những khái niệm cơ bản nhất đối với các coder


https://www.techartmis.comNếu các bạn là dân lập trình thì có thể các bạn đã biết về khái niệm OOP này. Tại sao ta lại cần biết về OOP? Có rất nhiều lý do để ta cần đến sự hiện diện của OOP, đại loại như:

  • Dễ quản lý và sửa chữa.
  • Dễ đọc code hơn.
  • Code sẽ có nghĩa hơn và logic hơn.
  • Rút ngắn gọn code lại hơn và dễ cập nhập hơn.

 

Các bạn hãy tưởng tượng về căn phòng của một thằng con trai, nó vô cùng bừa bộn và dơ. Sẽ rất khó cho người khác khi mà họ muốn tìm một vật gì đó hoặc thậm chí khó cho chính chủ phòng. OOP sẽ giúp cho coder giải quyết vấn đề này, nó giống như một hệ thống mà người dùng dùng để sắp xếp mọi thứ 1 cách logic và ngăn nắp hơn vậy, rất thuận lợi cho việc tìm kiếm và nâng cấp thậm chí là sửa lỗi.

Techartmis - Cơ bản về OOP (Object Oriented Programming) trong C#

Techartmis – Cơ bản về OOP (Object Oriented Programming) trong C#

Do đó khái niệm OOP sẽ giúp cho coder rất nhiều, bằng cách chia nhỏ hệ thống thành nhiều phần ra, điều này hộ trợ rất lớn trong việc làm việc nhóm cũng như phát triển một hệ thống lớn hoặc có tiềm năng lớn hơn.

Trong OOP chúng ta bao gồm 4 khái niệm chính đó là: tính đóng gói (Encapsulation), tính kế thừa (Inheritance), tính trừu tượng (Abstraction) và tính đa hình (Polymorphism).

Tính đóng gói (Encapsulation)

Đây là một trong những tính dễ sử dụng nhất trong lập trình. Như cái tên, khi chúng ta sử dụng đặc tính này của OOP, chúng ta đang đóng gói lại một phần code của mình và có thể sử dụng lại nhiều lần chỉ bằng việc gọi tên thay vì phải code nhiều lần.

 

Lưu ý, ta có thể thậm chí gọi tên của chính hàm đó trong chính nó, hoặc trong 1 hàm khác. Tuy nhiên, nếu ta gọi chính bản thân nó trong chính nó thì ta sẽ tạo ra 1 vòng lặp vô hạn, và vòng lặp này chỉ dừng khi ta tạo ra một điều kiện nào đó để dừng chính nó lại.

Tính kế thừa (Inheritance)

Trong đời sống khi ta nhắc đến vấn đề kế thừa, ta thường nghĩ đến vấn đề gia sản cả về tinh thần lẫn vật chất từ một người nào đó, tương tự như vậy, tính kế thừa trong OOP cũng thừa kế từ một lớp cha, còn được gọi là lớp cơ bản hơn.

Techartmis - Cơ bản về OOP (Object Oriented Programming) trong C#

Techartmis – Cơ bản về OOP (Object Oriented Programming) trong C#

Sau khi lớp con kế thừa từ lớp cha, lớp con có thể có một vài đặc điểm từ người cha và những đặc điểm riêng của chính mình. Bằng cách sử dụng tính kế thừa, coder có thể rút ngắn lại những dòng code mà mình viết bằng cách tập trung lại những đặc điểm chung của vài lớp con để tạo nên một lớp cơ bản và cho những lớp con đó kế thừa lại.

Trong C#, ta sử dụng tính kế thừa bằng cách sử dụng từ khóa “:” và tên của lớp cơ bản để trỏ về.

Tuy nhiên, trong C#, một lớp con chỉ có khả năng kế thừa từ một lớp cơ bản và đây là một trong những yếu điểm của C# hiện nay. Tuy nhiên, để khắc phục vấn đề đó, C# cũng có hộ trợ một cách thức khác, khá là tương tự với tính kế thừa của OOP để giải quyết tình trạng này, đó là interface, trong bài viết này mình sẽ không trình bày về interface mà sẽ được trình bay trong một bài viết ngắn khác.

Tính trừu tượng (Abstraction)

Trong nhiều trường hợp khi ta lập trình, nhất là khi ta muốn hoạt động trong những lớp kế thừa cùng một lớp cha. Có một số trường hợp thường xuyên xảy ra đó là khi ta có những lớp con có cùng một tên hàm nhưng lại có những cách thức hoạt động riêng.

OOP trong C# cũng có hộ trợ ta một cách thức để giải quyết vấn đề đó, đó là tính trừu tượng. Để sử dụng được tính trừu tượng (Abstraction) trong C#, ta phải khai báo tên lớp có từ kháo Abstract đi cùng. Và đối với những hàm mà những lớp con có kế thừa nhưng lại không có điểm chung nào về nội dung, ta có thể sử dụng từ khóa abstract cho hàm đó với điều kiện là hàm đó là hàm rỗng. Khi lớp con kế thừa hàm abstract từ lớp cha, thì lớp con phải khai báo từ khóa Override và nội dung của chính nó.

Khi ta sử dụng tính trừu tượng (Abstraction), đặc biệt là khi ta sử dụng Abstract method, ta cần phải lưu ý rằng, nếu lớp cha có hàm abstract thì lớp con bắt buộc phải override hàm đó dù muốn hay không.

Lời Kết

Qua bài viết này, cơ bản là bạn đã hiểu một phần về ba khái niệm đóng gói, kế thừa và trừu tượng của OOP trong C#.

Bài kế tiếp mình sẽ tiếp tục nói về tính chất cuối cùng của OOP trong C# đó là tính đa hình và một vài cách sử dụng của từng tính chất với mức độ chi tiết hơn.

Nếu có thắc mắc gì về những vấn đề hoặc kiến thức đã nêu trong bài viết thì các bạn hãy để lại comment, mình sẽ cố gắng trả lời sớm nhất có thể.

Leave a comment