C++ và Lập trình hướng đối tượng - Phụ lục 6: Phân tích, thiết kế và lập trình hướng đối tượng

Phân tích hệ thống không chỉ có liên quan chặt chẽ với sự xuất hiện của máy tính, mà thực tế nhu cầu phân tích đã có trước khi máy tính xuất hiện từ nhiều thế kỷ. Khi các Vua Pharaon của Ai Cập cổ đại xây dựng các Kim Tự Tháp, thì những người thiết kế Kim Tự Tháp có thể được coi như những nhà thiết kế hệ thống, những kiến trúc sư đại tài, còn những người tổ chức vận chuyển nguyên vật liệu, huy động nhân công xây dựng Kim Tự Tháp, theo một nghĩa nào đó, chính là những người phân tích hệ thống. Từ giữa thế kỷ trước, các nhà tư bản, các doanh nghiệp muốn có lợi nhuận cao đã phải tiến hành nghiên cứu phương pháp, cách tổ chức, phân công lao động hợp lý để cho các hệ thống sản xuất, kinh doanh hoạt động đạt hiệu quả cao hơn. Chính họ đã thực hiện phân tích những hệ thống đó để đề ra những phương pháp quản lý, cách tổ chức mới, tốt hơn.

doc29 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 2505 | Lượt tải: 0download
Tóm tắt nội dung C++ và Lập trình hướng đối tượng - Phụ lục 6: Phân tích, thiết kế và lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
t số tính chất tạo ra một lớp mới kế thừa lớp cũ mà không làm thay đổi những cái đã có.
Khái niệm kế thừa được hiểu như cơ chế sao chép ảo không đơn điệu. Trong thực tế, mọi việc xảy ra tựa như những lớp cơ sở đều được sao vào trong lớp con (lớp dẫn xuất) mặc dù điều này không được cài đặt tường minh (nên gọi là sao chép ảo) và việc sao chép chỉ thực hiện đối với những thông tin chưa được xác định trong các lớp cơ sở (sao chép không đơn điệu). Do vậy, có thể diễn đạt cơ chế kế thừa như sau:
625	626	
1. Lớp A kế thừa lớp B sẽ có (không tường minh) tất cả các thuộc tính, hàm đã được xác định trong B.
2. Bổ sung thêm một số thuộc tính, hàm để mô tả được đúng các hành vi của những đối tượng mà lớp A quản lý.
Tương ứng bội
Một khái niệm quan trọng nữa trong LTHĐT là khái niệm tương ứng bội. Tương ứng bội là khả năng của một khái niệm (như các phép toán) có thể được xuất hiện ở nhiều dạng khác nhau. Ví dụ, phép + có thể biểu diễn cho phép "cộng" các số nguyên (int), số thực (float), số phức (complex) hoặc xâu ký tự (string) v.v... Hành vi của phép toán tương ứng bội phụ thuộc vào kiểu dữ liệu mà nó sử dụng để xử lý. Hình 3-5 cho chúng ta thấy hàm có tên là VE có thể sử dụng để vẽ các hình khác nhau phụ thuộc vào tham số (được phân biệt bởi số lượng, kiểu của tham số) khi gọi để thực hiện.
HINH_HOC
VE()
HINH_TRON
DA_GIAC
DUONG_THANG
VE(TRON)
VE(DA_GIAC)
VE(DUONG_TH)
Hình 3-5. Tương ứng bội của hàm VE()
Hàm VE() là hàm tương ứng bội và nó được xác định tuỳ theo ngữ cảnh khi sử dụng.
Tương ứng bội đóng vai trò quan trọng trong việc tạo ra các đối tượng có cấu trúc bên trong khác nhau nhưng có khả năng cùng dùng chung một giao diện bên ngoài (như tên gọi). Điều này có nghĩa là một lớp tổng quát các phép toán được định gnhĩa theo cùng một cách giống nhau. Tương ứng bội là mở rộng khái niệm sử dụng lại trong nguyên lý kế thừa.
Liên kết động
Liên kết động là dạng liên kết các hàm, thủ tục khi chương trình thực hiện các lời gọi tới các hàm, thủ tục đó. Như vậy trong liên kết động, nội dung của đoạn chương trình ứng với thủ tục, hàm sẽ không được biết cho đến khi thực hiện lời gọi tới thủ tục, hàm đó. Liên kết động liên quan chặt chẽ tới tương ứng bội và kế thừa. Chúng ta hãy lưu ý hàm VE() trong Hình 4-5. Theo nguyên lý kế thừa thì mọi đối tượng đều có thể sử dụng hàm này để vẽ hình theo yêu cầu. Tuy nhiên, thuật toán thực hiện hàm VE() là duy nhất đối với từng đối tượng HINH_TRON, DA_GIAC, DUONG_THANG và vì vậy hàm VE() sẽ được định nghĩa lại khi các đối tượng tương ứng được xác định. Khi thực hiện, ví dụ như khi vẽ một hình tròn, đoạn chương trình ứng với hàm VE() hình tròn được gọi ra để thực hiện.
Truyền thông báo
Chương trình hướng đối tượng (được thiết kế và lập trình theo hướng đối tượng) bao gồm một tập các đối tượng và mối quan hệ giữa các đối tượng với nhau. Vì vậy, lập trình trong ngôn ngữ hướng đối tượng bao gồm các bước sau:
1. Tạo ra các lớp xác định các đối tượng và hành vi của chúng.
2. Tạo ra các đối tượng theo định nghĩa của các lớp.
3. Xác định sự trao đổi giữa các đối tượng.
Các đối tượng gửi và nhận thông tin với nhau giống như con người trao đổi với nhau. Chính nguyên lý trao đổi thông tin bằng cách truyền thông báo cho phép chúng ta dễ dàng xây dựng được hệ thống mô phỏng gần hơn những hệ thống trong thế giới thực. Truyền thông báo cho một đối tượng tức là báo cho nó phải thực hiện một việc gì đó. Cách ứng xử của đối tượng sẽ được mô tả ở trong lớp thông qua các hàm (hay còn được gọi là lớp dịch vụ).
627	628	
Trong chương trình, thông báo gửi đến cho một đối tượng chính là yêu cầu thực hiện một công việc cụ thể, nghĩa là sử dụng những hàm tương ứng để xử lý dữ liệu đã được khai báo trong đối tượng đó. Vì vậy, trong thông báo phải chỉ ra được hàm cần thực hiện trong đối tượng nhận thông báo. Hơn thế nữa,thông báo truyền đi phải xác định tên đối tượng, tên hàm (thông báo) và thông tin truyền đi. Ví dụ, lớp CONG_NHAN có thể hiện là đối tượng cụ thể được đại diện bởi Ho_Ten nhận được thông báo cần tính lương thông qua hàm TINH_LUONG đã được xác định trong lớp CONG_NHAN. Thông báo đó sẽ được xử lý như sau:
CONG_NHAN.TINH_LUONG (Ho_Ten)
Đối tượng	Thông báo	Thông tin
Mỗi đối tượng chỉ tồn tại trong thời gian nhất định. Đối tượng được tạo ra khi nó được khai báo và sẽ bị huỷ bỏ khi chương trình ra khỏi miền xác định của đối tượng đó. Sự trao đổi thông tin chỉ có thể thực hiện trong thời gian đối tượng tồn tại.
Các ưu điểm của lập trình hướng đối tượng
Như trên chúng ta đã phân tích, lập trình hướng đối tượng đem lại một số lợi thế cho cả người thiết kế lẫn người lập trình. Cách tiếp cận hướng đối tượng giải quyết được nhiều vấn đề tồn tại trong quá trình phát triển phần mềm và tạo ra được những sản phẩm phần mềm có chất lượng cao. Những phương pháp này mở ra một triển vọng to lớn cho những người lập trình. Hy vọng sẽ có nhiều sản phẩm phần mềm tốt hơn, đáp ứng được những tính chất về sản phẩm chất lượng cao trong công nghệ phần mềm và nhất là bảo trì hệ thống ít tốn kém hơn. Những ưu điểm chính của LTHĐT là:
1. Thông qua nguyên lý kế thừa, chúng ta có thể loại bỏ được những đoạn chương trình lặp lại, dư thừa trong quá trình mô tả các lớpp và mở rộng khả năng sử dụng các lớp đã được xây dựng.
2. Chương trình được xây dựng từ những đơn thể (đối tượng) trao đổi với nhau nên việc thiết kế và lập trình sẽ được thực hiện theo quy trình nhất định chứ không phải dựa vào kinh nghiệm và kỹ thuật như trước. Điều này đảm bảo rút ngắn được thời gian xây dựng hệ thống và tăng năng suất lao động.
3. Nguyên lý giấu thông tin giúp người lập trình tạo ra được những chương trình an toàn không bị thay bởi những đoạn chương trình khác.
4. Có thể xây dựng được ánh xạ các đối tượng của bài toán vào đối tượng của chương trình.
5. Cách tiếp cận thiết kế đặt trọng tâm vào đối tượng, giúp chúng ta xây dựng được mô hình chi tiết và gần với dạng cài đặt hơn.
6. Những hệ thống hướng đối tượng dễ mở rộng, nâng cấp thành những hệ lớn hơn.
7. Kỹ thuật truyền thông báo trong việc trao đổi thông tin giữa các đối tượng giúp cho việc mô tả giao diện với các hệ thống bên ngoài trở nên đơn giản hơn.
8. Có thể quản lý được độ phức tạp của những sản phẩm phần mềm.
Không phải trong hệ thống hướng đối tượng nào cũng có tất cả các tính chất nêu trên. Khả năng có các tính chất đó còn phụ thuộc vào lĩnh vực ứng dụng của dự án tin học và vào phương pháp thực hiện của người phát triển phần mềm.
3.4. Các ngôn ngữ hướng đối tượng
Lập trình hướng đối tượng không là đặc quyền của một ngôn ngữ nào đặc biệt. Cũng giống như lập trình có cấu trúc, những khái niệm trong lập trình hướng đối tượng có thể cài đặt trong những ngôn ngữ lập trình như C hoặc Pascal. Tuy nhiên, đối với những chương trình lớn, phức hợp thì vấn đề lập trình sẽ trở nên phức tạp, nếu sử dụng những ngôn ngữ không phải là ngôn ngữ hướng đối tượng thì phải thực hiện nhiều thoả hiệp. Những ngôn ngữ được thiết kế đặc biệt, hỗ trợ cho việc mô tả, cài đặt các khái niệm của phương pháp hướng đối tượng được gọi chung là ngôn ngữ hướng đối tượng.
Dựa vào khả năng đáp ứng các khái niệm về hướng đối tượng, chúng ta có thể chia ra làm hai loại:
1. Ngôn ngữ lập trình dựa trên đối tượng (object - based)
2. Ngôn ngữ lập trình hướng đối tượng (object - oriented)
Lập trình dựa trên đối tượng là kiểu lập trình hỗ trợ chính cho việc bao gói, che giấu thông tin và định danh các đối tượng. Lập trình dựa trên đối tượng có những đặc tính sau:
+ Bao gói dữ liệu
+ Cơ chế che giấu và truy nhập dữ liệu
+ Tự động tạo lập và xoá bỏ các đối tượng
+ Phép toán tải bội
629	630	
Ngôn ngữ hỗ trợ cho kiểu lập trình trên được gọi là ngôn ngữ lập trình dựa trên đối tượng. Ngôn ngữ trong lớp này không hỗ trợ cho việc thực hiện kế thừa và liên kết động. Ada là ngôn ngữ lập trình dựa trên đối tượng.
Lập trình hướng đối tượng là kiểu lập trình dựa trên đối tượng và bổ sung thêm nhiều cấu trúc để cài đặt những quan hệ về kế thừa và liên kết động. Vì vậy đặc tính của LTHĐT có thể viết một cách ngắn gọn như sau:
Các đặc tính dựa trên đối tượng + kế thừa + liên kết động.
Ngôn ngữ hỗ trợ cho những đặc tính trên được gọi là ngôn ngữ LTHĐT, ví dụ như C++, Smalltalk, Object Pascal hay Eiffel v.v...
Việc chọn một ngôn ngữ để cài đặt phần mềm phụ thuộc nhiều vào các đặc tính và yêu cầu của bài toán ứng dụng, vào khả năng sử dụng lại của những chương trình đã có và vào tổ chức của nhóm tham gia xây dựng phần mềm. Tương tự như ngôn ngữ lập trình C, C++ đang được sử dụng rộng rãi, và rất thành công trong việc sử dụng để cài đặt các hệ thống phần mềm phức tạp.
3.5. Những ứng dụng của LTHĐT
LTHĐT là một trong những thuật ngữ được nhắc đến nhiều nhất hiện nay trong công nghệ phần mềm và nó được ứng dụng để phát triển phần mềm trong nhiều lĩnh vực khác nhau. Trong số đó, có ứng dụng quan trọng và nổi tiếng nhất hiện nay là lĩnh vực thiết kế giao diện với người sử dụng, ví dụ như Windows. Hàng trăm hệ thống với giao diện Windows đã được phát triển dựa trên kỹ thuật LTHĐT. Những hệ thông tin doanh nghiệp trong thực tế rất phức tạp, chứa nhiều đối tượng với các thuộc tính và hàm phức tạp. Để giải quyết những hệ thống phức hợp thế thì LTHĐT lạ tỏ ra khá hiệu quả. Tóm lại, những lĩnh vực ứng dụng của kỹ thuật LTHĐT bao gồm:
+ Những hệ thống làm việc theo thời gian thực.
+ Trong lĩnh vực mô hình hoá hoặc mô phỏng các quá trình.
+ Các cơ sở dữ liệu hướng đối tượng.
+ Những hệ siêu văn bản, multimedia.
+ Lĩnh vực trí tuệ nhân tạo và các hệ chuyên gia.
+ Lập trình song song và mạng nơ-ron.
+ Những hệ tự động hoá văn phòng và trợ giúp quyết định.
+ Những hệ CAM/CAM.
Với nhiều đặc tính phong phú của LTHĐT nói riêng, của phương pháp phát triển hướng đối tượng nói chung, chúng ta hy vọng nền công nghiệp phần mềm sẽ cải tiến không những về chất lượng mà còn gia tăng nhanh về số lượng trong tương lai. Kỹ nghệ hướng đối tượng sẽ làm thay đổi cách suy nghĩ và cách thực hiện quá trình phân tích, thiết kế và cài đặt các hệ thống, góp phần giải quyết những vấn đề tồn tại trong công nghệ phần mềm.
631	

File đính kèm:

  • docC++ và Lập trình hướng đối tượng - Phụ lục 6 Phân tích, thiết kế và lập trình hướng đối tượng.doc
Tài liệu liên quan