Chương 18: OOP – Object oriented programming

Cùng tìm hiểu khái niệm quan trọng nhất trong lập trình - hướng đối tượng.

Tóm tắt chương trước

Bạn và Kurobo bất ngờ rơi vào bẫy của di tích. Thật may, bạn có thể giải được câu đố trên bệ đá và tiến vào căn phòng phía sau.

Kiến thức chương này

  • Hướng đối tượng (object oriented) về cơ bản là phân bớt công việc cho những đối tượng (object) khác thay vì một mình làm hết tất cả.
  • Cách code sử dụng hướng đối tượng được gọi là OOP – Object oriented programming.
  • Trong C#, tất cả các object đều thuộc về class hoặc type nào đó.
  • OOP có tổng cộng 4 nguyên lí cơ bản: Tính đóng gói – Encapsulation, Tính trừu tượng – Abstraction, Tính kế thừa – Inheritance và Tính đa hình – Polymorphism.

Cốt truyện

*hộc hộc*

Bạn nằm dưới sàn và thở một cách nặng nhọc. Không thể tin rằng bạn vừa mới thoát khỏi tay tử thần.

“C-Chủ nhân, chúng ta còn sống!?… hehe… hehehe…” – Kurobo ôm chầm lấy bạn.

Bạn kéo Kurobo ra và “thuyết giảng mạnh mẽ”.

*tạm thời che đi những ngôn từ đó*

Rút kinh nghiệm sâu sắc.

Rút kinh nghiệm sâu sắc.

Rút kinh nghiệm sâu sắc.

Điều quan trọng phải nhắc lại ba lần!

Object Oriented – Hướng đối tượng

Hãy tưởng tượng rằng, bạn là một người rất đỉnh. Một mình bạn có thể tự làm được một game bất kì. Bạn có thể code, vẽ, làm nhạc, animation, làm FX, thiết kế,… không có chuyện gì có thể cản chân bạn.

Bạn bắt tay vào thử làm ngay một game đơn giản, chỉ vài tháng sau, bạn đã hoàn thành! (xin chúc mừng ^o^).

Thấy cũng đơn giản, lần này, bạn quyết định chơi lớn. Tự làm một game AAA!

Sau khi tính toán khối lượng công việc, bạn nhận ra, phải mất tới… 100 năm mới có thể hoàn thành!

Có vẻ bạn chưa làm xong thì đã hẻo. Làm một mình không ổn rồi, bạn phải tìm thêm đồng đội, và chia sẻ công việc với họ.

Đó cũng chính là câu chuyện khởi đầu về object oriented – hướng đối tượng.

Khi yêu cầu đề bài ngày càng phức tạp, đoạn code của chúng ta sẽ ngày càng dài. Chưa tính đến tốc độ chạy của chương trình sẽ ngày càng chậm, việc bảo trì, nâng cấp hoặc sửa chữa cũng là những điều cực kì khó nhằn.

Thay vì nhét tất cả vào một file, người ta sẽ chia đoạn code thành nhiều phần nhỏ hơn được gọi là các “object“. Mỗi object chỉ xử lí nhiệm vụ của riêng nó, chúng kết hợp với nhau để giải quyết bài toán chung.

Sự “kết hợp với nhau” ở đây chính là chìa khoá của object oriented.

Trở lại thí dụ trên, giả sử bạn đã chia sẻ công việc với những người khác rồi nhưng mỗi người chỉ chăm chăm hoàn thành phần việc của mình, không giao tiếp, không làm việc với nhau thì game cũng sẽ không thể hoàn thành.

Các object cũng giống như vậy. Chúng làm việc với nhau thông qua hai hình thức: method (phương thức) và variable (biến).

Object – đối tượng – là gì?

Một object sẽ chứa method (phương thức) và variable (biến). Tất nhiên chúng có thể chứa một trong hai, nhưng hầu hết là vậy.

Trong C#, tất cả các object đều thuộc về class hoặc type nào đó.

Một class có thể có nhiều object. Object của class được gọi là một instance – thực thể. Thực thể là sự xuất hiện cụ thể của object.

Chẳng hạn, ta có class Mèo. Trong class Mèo sẽ có các object cụ thể như: Mèo mun, Mèo mướp, Mèo xiêm, Mèo vàng…

Các object có thể tương tác với nhau thông qua method hoặc variable của nhau.

Chẳng hạn, Mèo mun và Mèo xiêm là 2 object. Mỗi object đều có một biến là hp (hit point – máu), và dmg (damage – sát thương). Nếu chúng đánh nhau, Mèo mun sẽ nhận dmg của Mèo xiêm và ngược lại, Mèo xiêm nhận dmg từ Mèo mun.

Hai object lúc này phải tương tác với nhau mới có thể biết lượng sát thương mà mình phải nhận vào là bao nhiêu.

OOP: Object oriented programming – lập trình hướng đối tượng

OOP là việc sử dụng concept object oriented vào trong lập trình. OOP giúp ta dễ dàng giải quyết những bài toán phức tạp theo một cách có hệ thống.

OOP giúp giải quyết nhiều vấn đề phức tạp trong Vampire Survival: cách sinh quái, tốc độ di chuyển, vũ khí, hiệu ứng xấu, hệ thống sức mạnh,…

OOP có tổng cộng 4 nguyên lí cơ bản:

  1. Tính đóng gói – Encapsulation
  2. Tính trừu tượng – Abstraction
  3. Tính kế thừa – Inheritance
  4. Tính đa hình – Polymorphism

Tuy mạnh mẽ, nhưng OOP lại rất nặng về mặt tư duy, về mặt này các bạn sẽ cần thời gian để tự trau dồi cho riêng mình.

Bây giờ, hãy tiếp tục cuộc hành trình nào!

Quest: Thế giới trong sách

Bạn và Kurobo muốn nghỉ ngơi thêm một chút, tiện thể bổ sung thêm một vài ma thuật phòng thân.

Và rồi, điều gì tới cũng phải tới.

Cuốn cổ thư đột nhiên phát sáng, kéo bạn vào thế giới của nó.

“Có thể giảm độ sáng chút không!?”

Tiếng hét của bạn vang vọng trong căn phòng…

Quest: Thế giới trong sách ✦✧✧✧✧

Hãy ôn lại kiến thức nhé.

/3
You must log in to pass this quiz.

Chương Trước | Tổng quan | Chương Kế

Kurrwo

Công nhân👷gõ 💬 văn bản ⌨️ trò chơi 🎮 điện tử 📱 👏👏👏

Post navigation

Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments