Chủ Nhật, 21 tháng 10, 2007

Công nghệ hướng đối tượng trong tự động hóa

Ngày nay, trong công nghệ phần mềm nói chung và phần mềm công nghiệp nói riêng, công nghệ hướng đối tượng đóng một vai trò then chốt. Công nghệ hướng đối tượng không những đã cách mạng hóa phương pháp thiết kế xây dựng phần mềm, mà còn đổi mới cả tư duy của những người sử dụng

Ví dụ, việc một kiến trúc sư sử dụng chương trình đồ họa với các chức năng kéo-thả để thiết kế một công trình đã trở thành hiển nhiên như tự tay xây một ngôi nhà thực từ những viên gạch hay những khối bê tông đúc sẵn. Hay một kỹ sư điều khiển có thể dễ dàng lập trình cho hệ thống điều khiển quá trình bằng cách chọn và nối các khối chức năng có sẵn với nhau trên một giao diện đồ họa trực quan. Song, đằng sau khả năng thuận tiện tưởng chừng như hiển nhiên đó là những công nghệ phần mềm tương đối phức tạp, được xây dựng dựa trên nền tảng của hàng loạt các phát triển mới, trong đó trước hết phải nói tới công nghệ hướng đối tượng.

PHẦN I: CÔNG NGHỆ HƯỚNG ĐỐI TƯỢNG LÀ GÌ?

Từ khóa "hướng đối tượng"

Giống như nhiều từ mốt khác, từ khóa "hướng đối tượng" được sử dụng rất yêu thích trong các tiêu đề quảng cáo sản phẩm phần mềm, từ các công cụ lập trình, phần mềm soạn thảo văn bản, xử lý đồ họa tới hệ thống quản lý cơ sở dữ liệu. Ngay cả các gói phần mềm trong hầu hết các hệ SCADA, các hệ DCS cũng được gắn mác "hướng đối tượng". Gần đây nhất, vai trò quan trọng của công nghệ hướng đối tượng trong các hệ thống tự động hóa được khẳng định qua các chuẩn như COM, ActiveX, OPC, IEC 61499, ProfiNet... Trong khi chúng ta đều thống nhất rằng "hướng đối tượng" là cách tư duy gần với người kỹ sư hơn là "hướng hàm" hay "hướng dữ liệu", vì thế dễ được chấp nhận hơn, nhưng cái gì làm nên "sự hướng đối tượng" đó lại là một vấn đề gây nhiều tranh cãi.

Vậy, công nghệ hướng đối tượng thực chất là gì? Để làm rõ khái niệm này, có lẽ trước hết ta bàn tới khái niệm lập trình hướng đối tượng (object-oriented programming, OOP).

Lập trình hướng đối tượng

Với đa số người quan tâm thì khái niệm hướng đối tượng mới chỉ dừng lại là một phương pháp lập trình ở mức trừu tượng cao hơn lập trình có cấu trúc. Rõ ràng, xu thế phát triển của các ngôn ngữ lập trình máy tính là hướng dần tới tư duy của người lập trình và thoát khỏi sự lệ thuộc vào nền máy tính cụ thể. Điều đó có nghĩa là, người lập trình có thể biểu diễn thế giới thực và các ý muốn của mình thông qua ngôn ngữ lập trình một cách tự nhiên hơn, trực tiếp hơn là phải tư duy trói buộc với từng câu lệnh, thanh ghi hay ô nhớ theo cách thức làm việc của vi xử lý. Các ngôn ngữ máy cũng như các loại hợp ngữ đã dần được thay thế bằng các ngôn ngữ lập trình bậc cao như FORTRAN, COBOL, ADA, PASCAL và C. Bên cạnh hỗ trợ khả năng lập trình tuần tự cổ điển, các ngôn ngữ bậc cao này cho phép lập trình theo phương pháp có cấu trúc. Điểm đặc biệt của lập trình có cấu trúc là việc phân tích, chia nhỏ chương trình thành các cấu trúc dữ liệu và giải thuật nhỏ gọn và sử dụng các cú pháp lập trình rất chặt chẽ về mặt cấu trúc. Kết quả là không chỉ việc lập trình trở nên dễ dàng hơn, hiệu quả hơn, mà mã chương trình nhờ đó có độ tin cậy và tính khả chuyển cao hơn nhiều. Song phương pháp lập trình có cấu trúc vẫn còn gặp nhiều khó khăn với các dự án lớn bởi tư duy còn gắn nhiều với cấu trúc dữ liệu cụ thể, tính mềm dẻo và khả năng sử dụng lại tương đối thấp của mô hình phân tích, thiết kế cũng như của mã chương trình. Trong khi đó, yêu cầu của thị trường ngày càng khắt khe cả về mở rộng phạm vi chức năng, tính thân thiện người sử dụng, độ tin cậy của phần mềm cũng như về khung thời gian ra sản phẩm. Tình cảnh tương đối bi quan này đã kéo dài và được giới "tin học" gọi là khủng hoảng phần mềm (software crisis).

