Ưu điểm của phân tích thiết kế hướng đối tượng số với thiết kế hướng chức năng là gì

Từ lâu phương pháp lập trình hướng đối tượng đã không còn xa lạ với các lập trình viên. Bài viết sẽ chia sẻ với các bạn một số ưu điểm và nhược điểm của phương pháp này.

  • Tìm hiểu thêm: Bài tập ôn luyện Lập trình hướng đối tượng từ cơ bản đến nâng cao

1. Phương pháp lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng (Object-oriented programming) là một phương pháp sử dụng các đối tượng tương tác để giải quyết những nhiệm vụ phức tạp trong lập trình. Mỗi đối tượng sẽ có những thuộc tính và hành vi khác nhau.

Chẳng hạn, bạn có thể hình dung lon sữa đặc là một đối tượng. Phương pháp lập trình hướng đối tượng sẽ tạo ra những lon sữa đặc có nắp khui (thuộc tính) và chức năng tự mở nắp (hành vi). Người dùng chỉ việc yêu cầu đối tượng đó thực hiện chức năng của mình.

Hai ngôn ngữ hỗ trợ lập trình hướng đối tượng nổi tiếng là Java và C++. Ngoài ra, một số ngôn ngữ khác cũng hỗ trợ hướng đối tượng, bao gồm Objective C, Perl, Python, JavaScript, Simula, Modula, Ada, Smalltalk…

Ưu điểm của phân tích thiết kế hướng đối tượng số với thiết kế hướng chức năng là gì
Có rất nhiều ngôn ngữ hỗ trợ lập trình hướng đối tượng (Nguồn: Unsplash).

2. Ưu điểm của phương pháp lập trình hướng đối tượng

Một số ưu điểm của lập trình hướng đối tượng bao gồm:

2.1. Nâng cao hiệu năng phát triển phần mềm

Ba yếu tố quan trọng của lập trình hướng đối tượng là:

  • Tính mô-đun: nó tách biệt các nhiệm vụ trong quá trình phát triển phần mềm dựa trên những đối tượng cụ thể. Mỗi đối tượng sẽ có một nhiệm vụ khác nhau.
  • Tính mở rộng: các đối tượng có thể được mở rộng dễ dàng, bao gồm mở rộng thuộc tính và các hành vi mới.
  • Tính tái sử dụng: các đối tượng cũng có thể được sử dụng lại trong một ứng dụng hoặc nhiều ứng dụng khác nhau.

Ba yếu tố trên của lập trình hướng đối tượng giúp hiệu năng phát triển phần mềm cũng được cải thiện rất nhiều, so với kỹ thuật lập trình truyền thống dựa trên thủ tục.

2.2. Nâng cao khả năng bảo trì phần mềm

Chính vì những lý do nêu trên, phần mềm được lập trình theo hướng đối tượng cũng dễ bảo trì hơn. Vì thiết kế là mô-đun, nên việc thay đổi một phần của chương trình sẽ không ảnh hưởng đến những phần còn lại. Điều này rất có lợi trong trường hợp dự án của bạn có quy mô lớn, đòi hỏi nhiều thay đổi.

2.3. Phần mềm phát triển nhanh hơn

Tính tái sử dụng của lập trình hướng đối tượng cho phép phát triển phần mềm nhanh hơn. Các phần mềm được lập trình theo hướng đối tượng thường có thư viện đối tượng phong phú, các đoạn mã được tối ưu hóa và có thể tái sử dụng ở các dự án khác trong tương lai.

Ưu điểm của phân tích thiết kế hướng đối tượng số với thiết kế hướng chức năng là gì
Lập trình hướng đối tượng giúp phát triển phần mềm nhanh hơn (Nguồn: Unsplash).

2.4. Giảm thiểu chi phí phát triển

Việc tái sử dụng phần mềm cũng làm giảm thiểu chi phí phát triển cho nhà sản xuất. Thông thường, phần lớn công sức chỉ tập trung vào việc phân tích đối tượng và thiết kế phần mềm. Do đó, tổng chi phí phát triển phần mềm cũng giảm đi đáng kể.

2.5. Chất lượng phần mềm cao hơn

Thực tế, chất lượng của phần mềm phụ thuộc vào nhiều yếu tố khác nhau. Chẳng hạn, kinh nghiệm và trình độ của nhóm phát triển cũng sẽ ảnh hưởng đến sản phẩm đầu ra. Tuy nhiên, phương pháp này có xu hướng tạo ra những phần mềm chất lượng cao hơn.

Việc phát triển phần mềm nhanh hơn, chi phí thấp hơn giúp các nhà sản xuất dành nhiều thời gian, tài nguyên vào việc kiểm thử. Điều đó đồng nghĩa rằng phần mềm cuối cùng thường ít lỗi hơn, chất lượng tốt hơn.

3. Nhược điểm của phương pháp lập trình hướng đối tượng

