Huỳnh Phúc Huy
Búa Đá Đôi
Lập trình hướng cấu trúc & Lập trình hướng đối tượng
Hầu hết các lập trình viên trên thế giới luôn phải đối mặt với việc lựa chọn lập trình hướng cấu trúc hay lập trình hướng đối tượng cho các ứng dụng back-end của họ. Vậy chính xác những định nghĩa này có ý nghĩa như thế nào trong lập trình? Bài viết dưới đây sẽ chỉ ra những điểm khác nhau cơ bản giữa lập trình hướng cấu trúc và lập trình hướng đối tượng và sẽ cho các bạn cái nhìn tổng quan về lập trình hướng đối tượng trong C# (>‿◠)✌
Định nghĩa lập trình hướng cấu trúc
Lập trình hướng cấu trúc có thể được định nghĩa như là một kỹ thuật lập trình phần mềm ứng dụng theo thiết kế tuần tự từ trên xuống với những khối lệnh hướng cấu trúc.
Phong cách lập trình này đặc trưng bởi xu hướng lập trình truyền thống được dùng để phân chia mã nguồn chương trình thành các khối cấu trúc logic bao hồm các câu lệnh điều kiện, vòng lặp và các khối điều kiện logic khác.
Kiểu lập trình này sẽ thực hiện tuần tự theo thứ tự xuất hiện của các bit được nhập vào.
Định nghĩa lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) có thể định nghĩa theo một cách đơn giản nhất là một kỹ thuật lập trình phần mềm ứng dụng có sự tương tác giữa các chương trình nhỏ hoặc các đối tượng nằm trong chương trình chính.
Nói cách khác, lập trình hướng đối tượng được hiểu như là một quá trình sử dụng các lớp để trình diễn từng phân khu chức năng khác nhau hoặc các đối tượng dữ liệu trong một ứng dụng phần mềm. Những đối tượng dữ liệu này chứa trong nó các trường dữ liệu (thuộc tính) và các phương thức dùng để định nghĩa các thao tác với dữ liệu.
Lập trình hướng đối tượng có 3 đặc trưng chính là tính đóng gói, tính thừa kế và tính đa hình.
Vậy những điểm khác biệt chính, điểm mạnh và điểm yếu giữa hai kiểu lập trình này là gì?
Lập trình hướng cấu trúc có thể tiết kiệm thời gian và công sức lập trình khi viết những chương trình đơn giản nhưng để triển khai các lớp hoặc những phương thức phức tạp thì lập trình hướng đối tượng mới là thế mạnh.
Với những chương trình nhỏ được xây dựng bởi những phần code rời rạc mà không cần có sự tổ chức tuyệt đối thì sử dụng lập trình hướng cấu trúc sẽ tiết kiệm rất nhiều thời gian và công sức lập trình . Sử dụng lập trình hướng đối tượng để xây dựng các lớp đối tượng đơn giản này thì sẽ mất khá nhiều thời gian và phí phạm, vì vậy lập trình hướng đối tượng không được khuyên dùng để phát triển các chương trình nhỏ.
Lập trình hướng cấu trúc rất dễ hiểu và dễ tiếp cận với người mới học, các tập lệnh được tổ chức gói gọn trong chỉ 1 tập tin nên rất dễ tìm và chỉnh sửa vì thế rất tiện lợi trong việc bảo trì cho các chương trình nhỏ và cập nhật mã nguồn khi có sự thay đổi mới.
Trong khi lập trình hướng cấu trúc là sự lựa chọn thích hợp cho các chương trình nhỏ thì lập trình hướng đối tượng lại tự hào khi là sư lựa chọn tốt nhất để phát triển các phần mềm, dự án lớn và được sử dụng vô cùng rộng rãi hiện nay. Bản chất tuyệt đối của lập trình hướng đối tượng giúp cho các nhà phát triển tiết kiệm được rất nhiều thời gian và công sức để phát triển dự án, các thành phần của dự án có thể được lập trình riêng biệt và có thể được tái sử dụng nhiều lần. Bằng việc thay đổi bản chất của một lớp, chúng ta có thể thay đổi được hàng loạt các đối tượng khác được thể hiện từ chính lớp đó. Thật là tiện lợi và tiết kiệm thời gian phải không các bạn
Tuy lập trình hướng đối tượng là giải pháp hoàn hảo trong việc phát triển và bảo trì các dự án lớn nhưng nó lại khá phức tạp hơn so với lập trình hướng cấu trúc, việc thiết kế và quản lý dự án sẽ có phần khó khăn hơn với những nhà phát triển web chưa có kinh nghiệm.
Khác biệt về hiệu suất?
Về hiệu suất, đứng ở quan điểm người sử dụng, sự khác biệt về hiệu suất giữa hai hướng lập trình này là quá nhỏ để có thể phân biệt. Tuy nhiên trong một số trường hợp thực tế thì lập trình hướng đối tương có phần chậm hơn, nguyên nhân là bởi các tác vụ bổ sung chẳng hạn như trình thông dịch, tác vụ này sẽ làm chậm phần nào quá trình thực thi so với việc thực thi theo trình tự từ trên xướng như lập trình hướng cấu trúc. Vì thế hãy xem xét và cân nhắc kỹ lưỡng trước khi lựa chọn hướng phát triển cho dự án của bạn.
Bài này hơi dài nhưng là bài học quan trọng giúp các bạn nắm rõ được điểm khác biệt và thế mạnh của lập trình hướng đối tượng so với lập trình hướng cấu trúc truyền thống. Hẹn gặp lại các bạn ở bài học tiếp theo vào tuần tới (っ^▿^)