Ý tưởng lập trình hướng đối tượng lần đầu tiên được đưa ra trong Smallalk, một ngôn ngữ lập trình và đồng thời là một môi trường lập trình do Xerox PARC phát triển vào năm 1968. Song, cho tới Smalltalk-80 thì khái niệm lập trình hướng đối tượng mới được hình thành rõ rệt và hỗ trợ hoàn toàn. Bên cạnh Smalltalk, các ngôn ngữ hướng đối tượng khác như Eiffel, CLOS, C++, ADA95, Delphi, Java và C# cũng lần lượt ra đời, hoặc được phát triển từ đầu hoặc tiến hóa từ một ngôn ngữ có sẵn.

Lập trình hướng đối tượng được coi là phương pháp lập trình chuẩn hiện nay trong đa số các lĩnh vực ứng dụng bởi nó có nhiều ưu điểm lớn so với các phương pháp cổ điển. Mục tiêu mà lập trình hướng đối tượng đặt ra là:

- Đơn giản hoá việc xây dựng và sử dụng các thư viện

- Cho phép sử dụng lại phần mềm một cách triệt để. Nếu một thư viện có sẵn không phù hợp với yêu cầu thì người lập trình có khả năng sửa đổi hoặc mở rộng một cách dễ dàng, không cần phải can thiệp tới mã nguồn của thư viện.

- Nâng cao độ tin cậy và tính bền vững của phần mềm

- Hỗ trợ mạnh các dự án phát triển phần mềm qui mô lớn, đòi hỏi nhiều người tham gia

- Cải thiện khả năng bảo trì của mã, nâng cao tính mềm dẻo và linh hoạt của phần mềm.

Lập trình hướng đối tượng phải được thực hiện thông qua một ngôn ngữ lập trình hướng đối tượng. Để đạt được các mục tiêu trên, mọi ngôn ngữ lập trình hướng đối tượng đều hỗ trợ thể hiện ba nguyên tắc: đóng gói dữ liệu (data encapsulation), dẫn xuất/thừa kế (subtyping/inheritance) và đa hình/đa xạ (polymorphism) và .

Nguyên tắc đóng gói dữ liệu thực chất là sự kết hợp giữa cấu trúc dữ liệu với các phép toán thao tác đặc thù trên cấu trúc dữ liệu đó trong một thực thể phần mềm mới có tên là "lớp". Các biến thuộc một lớp được gọi là "thể nghiệm" hay "đối tượng". Nói cách khác, lớp là một tập hợp của các đối tượng có cùng các đặc trưng - thể hiện qua các thuộc tính và phép toán. Bằng cách này, việc sử dụng đối tượng cũng như truy nhập dữ liệu bên trong một đối tượng chỉ có thể thông qua một giao diện, do đó được kiểm soát một cách chặt chẽ. Thực ra, ý tưởng này không phải hoàn toàn mới, mà đã có trong lập trình kiểu module (ví dụ với ngôn ngữ MODULA-2). Lưu ý rằng, mục đích cơ bản của cơ chế đóng gọi dữ liệu không phải là che dấu thông tin, mà chính là tạo điều kiện cho việc sử dụng đối tượng ở một mức trừu tượng cao hơn, thuận tiện hơn cũng như bảo vệ người sử dụng trước nhiều lỗi đáng tiếc. Nhờ vậy, phần mềm có độ tin cậy, tính bền vững cũng như giá trị sử dụng lại cao hơn.

Nói thì có vẻ rất trừu tượng và lý thuyết, nhưng ta lấy ví dụ một đoạn mã tính toán ma trận và vector đơn giản để minh họa cho sức mạnh của nguyên tắc đóng gói dữ liệu. Ai đã từng sử dụng MATLAB để mô phỏng một hệ động học với mô hình trạng thái không liên tục thì thấy rõ hiệu quả của các dòng lệnh như sau:

y = A*x + B*u; x = C*x + D*u;

Điều đáng chú ý là, các dòng lệnh trên cũng hoàn toàn có thể viết bằng một ngôn ngữ lập trình hướng đối tượng phổ thông như C++, tất nhiên với hiệu suất cao tính toán cao hơn nhiều so với MATLAB (lưu ý rằng MATLAB vẫn là một ngôn ngữ diễn giải chứ không phải ngôn ngữ biên dịch). Như vậy là, những dòng lệnh trên hoàn toàn có thể là các mã điều khiển thời gian thực được cài đặt trên nền một vi điều khiển có hỗ trợ trình biên dịch C++ mà mã chương trình không nhất thiết phải lớn hơn lập trình bằng ANSI-C. Và nếu ai đã lập trình với C thì cũng sẽ đánh giá được mức độ đơn giản, thuận tiện như thế nào của hai dòng lệnh trên nếu so với phải "viết tay" bằng ngôn ngữ C.

Dẫn xuất là nguyên tắc thứ hai và là nguyên tắc hoàn toàn mới của lập trình hướng đối tượng. Thông qua cơ chế dẫn xuất, các lớp đối tượng có thể được mở rộng, được cải tiến mà không làm mất đi các tính chất quan trọng của đóng gói dữ liệu. Ở đây, các lớp dẫn xuất được thừa kế giao diện hoặc/và thừa kế thực thi từ lớp cơ sở, do vậy khả năng sử dụng lại của phần mềm có thể được khai thác một cách triệt để.

Cơ chế dẫn xuất và thừa kế cũng được minh họa qua một ví dụ đơn giản. Giả sử ta đã có một lớp đối tượng biểu diễn các ma trận, một lớp đối tượng biểu diễn các vector cùng các phép toán thao tác cơ bản với chúng. Trong một ứng dụng mới ta cần làm việc với các ma trận đối xứng, các ma trận đường chéo hoặc các ma trận thưa. Điều gì sẽ phải làm nếu như ngôn ngữ lập trình không hỗ trợ cơ chế dẫn xuất? Hoặc ta sẽ phải xây dựng lại từ đầu một số lớp đối tượng mới để biểu diễn các dạng ma trận đặc biệt này và thay đổi hoàn toàn mã chương trình đã viết, hoặc chấp nhận sử dụng lớp ma trận thông thường với các phép tính toán chưa được tối ưu hóa. Đương nhiên, ta có thể làm tốt hơn rất nhiều nếu sử dụng cơ chế dẫn xuất và chỉ định nghĩa lại các phép toán sao cho lợi dụng được đặc điểm cụ thể của dạng ma trận đặc biệt. Mã chương trình cũ không hề phải thay đổi, nhưng thuật toán nhân và cộng đã được tối ưu sẽ được gọi thay vì các phép tính toán ma trận tổng quát. Điều đáng nói là, mặc dù mã chương trình trông như nhau với cùng các phép toán, nhưng thuật toán nào được gọi lại phụ thuộc vào kiểu cụ thể của đối tượng tham gia. Đây cũng chính là đặc tính quan trọng của nguyên tắc đa hình/đa xạ.

Định nghĩa một cách tổng quát, đa hình hay đa xạ chính là nguyên tắc thực hiện một phép toán bằng nhiều hình thái/phưong pháp khác nhau để có thể áp dụng cho nhiều kiểu/lớp khác nhau. Ví dụ, phép nhân có thể thực hiện với số thực, thì không có lý do gì ta không thể thực hiện được với các số phức, với đa thức và ma trận. Tất nhiên là phương pháp thực hiện tuy có khác nhau, nhưng đều có tên là phép nhân và vì vậy cũng có thể có cùng ký hiệu. Nhờ vậy, việc lập trình trở nên đơn giản hơn, linh hoạt hơn trong khi vẫn đảm bảo được khả năng tối ưu thuật toán. Thật ra, vai trò của nguyên tắc đa hình/đa xạ còn lớn hơn rất nhiều và gần như là không thể thiếu được trong phát triển các dự án phần mềm lớn đòi hỏi tính linh hoạt và độ mềm dẻo cao. Chúng ta đều biết việc sử dụng các môi trường thiết kế đồ họa ngày nay như VISIO, AutoCAD, WinCC, Intellution FIX,... đều rất đơn giản và trực quan bởi sự quan niệm thống nhất về các đối tượng đồ họa, bất kể là một hình vuông, hình tròn, tam giác hay thậm chí là biểu tượng van điều khiển, bình mức, máy bơm, động cơ,... Hay việc lập trình cho một hệ PLC hoặc DCS với biểu đồ khối chức năng (FBD) cũng đơn giản như nối dây giữa các linh kiện bán dẫn. Đằng sau tất cả các công nghệ này chính là nguyên lý đa hình/đa xạ.

