Thứ Bảy, 20 tháng 4, 2024

1. Lập trình hướng đối tượng phần 1

Không có sự bắt buộc nào, nói chung bạn hoàn toàn có thể bỏ qua C để tiến thẳng lên C++, tuy nhiên, nếu được, bạn nên coi qua lập trình C.


Từ C, qua C++, sự khác nhau lớn nhất nằm ở khái niệm về cách thiết kế phần mềm, đó là hai khái niệm lập trình hướng thủ tục và lập trình hướng đối tượng.
Chúng ta sẽ cần một ví dụ "đời thường" để hiểu vấn đề thật sự rất khó này.

Ví dụ chúng ta cần một chương trình quản lý sách. Chương trình sẽ cần thủ tục thêm sáchhủy sách hỏng.

  • Một hướng tiếp cận: Ta sẽ cần một hàm thêm sách bằng cách hỏi tên sách, tác giả, mã số ISBN. Chúng ta cũng cần một hàm xóa sách bằng cách hỏi tên sách, tác giả, mã số ISBN. Mặt khác cũng cần có một hàm để in ra danh mục hiện tại sau khi đã thêm sách hoặc xóa sách. Ngoài ra chúng ta sẽ cần một hàm hỏi người sử dụng muốn thêm sách hay xóa sách khỏi danh mục, tùy thuộc vào câu trả lời mà hàm đó sẽ gọi hàm thêm sách hoặc hàm xóa sách.


  • Một hướng tiếp cận khác: Chúng ta tạo nên một tập hợp sách nói chung với 3 đặc điểm "đứa nào cũng có" đó là tên sách, tên tác giả và mã số ISBN, ví dụ các "phần tử" sách trong "tập hợp" đó sẽ là sách1 ("Lập trình C","Trần Văn Tèo","1234567"), sách2 ("Lập trình Java","Nguyễn Văn Tí","98765")... Tập hợp sách có các cách xử lý hay còn gọi là hàm thêm sách và xóa sách. Mọi việc sẽ "xoay vòng" bên trong cái tập hợp sách đó.


Về mặt thực thi, hai cách tiếp cận đều cho kết quả giống nhau. Nhưng nếu mở rộng vấn đề, không chỉ quản lý sách mà còn văn phòng phẩm, đồ chơi, đồ gia dụng...thì từ từ, cách tiếp cận đầu tiên đòi hỏi chúng ta phải rất tập trung vào từng hành động, từng hàm một trong cả một chuỗi các hành động, các hàm khác nhau. Với cách tiếp cận thứ hai, mọi thứ ta đều quẳng hết vào các tập hợp như tập hợp sách, tập hợp văn phòng phẩm, tập hợp đồ chơi...với mọi đặc điểm như tên, màu sắc, chất liệu, mã số....và các cách xử lý theo những tiêu chuẩn định sẵn như thêm, bớt, đánh giá...Hướng tiếp cận thứ hai cho chúng ta một lựa chọn phù hợp hơn cho các dự án phát triển phần mềm quy mô lớn đòi hỏi mức độ trừu tượng và tổ chức mã cao.

Chúng ta tạm định nghĩa hai cách tiếp cận đó như sau:

  • Cách tiếp cận thứ nhất là Lập trình thủ tục

Lập trình thủ tục có thể được định nghĩa là một mô hình lập trình bắt nguồn từ lập trình có cấu trúc, dựa trên khái niệm gọi thủ tục. Các thủ tục, còn được gọi là thủ tục, chương trình con hoặc hàm, chỉ đơn giản bao gồm một loạt các bước tính toán sẽ được thực hiện. Trong quá trình thực thi chương trình, bất kỳ thủ tục cụ thể nào cũng có thể được gọi tại bất kỳ thời điểm nào, kể cả bởi các thủ tục khác hoặc chính nó.

  • Cách tiếp cận thứ hai là Lập trình hướng đối tượng

Lập trình hướng đối tượng có thể được định nghĩa là một mô hình lập trình dựa trên khái niệm về đối tượng. Các đối tượng chứa dữ liệu ở dạng thuộc tính và mã ở dạng phương thức. Trong lập trình hướng đối tượng, các chương trình máy tính được thiết kế dựa trên khái niệm về các đối tượng tương tác với thế giới thực. Các ngôn ngữ lập trình hướng đối tượng rất đa dạng nhưng những ngôn ngữ phổ biến nhất là dựa trên lớp, nghĩa là các đối tượng là các thể hiện của các lớp, cũng xác định loại của chúng.


Lập trình hướng đối tượng (OOP) là gì? 

OOP (viết tắt của Object Oriented Programming) – lập trình hướng đối tượng là một phương pháp lập trình dựa trên khái niệm về lớp và đối tượng. OOP tập trung vào các đối tượng thao tác hơn là logic để thao tác chúng.


Đối tượng (Object) và Lớp (Class) trong OOP

  • Đối tượng (Object)

Đối tượng trong OOP bao gồm 2 thành phần chính:

Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng. Ví dụ: con người có các đặc tính như mắt, mũi, tay, chân…
Phương thức (Method): là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một người sẽ có thể thực hiện hành động nói, đi, ăn, uống, . . .



  • Lớp (Class)

Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và các phương thức được định nghĩa từ trước. Đây là sự trừu tượng hóa của đối tượng. Khác với kiểu dữ liệu thông thường, một lớp là một đơn vị (trừu tượng) bao gồm sự kết hợp giữa các phương thức và các thuộc tính. Hiểu nôm na hơn là các đối tượng có các đặc tính tương tự nhau được gom lại thành một lớp đối tượng. Lớp cũng sẽ bao gồm 2 thông tin là thuộc tính và phương thức.



Sự khác nhau giữa đối tượng và lớp

 
Lớp bạn có thể hiểu nó như là khuôn mẫu, đối tượng là một thực thể thể hiện dựa trên khuôn mẫu đó.

Ví dụ 1: Tập hợp sách trong ví dụ trên được coi như một lớp, gọi là class (lớp) sách


Các thông tin, đặc điểm (Attribute): Tên sách, tác giả, mã số…
Các hành động (Method) như: thêm sách, xóa sách…

Đối tượng (Object) là sách1 ("Lập trình C","Trần Văn Tèo","1234567")

Ví dụ 2: Bàn về loài chó, chúng ta có thể hiểu nó là class (lớp) chó có:

Các thông tin, đặc điểm (Attribute): 4 chân, 2 mắt, có đuôi, có chiều cao, có cân nặng, màu lông…
Các hành động (Method) như: sủa, đi, ăn, ngủ…

Đối tượng (Object) là con chó Phú Quốc ta đang nuôi trong nhà cũng mang đặc tính của lớp chó.


Khái niệm OOP cần thiết thảo luận thêm, chúng ta tạm dừng ở đây

Phần tiếp theo

Phần trước, lập trình C

Không có nhận xét nào:

Đăng nhận xét