Bên cạnh những ưu điểm nêu trên, lập trình hướng đối tượng cũng có những nhược điểm như sau:

3.1. Đường cong học tập sâu

Lập trình hướng đối tượng là một phương pháp đòi hỏi khá nhiều tư duy. Do đó, nó có thể không dễ dàng với một số người, đặc biệt là những người mới vào nghề. Các lập trình viên cần một khoảng thời gian để học và tập làm quen với nó.

Phương pháp này phức tạp vì phần mềm phải dựa trên sự tương tác của đối tượng. Do đó, lập trình viên cần phải hiểu bản chất của những khái niệm cơ bản như: lớp, đối tượng, phương thức, thuộc tính. Đồng thời, ta cũng cần nắm được bốn tính chất cơ bản của lập trình hướng đối tượng. Đó là: Tính trừu tượng (Abstraction), Tính đóng gói (Encapsulation), Tính kế thừa (Inheritance) và Tính đa hình (Polymorphism).

Ưu điểm của phân tích thiết kế hướng đối tượng số với thiết kế hướng chức năng là gì
Lập trình viên cần có nhiều thời gian để làm chủ phương pháp này (Nguồn: Unsplash).

3.2. Chương trình chậm và có kích thước lớn hơn

Phần mềm được lập trình theo hướng đối tượng thường chậm hơn các phần mềm dựa trên thủ tục. Lý do là vì các phần mềm này thường yêu cầu nhiều câu lệnh hơn để thực thi. Lập trình viên phải viết ra nhiều dòng mã để đảm bảo những thuộc tính của phương pháp này. Do đó, kích thước cũng chương trình cũng lớn hơn.

3.3. Phương pháp lập trình hướng đối tượng không phù hợp với mọi loại vấn đề

Mỗi phương pháp khác nhau sẽ phù hợp với một vấn đề khác nhau. Lập trình hướng đối tượng cũng vậy.

Thực tế, có những vấn đề mặc định sẽ được giải quyết tốt hơn nếu lập trình viên sử dụng phương pháp lập trình chức năng (Functional Programming), lập trình logic, hoặc lập trình thủ tục. Nếu ta áp dụng lập trình hướng đối tượng, có thể sẽ không đem lại hiệu quả tốt.

Nhìn chung, lập trình hướng đối tượng là một phương pháp hay nhưng không hoàn hảo. Hy vọng qua bài viết này, các bạn có thể cân nhắc những ưu, nhược điểm của phương pháp lập trình hướng đối tượng để có thể vận dụng tốt trong công việc.

Phương pháp phân tích và thiết kế hướng đối tượng thực hiện theo các thuật ngữ và khái niệm của phạm vi lĩnh vực ứng dụng (tức là của doanh nghiệp hay đơn vị mà hệ thống tương lai cần phục vụ), nên nó tạo sự tiếp cận tương ứng giữa hệ thống và vấn đề thực ngoài đời. Trong ví dụ bán xe ô tô, mọi giai đoạn phân tích thiết kế và thực hiện đều xoay quanh các khái niệm như khách hàng, nhân viên bán hàng, xe ô tô, … Vì quá trình phát triển phần mềm đồng thời là quá trình cộng tác của khách hàng/người dùng, nhà phân tích, nhà thiết kế, nhà phát triển, chuyên gia lĩnh vực, chuyên gia kỹ thuật, ... nên lối tiếp cận này khiến cho việc giao tiếp giữa họ với nhau được dễ dàng hơn.

Một trong những ưu điểm quan trọng bậc nhất của phương pháp phân tích và thiết kế hướng đối tượng là tính tái sử dụng: bạn có thể tạo các thành phần (đối tượng) một lần và dùng chúng nhiều lần sau đó. Giống như việc bạn có thể tái sử dụng các khối xây dựng (hay bản sao của nó ) trong một toà lâu đài, một ngôi nhà ở, một con tàu vũ trụ, bạn cũng có thể tái sử dụng các thành phần (đối tượng) căn bản trong các thiết kế hướng đối tượng cũng như code của một hệ thống kế toán, hệ thống kiểm kê, hoặc một hệ thống đặt hàng.

Vì các đối tượng đã được thử nghiệm kỹ càng trong lần dùng trước đó, nên khả năng tái sử dụng đối tượng có tác dụng giảm thiểu lỗi và các khó khăn trong việc bảo trì, giúp tăng tốc độ thiết kế và phát triển phần mềm.

Phương pháp hướng đối tượng giúp chúng ta xử lý các vấn đề phức tạp trong phát triển phần mềm và tạo ra các thế hệ phần mềm có khả năng thích ứng và bền chắc.

Phân tích hướng đối tượng (Object Oriented Analysis - OOA):

Là giai đọan phát triển một mô hình chính xác và súc tích của vấn đề, có thành phần là các đối tượng và khái niệm đời thực, dễ hiểu đối với người sử dụng.