Tư duy hướng đối tượng

Tạm thời đồng ý với quan điểm thế nào là lập trình hướng đối tượng, ta quay trở lại với các thế giới thực. Mỗi hệ thống thực của chúng ta cấu thành bởi các đối tượng và sự liên hệ giữa chúng với nhau và với bên ngoài. Cách chúng ta nhận thức, tư duy, ra quyết định và hành động cũng là trên cơ sở các đối tượng ra quan tâm. Thế nhưng, từ khi máy tính ra đời thì các khái niệm "dữ liệu" rồi "hàm", "thủ tục", "giải thuật" đã trở nên thông dụng. Nhưng cứ theo các định nghĩa mà xét, các khái niệm trên đều gắn với cơ chế làm việc của máy tính. Ví dụ "dữ liệu là một dạng biểu diễn thông tin mà máy tính có thể lưu trữ và xử lý", "hàm là một trình tự các câu lệnh mà máy tính có thể hiểu và diễn giải để thực hiện một nhiệm vụ nào đó", hay "giải thuật là cách biểu diễn cụ thể phương pháp giải quyết một bài toán để có thể lập trình và thực thi trên máy tính". Con người ta đã quá phụ thuộc vào công cụ do mình sáng tạo ra, để đến nỗi ngôn ngữ của chính mình bị lệ thuộc vào và pha trộn với ngôn ngữ máy. Mà ngôn ngữ thì phản ánh cũng như ảnh hưởng ngược trở lại tới phương pháp tư duy. Cho nên, tư duy "hướng dữ liệu", "hướng hàm", "hướng thủ tục" không phải là không có nguồn gốc của nó. Nhưng thời thế đã thay đổi, giới phát triển hoặc ứng dụng công nghệ thông tin cũng cần thay đổi tư duy.

Phân tích và thiết kế hướng đối tượng

Công nghệ phần mềm không chỉ là lập trình, mà còn bao gồm nhiều bước khác nữa như phân tích, thiết kế và bảo trì. Theo dòng phát triển của công nghệ phần mềm, phương pháp lập trình đã tiến hoá từ lập trình tuần tự lên lập trình có cấu trúc và tới nay là lập trình hướng đối tượng. Phương pháp phân tích, thiết kế phần mềm cũng đi theo các bước tiến hoá này. Trước đây, người ta phân tích, thiết kế phần mềm theo kiểu tư duy hướng thủ tục/hướng hàm (procedure-oriented/ funtion-oriented) hoặc hướng dữ liệu (data-oriented). Theo phương pháp này, phần mềm cần xây dựng được chia thành giải thuật và cấu trúc dữ liệu. Trong quá trình phân tích, giải thuật được phân chia thành các giải thuật con đơn giản hơn, cấu trúc dữ liệu lớn được chia thành những cấu trúc nhỏ hơn. Quá trình tương tự cũng được tiến hành trong quá trình thiết kế. Phương pháp phân tích, thiết kế hướng thủ tục hoặc hướng dữ liệu có ưu điểm đơn giản, nhanh chóng tạo ra kết quả (do tiến hành theo kiểu từ trên xuống) nhưng kết quả tạo ra không phản ánh bản chất của thể giới thực dẫn đến cứng nhắc, khó thay đổi khi yêu cầu đặt ra thay đổi, khó mở rộng khi hệ thống phát triển.

Không những về tư duy phân tích và thiết kế, mà qui trình công nghệ phần mềm cổ điển còn bộc lộ nhiều thiếu sót. Qui trình công nghệ phần mềm cổ điển được thực hiện theo mô hình thác nước (waterfall model), thiếu phản hồi từ một giai đoạn sau và thiếu sự nhất quán giữa các mô hình thuộc các giai đoạn phát triển. Chính vì vậy, ngay cả các mô hình phân tích và thiết kế cũng ít có giá trị sử dụng lại, chưa nói tới mã phần mềm được sinh ra trong giai đoạn sau.

