Một số thuật ngữ cơ bản trong lập trình hướng đối tượng
Hãy cùng dùng ví dụ xây nhà để giải thích các thuật ngữ trong lập trình hướng đối tượng nhé!
Các thuật ngữ cơ bản
-
Class (Lớp): Bản thiết kế cho một loại nhà cụ thể. Ví dụ: "Biệt thự 2 tầng", "Nhà cấp 4", "Chung cư". Bản thiết kế này định nghĩa các đặc điểm chung của loại nhà đó.
-
Type (Kiểu): Loại nhà cụ thể. Ví dụ, "Biệt thự 2 tầng" là một type nhà. Nó cho biết ngôi nhà thuộc loại nào, dựa trên bản thiết kế (Class).
-
Properties (Thuộc tính): Đặc điểm của một ngôi nhà. Ví dụ: số phòng ngủ, số phòng tắm, màu sơn, diện tích, địa chỉ. Mỗi ngôi nhà cụ thể sẽ có giá trị riêng cho các thuộc tính này.
-
Methods (Phương thức): Hành động mà ngôi nhà có thể thực hiện. Ví dụ: "mở cửa", "đóng cửa", "bật đèn", "tắt đèn". Đây là những chức năng của ngôi nhà.
-
Instance (Thực thể): Một ngôi nhà cụ thể được xây dựng dựa trên bản thiết kế (Class). Ví dụ, nhà của bạn là một instance của "Biệt thự 2 tầng". Nó có các thuộc tính cụ thể (3 phòng ngủ, 2 phòng tắm, màu sơn trắng...) và có thể thực hiện các phương thức (mở cửa, đóng cửa...).
-
Declaration (Khai báo): Thông báo về việc bạn sẽ xây một loại nhà nào. Tương tự như việc đăng ký giấy phép xây dựng, bạn phải khai báo type nhà bạn muốn xây. Ví dụ: "Tôi sẽ xây một Biệt thự 2 tầng". Lúc này, bạn chỉ mới khai báo chứ chưa xây dựng gì cả.
-
Initialization (Khởi tạo): Bắt đầu quá trình xây dựng ngôi nhà. Bạn đổ móng, xây tường, lợp mái... Đây là bước tạo ra một instance cụ thể từ bản thiết kế (Class). Ví dụ: Bạn bắt đầu xây dựng ngôi biệt thự 2 tầng của mình.
-
Enumeration (Liệt kê): Một tập hợp các giá trị cố định, rõ ràng. Ví dụ: Hướng nhà (Đông, Tây, Nam, Bắc), Loại mái (Ngói, Tôn, Bê tông), Màu sơn (Trắng, Xanh, Vàng...). Bạn chỉ có thể chọn một trong các giá trị này cho thuộc tính tương ứng. Không thể có hướng nhà "Tây Bắc" nếu bạn chỉ định nghĩa enum HuongNha { case Dong, Tay, Nam, Bac }.
Các thuật ngữ nâng cao
-
Encapsulation (Đóng gói): Việc che giấu các chi tiết triển khai bên trong của ngôi nhà và chỉ hiển thị ra bên ngoài những phần cần thiết. Ví dụ: người bên ngoài chỉ cần biết cách sử dụng công tắc đèn, chứ không cần biết hệ thống dây điện bên trong hoạt động như thế nào. Trong lập trình, điều này giúp bảo vệ dữ liệu và tăng tính linh hoạt khi bảo trì.
-
Inheritance (Kế thừa): Khả năng tạo ra một bản thiết kế nhà mới dựa trên bản thiết kế đã có. Ví dụ, bạn có thể thiết kế "Biệt thự hiện đại" dựa trên bản thiết kế "Biệt thự 2 tầng" có sẵn, kế thừa các đặc điểm chung và thêm vào các đặc điểm riêng (như hệ thống năng lượng mặt trời, bể bơi...). Trong lập trình, kế thừa giúp tiết kiệm thời gian và công sức khi tạo ra các class mới.
-
Polymorphism (Đa hình): Khả năng một hành động có thể thực hiện theo nhiều cách khác nhau tùy thuộc vào đối tượng cụ thể. Ví dụ, hành động "mở cửa" có thể khác nhau tùy thuộc vào loại cửa: cửa chính mở bằng chìa khóa, cửa sổ mở bằng tay quay, cửa garage mở bằng điều khiển từ xa. Trong lập trình, đa hình giúp code linh hoạt và dễ mở rộng.
-
Abstraction (Trừu tượng): Tập trung vào các đặc điểm chung của các loại nhà, bỏ qua các chi tiết cụ thể không cần thiết. Ví dụ, khi nói về "Nhà ở", ta quan tâm đến các đặc điểm chung như có mái che, có tường, có cửa... chứ không cần quan tâm đến kiểu nhà cụ thể là biệt thự hay nhà cấp 4. Trong lập trình, trừu tượng giúp đơn giản hóa thiết kế và tăng tính tổng quát.
-
Interface (Giao diện): Định nghĩa một tập hợp các hành động mà một đối tượng phải thực hiện, nhưng không quy định cách thực hiện. Ví dụ, "Nhà thông minh" có thể có giao diện "Điều khiển bằng giọng nói", nhưng cách triển khai giao diện này có thể khác nhau tùy thuộc vào nhà sản xuất. Trong lập trình, interface giúp đảm bảo tính tương thích giữa các đối tượng khác nhau.
-
Composition (Hợp thành/Tổ hợp): Tạo ra một đối tượng phức tạp bằng cách kết hợp nhiều đối tượng đơn giản hơn. Ví dụ, một ngôi nhà được hợp thành từ nhiều phần: phòng khách, phòng ngủ, nhà bếp, nhà vệ sinh... Mỗi phần lại có thể được hợp thành từ các đối tượng nhỏ hơn nữa. Trong lập trình, composition giúp tạo ra các hệ thống phức tạp một cách linh hoạt và dễ quản lý.
Thứ tự trừu tượng tăng dần:
Class/Object/Properties/Methods -> Encapsulation -> Inheritance -> Polymorphism -> Abstraction -> Interface -> Composition.
Tóm lại:
Bạn có một bản thiết kế nhà (Class). Bản thiết kế này định nghĩa kiểu nhà (Type) và các đặc điểm (Properties) cũng như chức năng (Methods) của nó. Khi bạn bắt đầu xây một ngôi nhà thực sự (Initialization), bạn tạo ra một thể hiện (Instance) của bản thiết kế đó. Trước khi xây, bạn phải khai báo (Declaration) loại nhà bạn muốn xây. Cuối cùng, Enumeration giúp bạn định nghĩa một tập hợp các giá trị cố định cho một số thuộc tính nhất định.