- Lập trình tuyến tính
Nhược điểm:
- Nếu ta cần sử dụng một đoạn lệnh nào đó nhiều lần, thì ta phải sao chép nó nhiều lần.
- Không có khả năng kiểm soát phạm vi nhìn thấy của biến.
- Chương trình dài dòng, khó hiểu, khó nâng cấp.
- Lập trình hướng thủ tục
Về bản chất, chương trình được chia nhỏ thành các modul (đơn vị chương trình). Mỗi đơn vị chương trình chứa các hàm hay thủ tục (nên gọi là hướng thủ tục). Tuy tách rời thành các modul riêng biệt, nhưng ngôn ngữ lập trình hướng thủ tục vẫn đảm bảo thông tin thông suốt giữa các modul nhờ vào cơ chế hoạt động của hàm, cơ chế truyền theo tham biến và tham trị. Với lập trình hướng thủ tục, một chương trình lớn có thể được chia nhỏ thành các modul, để mỗi lập trình viên có thể đảm nhận. Tiêu biểu trong số này là C, Pascal.
Nhược điểm:
- Các hàm và thủ tục thường gắn kết với nhau, nếu muốn nâng cấp chương trình, thường phải chỉnh sửa tất cả các hàm và thủ tục liên quan.
- Không phù hợp với xu thế hiện đại vì không mô tả được thực thể trong cuộc sống thực.
- Lập trình hướng đối tượng
Bây giờ, ta sẽ xét một vài ví dụ để cho thấy sự cần thiết của lập trình hướng đối tượng.
1. Bạn muốn xây dựng một chương trình quản lý sinh viên. Khi đó, bạn cần lưu trữ các thông tin liên quan đến đối tượng sinh viên này: họ tên sinh viên, mã số sinh viên, ngày tháng năm sinh, quê quán, điểm các môn, điểm tổng kết,…. và rất nhiều thông tin khác liên quan. Sau khi kết thúc năm học, sinh viên sẽ nhận được đánh giá kết quả học tập của mình. Chúng ta cần có phương thức tiếp nhận kết quả để sinh viên đó có thể phản ứng lại với những gì mà mình nhận được, họ phải thực hiện các hành động học tập, tham gia vào các hoạt động của trường, của khoa… đó là những hành động mà mỗi sinh viên cần thực hiện.
2. Chúng ta sẽ điểm qua một số tính năng trong chương trình soạn thảo văn bản Word của Microsoft. Chúng ta sẽ thảo luận về các đối tượng Drawing trong Word. Mỗi đối tượng đều có các thuộc tính: màu viền, dạng đường viền, kích thước viền, màu sắc viền, màu nền, có văn bản hay không trong đối tượng drawing…Khi chúng ta biến đổi hình dạng của mỗi đối tượng: kéo giãn, làm lệch xiêng, quay vòng… chúng ta cần đưa ra một thông điệp để các đối tượng hình thể này thay đổi theo. Các hành động này thuộc quyền sở hữu của đối tượng.
Trong hai ví dụ minh họa trên, bạn thấy rằng hướng tiếp cận theo lập trình hướng đối tượng là rất gần gũi với cuộc sống thực. Chúng ta không quan tâm đến những khía cạnh không cần thiết của đối tượng, chúng ta chỉ tập trung vào các đặc trưng và các hành động của đối tượng. Kể từ thời điểm này trở đi, chúng ta sẽ gọi các đặc trưng của đối tượng là các thuộc tính thành viên của đối tượng đó (hoặc dữ liệu thành viên, biến thành viên của đối tượng) và các hành động của đối tượng là các phương thức thành viên (hay hàm thành viên) của đối tượng. Các cách gọi dữ liệu thành viên, thuộc tính thành viên, biến thành viên hay thuộc tính (tương ứng phương thức thành viên, hàm thành viên, phương thức) là không có sự phân biệt. Tôi chỉ đưa ra nhiều cách gọi khác nhau để bạn có thể quen khi tham khảo các giáo trình khác nhau. Bởi lẽ, nhiều giáo trình chọn lựa các cách gọi khác nhau. Cách cách gọi này cũng tùy thuộc vào ngôn ngữ lập trình (trong C++ thông thường người ta sử dụng khái niệm dữ liệu thành viên – member data hoặc biến thành viên – member variable và hàm thành viên – member function, trong khi đó, các ngôn ngữ như Java, Delphi hay C# lại sử dụng khái niệm phương thức – method và thuộc tính – property). Khái niệm thành viên sẽ áp dụng cho cả dữ liệu thành viên lẫn hàm thành viên.
Phương châm của lập trình hướng thủ tục theo giáo sư Niklaus Wirth
Chương trình = Cấu trúc dữ liệu + Giải thuật
Còn phương châm của lập trình hướng đối tượng là
Chương trình = Đối tượng + Dữ liệu
Tiêu biểu trong số này là C++, Java, C#, Delphi, Python…
No comments:
Post a Comment