Phương pháp phân tích, thiết kế phần mềm tiên tiến hiện nay là hướng đối tượng (object-oriented), trong đó khối cơ bản để xây dựng nên phần mềm là đối tượng hay lớp. Nói một cách đơn giản, đối tượng là sự phản ánh thế giới tự nhiên xung quanh. Ví dụ nếu trong hệ thống điều khiển có các thiết bị vào/ra số/tương tự như AI, AO, DI, DO thì trong phần mềm cũng có các lớp AI, AO, DI, DO ; trong hệ thống điều khiển có khâu điều khiển PID thì trong phần mềm cũng có lớp PID,...

Trong các hệ thống điều khiển, các đối tượng có thể đại diện các thành phần hệ thống như:

- Các thuật toán điều khiển

- Xử lý sự kiện và báo động

- Xử lý mệnh lệnh

- Quan sát và chẩn đoán

- Cấu hình vào/ra

- Mô phỏng

- Thông tin thiết kế

Việc trừu tượng hoá thế giới tự nhiên thành các lớp đối tượng như vậy được gọi là mô hình hoá hướng đối tượng. Dựa trên mô hình đối tượng thu được, phương pháp phân tích, thiết kế phần mềm hướng đối tượng sẽ bổ sung thêm các liên kết và lớp đối tượng mới, tinh chỉnh lại,... để tạo ra một mô hình đối tượng chi tiết của phần mềm. Cuối cùng, người lập trình sử dụng một ngôn ngữ lập trình nào đó (không nhất thiết phải là ngôn ngữ hướng đối tượng) thể hiện mô hình đối tượng chi tiết thành mã nguồn. Ưu điểm lớn nhất của phân tích, thiết kế phần mềm hướng đối tượng không phải nằm ở chỗ tạo ra chương trình nhanh tốn ít công sức, mà nằm ở chỗ nó gần với thực tế và do đó thúc đẩy việc tái sử dụng lại những thành quả đã xây dựng được như mã lệnh hay bản thiết kế.

Công nghệ hướng đối tượng

Sau khi đã thảo luận các vấn đề xung quanh lập trình hướng đối tượng, tư duy hướng đối tượng, phân tích và thiết kế hướng đối tượng, ta tìm hiều một khái niệm rộng hơn, đó là công nghệ hướng đối tượng. Nói một cách ngắn gọn, công nghệ hướng đối tượng là tất cả các công nghệ và kỹ thuật phần mềm dựa trên nền tảng của phương pháp luận hướng đối tượng. Nền tảng này bao gồm:

- Mô hình hóa hướng đối tượng

- Phân tích và thiết kế hướng đối tượng

- Lập trình hướng đối tượng.

Công nghệ hướng đối tượng ngày nay tương đối đa dạng đến nỗi khó có thể hệ thống hóa một cách chi tiết trong phạm vi bài báo này. Tuy nhiên, sơ đồ phác thảo trên H. 1 cho bạn đọc cái nhìn sơ lược về sự tiến hóa của công nghệ hướng đối tượng mà chúng ta sẽ có dịp bàn sâu hơn trong một số báo sau.

II. GIỚI TỰ ĐỘNG HÓA CÓ THỰC SỰ CẦN CÔNG NGHỆ HƯỚNG ĐỐI TƯỢNG

Trước khi kết thúc phần bài báo có tính chất mở đầu này, tác giả bài viết này muốn mạn đàm về một vấn đề mà lẽ ra phải đề cập trước tiên, cũng là để thay đổi không khí vốn đã nặng nề mang tính lý thuyết từ đầu tới giờ. Đó là vì có nhiều ý kiến cho rằng công nghệ hướng đối tượng quá cồng kềnh, quá xa rời thực tế, chỉ phù hợp với các lĩnh vực ứng dụng công nghệ thông tin phổ thông, khó tìm thấy chỗ đứng trong phần mềm công nghiệp, chưa nói gì tới trong điều khiển và tự động hóa. Cũng phải nói rằng, những lo ngại của những người đại diện cho quan điểm trên không phải là không có những lý do thuyết phục.