Trong giai đoạn OOA, vấn đề được trình bày bằng các thuật ngữ tương ứng với các đối tượng có thực. Thêm vào đó, hệ thống cần phải được định nghĩa sao cho người không chuyên Tin học có thể dễ dàng hiểu được.

Dựa trên một vấn đề có sẵn, nhà phân tích cần ánh xạ các đối tượng hay thực thể có thực như khách hàng, ô tô, người bán hàng, … vào thiết kế để tạo ra được bản thiết kế gần cận với tình huống thực. Mô hình thiết kế sẽ chứa các thực thể trong một vấn đề có thực và giữ nguyên các mẫu hình về cấu trúc, quan hệ cũng như hành vi của chúng. Nói một cách khác, sử dụng phương pháp hướng đối tượng chúng ta có thể mô hình hóa các thực thể thuộc một vấn đề có thực mà vẫn giữ được cấu trúc, quan hệ cũng như hành vi của chúng.

Đối với ví dụ một phòng bán ô tô, giai đoạn OOA sẽ nhận biết được các thực thể như:

- Khách hàng

- Người bán hàng

- Phiếu đặt hàng

- Phiếu (hoá đơn) thanh toán

- Xe ô tô

Tương tác và quan hệ giữa các đối tượng trên là:

- Người bán hàng dẫn khách hàng tham quan phòng trưng bày xe.

- Khách hàng chọn một chiếc xe

- Khách hàng viết phiếu đặt xe

- Khách hàng trả tiền xe

- Xe ô tô được giao đến cho khách hàng

Đối với ví dụ nhà băng lẻ, giai đoạn OOA sẽ nhận biết được các thực thể như:

- Loại tài khoản: ATM (rút tiền tự động), Savings (tiết kiệm), Current (bình thường), Fixed (đầu tư), ...

- Khách hàng

- Nhân viên

- Phòng máy tính.

Tương tác và quan hệ giữa các đối tượng trên:

- Một khách hàng mới mở một tài khoản tiết kiệm

- Chuyển tiền từ tài khoản tiết kiệm sang tài khoản đầu tư

- Chuyển tiền từ tài khoản tiết kiệm sang tài khoản ATM

Xin chú ý là ở đây, như đã nói, ta chú ý đến cả hai khía cạnh: thông tin và cách hoạt động của hệ thống (tức là những gì có thể xảy ra với những thông tin đó).

Lối phân tích bằng kiểu ánh xạ "đời thực” vào máy tính như thế thật sự là ưu điểm lớn của phương pháp hướng đối tượng.

Thiết kế hướng đối tượng (Object Oriented Design - OOD):

Là giai đoạn tổ chức chương trình thành các tập hợp đối tượng cộng tác, mỗi đối tượng trong đó là thực thể của một lớp. Các lớp là thành viên của một cây cấu trúc với mối quan hệ thừa kế.

Mục đích của giai đoạn OOD là tạo thiết kế dựa trên kết quả của giai đoạn OOA, dựa trên những quy định phi chức năng, những yêu cầu về môi trường, những yêu cầu về khả năng thực thi, .... OOD tập trung vào việc cải thiện kết quả của OOA, tối ưu hóa giải pháp đã được cung cấp trong khi vẫn đảm bảo thoả mãn tất cả các yêu cầu đã được xác lập.

Trong giai đoạn OOD, nhà thiết kế định nghĩa các chức năng, thủ tục (operations), thuộc tính (attributes) cũng như mối quan hệ của một hay nhiều lớp (class) và quyết định chúng cần phải được điều chỉnh sao cho phù hợp với môi trường phát triển. Đây cũng là giai đoạn để thiết kế ngân hàng dữ liệu và áp dụng các kỹ thuật tiêu chuẩn hóa.

Về cuối giai đoạn OOD, nhà thiết kế đưa ra một loạt các biểu đồ (diagram) khác nhau. Các biểu đồ này có thể được chia thành hai nhóm chính là Tĩnh và động. Các biểu đồ tĩnh biểu thị các lớp và đối tượng, trong khi biểu đồ động biểu thị tương tác giữa các lớp và phương thức hoạt động chính xác của chúng. Các lớp đó sau này có thể được nhóm thành các gói (Packages) tức là các đơn vị thành phần nhỏ hơn của ứng dụng.

Lập trình hướng đối tượng (Object Oriented Programming - OOP):

Giai đoạn xây dựng phần mềm có thể được thực hiện sử dụng kỹ thuật lập trình hướng đối tượng. Đó là phương thức thực hiện thiết kế hướng đối tượng qua việc sử dụng một ngôn ngữ lập trình có hỗ trợ các tính năng hướng đối tượng. Một vài ngôn ngữ hướng đối tượng thường được nhắc tới là C++ và Java. Kết quả chung cuộc của giai đoạn này là một loạt các code chạy được, nó chỉ được đưa vào sử dụng sau khi đã trải qua nhiều vòng quay của nhiều bước thử nghiệm khác nhau.