Sự lo ngại thứ nhất là độ tin cậy. Thường xuyên chúng ta nhận được thông tin về lỗ hổng trong các hệ điều hành và phần mềm hiện tại, hàng ngày chúng ta phải khó chịu chứng kiến sự kém tin cậy của các phần mềm văn phòng chạy trên máy tính cá nhân. Tất nhiên là phần lớn các phần mềm đó cũng được xây dựng trên nền tảng của công nghệ hướng đối tượng. Tuy nhiên có một điều cần nói rằng, những tính năng kém trên không phải là lỗi của công nghệ hướng đối tượng, bởi nếu không có công nghệ hướng đối tượng thì công nghiệp phần mềm có lẽ đã đi xuống vực thẳm từ lâu rồi. Ai có thể nói rằng một chiếc ô-tô hiện đại ngày nay có độ tin cậy hơn cao hơn một chiếc xe tay, hay đi máy bay an toàn hơn đi bộ? Vấn đề là một mặt công nghiệp phần mềm phải luôn đáp ứng nhu cầu ngày càng cao của thị trường, trong khi trình độ nhân lực (phát triển phần mềm) và công nghệ chưa theo kịp sát bước, mặt khác các công ty phần mềm cũng phải cạnh tranh khốc liệt với nhau, phải tranh thủ thời gian để đưa sản phẩm mới ra thị trường một cách sớm nhất, kể cả khi nó chưa hoàn thiện (Luật Murphy: "Một chương trình không có lỗi là một chương trình đã cũ").

Điều lo ngại thứ hai trong ứng dụng công nghệ hướng đối tượng là kích cỡ phần mềm và hiệu suất thực hiện chương trình. Vì lý do gì mà một vài năm chúng ta lại phải tốn tiền nâng cấp máy tính chỉ vì lý do các phần mềm ngày càng phình to ra và chạy chậm hơn? Không, cũng không phải là lỗi của công nghệ hướng đối tượng, mà là lỗi của con người ta luôn có một thì muốn có hai. Nếu khách hàng chúng ta ai cũng chỉ dừng lại ở DOS 6.0 hay hơn nữa là Windows NT 4.0 thì cũng chẳng cần phải nâng cấp máy tính làm gì, chẳng cần đến Pentium 3 với 4, Bill Gates cũng sẽ chẳng bán được Windows XP cho ai, sẽ phải đóng cửa cái công ty "vừa mềm vừa nhỏ" và quay về Harvard học đại học may ra sau này có chỗ kiếm cơm. Nhưng mà cái giỏi nhất của nhà tỷ phú giầu nhất thế giới này là biết gãi đúng vào cái chỗ ngứa của khách hàng chúng ta cũng như biết tạo ra ra nhu cầu cho khách hàng chúng ta và rồi biết cách trói buộc chúng ta vào cái guồng xoáy vô tận này.

Quay về với thực tế sự việc, liệu lập trình hướng đối tượng có làm mã chương trình lớn lên và chạy chậm đi? Câu trả lời là có thể và có thể không, tùy theo trình độ của người lập trình, ngôn ngữ lập trình và yêu cầu đặc thù của dự án phần mềm đặt ra. Về nguyên tắc, ta không thể được hết mà được cái nó thì phải mất cái kia. Tuy nhiên, một giải pháp tốt nhất bao giờ cũng mang tính thỏa hiệp, tối ưu. Vấn đề là, khách hàng muốn một giải pháp tối ưu (hiệu quả kinh tế, phạm vi chức năng và chất lượng sản phẩm) hay chỉ quan tâm tới mã chương trình chạy nhanh nhất, dung lượng bộ nhớ nhỏ nhất? Thật ra, ngay cả khi ta chỉ quan tâm tới khía cạnh hiệu suất thì lập trình hướng đối tượng với C++ cũng chưa chắc đã thua kém gì so với lập trình có cấu trúc với C (xem Bjarne Stroustrup: "Learning Standard C++ as a New Language". C/C++ Users Journal. pp 43-54. May 1999).

Một điểm cần lưu ý nữa là công nghệ hướng đối tượng không chỉ là lập trình hướng đối tượng. Ngay cả đối với nhiều giải pháp phần mềm tự động hóa, mặc dù ta không lập trình hướng đối tượng nhưng tư duy hướng đối tượng, các phương pháp mô hình hóa hướng đối tượng, phân tích hướng đối tượng cũng giúp ích rất nhiều cho việc thiết kế hệ thống.

Cuối cùng, dù chúng ta muốn hay không muốn, thì công nghệ hướng đối tượng đã đi rất sâu vào lĩnh vực tự động hóa rồi, đặc biệt là trong các công cụ lập trình, các hệ thống phần mềm điều khiển giám sát và phần mềm tích hợp hệ thống. Hay là ta không nên mua các công cụ, sản phẩm nhập ngoại đó mà tự tay lập trình từ 'A' đến 'Z', với một ngôn ngữ như PASCAL hoặc C?

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