Phân tích, thiết kế, lập trình hướng đối tượng

19 439 0
Phân tích, thiết kế, lập trình hướng đối tượng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

319 PHỤ LỤC 4 PHÂN TÍCH, THIẾT KẾ VÀ LẬP TRÌNH HƯỚNG ðỐI TƯỢNG § 1. PHÂN TÍCH HƯỚNG ðỐI TƯỢNG 1.1. Giới thiệu 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ỷ 19, 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. Cùng với sự phát triển của công nghiệp ñiện tử, giá thành phần cứng giảm nhiều, nhưng giá phần mềm lại tăng. Nhất là phí tổn cho bảo trì ñể hệ thống ñáp ứng ñược như cầu của người sử dụng lại chiếm một tỷ trọng rất lớn trong tổng chi phí cho một dự án phát triển phần mềm. ðiều này cho thấy vai trò của công việc phân tích hệ thống là rất quan trọng và cần thiết phải tìm ra phương pháp tốt hơn cho việc phát triển hệ thống. Phân tích làm nhiệm vụ phân tách bài toán thành các thành phần nhỏ hơn. Trong công nghệ phần mềm thì nó còn có nghĩa là phải hiểu rõ quá trình xây dựng ñặc tả yêu cầu của người sử dụng, nắm ñược các chức năng và cách phân rã hệ thống vật lý thành các ñơn thể (module). Theo phương pháp truyền thống thì ñiều ñó thường ñược thực hiện theo cách tiếp cận trên-xuống (top-down), sử dụng phương pháp phân tích có cấu trúc. Phân tích hướng ñối tượng cho phép mô tả hệ thống gần với thế giới thực hơn, xác ñịnh rõ các ñối tượng, trừu tượng hoá các yêu cầu ñể trên cơ sở ñó xây dựng ñược cấu trúc của hệ thống. Phương pháp hướng ñối tượng giải quyết ñược hố ngăn cách giữa phân tích và thiết kế hệ thống. 320 1.2. Các bước thực hiện trong phân tích hướng ñối tượng ðể xây dựng một hệ thống phần mềm thì phải giải quyết ba vấn ñề chính sau: + Dữ liệu, lớp các ñối tượng và cấu trúc của chúng. + Những hành vi thể hiện các chức năng cục bộ, những quá trình trong hệ thống. + ðiều khiển hành vi tổng thể của hệ thống. Trong thực tế, cấu trúc dữ liệu và yêu cầu về hành vi của hệ thống thường xuyên thay ñổi. Do vậy phải phân tích kỹ bài toán, lựa chọn phương pháp phát triển hệ thống thích hợp ñể cho hệ thống có tính chất mở, dễ thích nghi giúp cho công việc bảo trì hệ thống ñỡ tốn kém. Người phân tích hệ thống là người có kiến thức bao quát, có kinh nghiệm trong quá trình phân tích nhiều hệ thống ứng dụng khác nhau, ñồng thời phải có khả năng giao tiếp, trao ñổi và hiểu ñược những người ñầu tư, thiết kế và những người sử dụng hệ thống. Nhiệm vụ của phân tích hệ thống là phải trả lời cho ñược câu hỏi "Hệ thống làm cái gì?" và "Tại sao?". ðể xác ñịnh ñược bài toán và trả lời ñược những câu hỏi nêu trên thì người phân tích cũng cần phải phát hiện, tìm hiểu kỹ những hệ thống ñã có hoặc ñang hoạt ñộng trong thực tế. Có thể ñó chưa phải là hệ thống tin học hoá. Trên cơ sở nghiên cứu những hệ thống cũ, xác ñịnh rõ yêu cầu của người sử dụng ñể quyết ñịnh xem hệ thống cần xây dựng sẽ làm cái gì và hoạt ñộng như thế nào. Trong các phương pháp truyền thống thì mô hình dòng dữ liệu ñược mô tả thông qua sơ ñồ dòng dữ liệu. Các quá trình trong hệ thống ñược xác ñịnh thông qua việc phân rã chức năng top-down. Sơ ñồ biến ñổi trạng thái ñược sử dụng ñể mô tả sự biến ñổi thông tin và dòng ñiều khiển trong hệ thống. Phương pháp hướng ñối tượng kết hợp hai phương diện dữ liệu với quá trình, gộp chung hành vi cục bộ với dữ liệu trong một ñơn vị cấu trúc. Phương pháp phân tích hướng ñối tượng cung cấp cho chúng ta công cụ ñơn giản nhưng ñủ mạnh ñể xác ñịnh các ñối tượng và xây dựng các ñơn nguyên của hệ thống cần phát triển. Phân tích hướng ñối tượng bao gồm các bước sau: + Tìm hiểu bài toán. + Xây dựng các ñặc tả yêu cầu của người sử dụng và của hệ thống phần mềm. + Xác ñịnh các ñối tượng và các thuộc tính của chúng. + Xác ñịnh các hàm mà các ñối tượng sẽ phải thực hiện (hành vi của các ñối tượng). 321 + Xác ñịnh mối quan hệ tương tác giữa các ñối tượng, các thông báo và sự truyền thông báo giữa các ñối tượng. Tìm hiểu bài toán Nhiệm vụ ñầu tiên của quá trình phân tích là phải tìm hiểu kỹ bài toán ứng dụng. Người phân tích phải gặp gỡ, trao ñổi với những người ñầu tư, những người sử dụng ñể biết rõ về chức năng, nhiệm vụ của hệ thống cần phát triển. ðồng thời người phân tích phải tìm hiểu, phát hiện những hệ thống cũ ñã hoặc ñang giải quyết những vấn ñề tương tự như những vấn dề mà hệ thống cần xử lý. Dựa vào những kinh nghiệm, kết quả phân tích những hệ thống cũ, những công việ mà hàng ngàyphải thực hiện ñể xác ñịnh chính xác bài toán. Trên cơ sở ñó làm rõ hơn những yêu cầu của bài toán và ñịnh nghĩa lại theo quan ñiểm của các kỹ sư phầm mềm ñể ñảm bảo ñưa ra ñược lời giải tin học (hệ thống thực hiện ñược trên máy tính). Các khẳng ñịnh về bài toán phải ñơn giản và rõ ràng, mạch lạc về văn phạm. ðiều này giúp cho các kỹ sư phần mềm có ñiều kiện tập chung nhiều hơn vào việc xây dựng lời giải cho bài toán. Dựa trên những khẳng ñịnh của bài toán ñể xây dựng các ñặc tả yêu cầu của người sử dụng lẫn của cả hệ thống phần mềm. Xây dựng các ñặc tả yêu cầu Khi ñã ñịnh nghĩa rõ bài toán thì bước tiếp theo là phải tìm hiểu xem hệ thống dự kiến sẽ yêu cầu làm cái gì? ðiều quan trọng ở ñây là phải xây dựng ñược danh sách các yêu cầu của người sử dụng. Rõ ràng là ở ñây cần có sự trao ñổi, hiểu biết giữa người sử dụng và người phát triển hệ thống về những ñiều mà họ mong muốn. Dựa trên những yêu cầu của người sử dụng, người phát triển ñưa ra các ñặc tả cho hệ thống. Người xây dựng hệ thống phải trả lời ñược các câu hỏi: + ðầu ra (output) của hệ thống là cái gì? + Hệ thống sẽ phải làm cái gì ñể có kết quả mong muốn, nghĩa là phải xử lý cái gì? + ðầu vào (input) của hệ thống là cái gì? + Những tài nguyên mà hệ thống yêu cầu là cái gì? Phải hiểu rõ nguồn gốc, các dạng thông tin cần cung cấp cho hệ thống hoạt ñộng. Hệ thống sẽ giải quyết vấn ñề gì, những kết quả cần phải có là gì. Xác ñịnh ñược mối quan hệ giữa ñầu vào/ra (input/output), nghĩa là xác ñịnh ñược những khẳng ñịnh về mối quan hệ giữa tiền ñiều kiện và hậu ñiều kiện cho các quá trình trong hệ thống. Các ñặc tả chi tiết phục vụ cho việc xây dựng và trắc nghiệm hệ thống ñể kiểm tra xem những nhiệm vụ ñặt ra có ñược hoàn thành hay không. 322 Xác ñịnh các ñối tượng Thông thường các ñối tượng sẽ ñược xác ñịnh thông qua các thực thể trong thế giới thực và ñược trừu tượng hoá thành các ñối tượng trừu tượng. ðể xác ñịnh các ñối tượng chúng ta có nhiều phương pháp khác nhau, chẳng hạn có thể sử dụng sơ ñồ dòng dữ liệu hoặc dựa vào phân tích văn bản. 1. Sơ ñồ dòng dữ liệu: Sơ ñồ dòng dữ liệu là mô hình hệ thống cho cả dữ liệu lẫn quá trình. Thông tin lấy từ các nguồn dữ liệu, ñược chuyển ñến cho một hay nhiều quá trình xử lý và ngược lại, một quá trình khi nhận ñủ thông tin vào (input) thì bắt ñầu thực hiện, xử lý thông tin và cho các kết quả (output) và chúng ñược gửi tới các kho dữ liệu. Trong sơ ñồ dòng dữ liệu, một quá trình sẽ ñược thực hiện khi có ñủ các thông tin ñầu vào. Chức năng quan trọng của quá trình là xử lý dữ liệu, biến ñổi thông tin. Dòng dữ liệu ñược gắn với một tên nhưng không nhất thiết phải là duy nhất. Các dòng dữ liệu, và tên ñược gắn cho nó phải chỉ ra ñược thông tin logic tương ứng cho một quá trình. Tên gắn với dữ liệu phải là danh từ. Kho dữ liệu biểu diễn cho một lượng lớn thông tin cần phải lưu trữ trong một thời gian dài, thường là trong các tệp dữ liệu ñể cho nhiều người có thể truy nhập vào. Sơ ñồ dòng dữ liệu có thể sử dụng ñể biểu diễn quá trình xử lý thông tin trong hệ thống ở nhiều mức ñộ trừu tượng khác nhau, ví dụ có thể làm mịn quá trình "Xử lý ñơn hàng" thành các quá trình "Xử lý ñơn hàng", "Tập hợp ñơn hàng". Chúng ta có thể dựa vào ñịnh nghĩa của sơ ñồ dòng dữ liệu ñể xác ñịnh các ñối tượng. Trong sơ ñồ dòng dữ liệu, những nút dữ liệu, kho dữ liệu có thể ñược xem như là các ñối tượng, tuy rằng không luôn có sự tương ứng 1-1 giữa những nút biểu diễn cho dữ liệu, kho dữ liệu trong sơ ñồ dòng dữ liệu với các ñối tượng. Một ñối tượng có thể là ñại diện của một hay nhiều nút dữ liệu, kho dữ liệu trong sơ ñồ dòng dữ liệu tuỳ thuộc vào ngữ cảnh của vấn ñề mà nó mô tả. 2. Phân tích văn bản: Cách thực hiện thứ hai là dựa trên mô tả bằng văn bản của bài toán hoặc lời giải ñể phân tích. Văn bản mô tả có thể gồm có một hay nhiều câu, một hay nhiều ñoạn, chương, phần, tuỳ thuộc vào mức ñộ phức tạp của bài toán. Trong ñó các ñối tượng thường ñược mô tả bằng các danh từ. Danh từ thường ñược phân loại thành danh từ riêng, danh từ chung, và các danh từ trừu tượng hoặc danh từ chỉ ñại lượng. ðiều quan trọng cần lưu ý khi phân tích là phải dựa vào ngữ nghĩa và ngữ cảnh ñể phân loại danh từ. Một từ có thể là danh từ chung trong ngữ cảnh này song nó cũng có thể là danh từ trừu tượng hoặc danh từ chỉ ñại lượng trong ngữ cảnh khác. Cũng 323 cần lưu ý là không phải tất cả các danh từ ñều ñược dùng ñể biểu diễn cho những ñối tượng cần thiết cho hệ thống của chúng ta. Tóm lại, chúng ta có thể sử dụng một trong hai công cụ trên ñể xác ñịnh danh sách các ñối tượng của bài toán ứng dụng và sau ñó tiếp tục: Xác ñịnh những ñối tượng chỉ nằm trong không gian bài toán, không gian lời giải, và những ñối tượng nằm trong không gian bài toán nhưng nằm ngoài giới hạn của hệ thống phần mềm và xây dựng các thuộc tính cho các ñối tượng của không gian lời giải. Sau khi ñã xác ñịnh ñược các ñối tượng thì nhiệm vụ tiếp theo là xác ñịnh những thuộc tính mô tả các tính chất của từng lớp ñối tượng. Người phân tích có thể dựa vào ba nguồn cung cấp thông tin cơ bản sau ñể tập hợp, xây dựng những thuộc tính cho từng lớp ñối tượng: + Từ những kinh nghiệm, tri thức của người phân tích hệ thống về thực tế công việc trong lĩnh vực tập trung nghiên cứu ñể dự ñoán, xác ñịnh danh sách các thuộc tính. + Từ những người sử dụng, thông qua các cuộc phỏng vấn, trao ñổi và tìm hiểu bài toán cụ thể ñể lập danh sách các thuộc tính. + Từ những hệ thống cũ, những bảng biểu, báo cáo và các tài liệu khoa học ñược sử dụng thường xuyên trong lĩnh vực ñang nghiên cứu ñể chọn lọc ra những thuộc tính cho lớp các ñối tượng ñã xác ñịnh. Ví dụ trong một hệ quản lý kinh doanh sách chúng ta có thể ñề xuất danh sách những thuộc tính cho các lớp SACH, DON_HANG và KHACH_HANG như sau: ðối với lớp SACH Tac_gia : Tên tác giả của cuốn sách Ten_sach : Tên gọi, tiêu ñề của cuốn sách Nha_XB : Nhà xuất bản Nam_XB : Năm xuất bản ðối với lớp DON_HANG So_hieu : Số hiệu ñơn ñặt hàng SH_KH : Số hiệu hoặc tên khách hàng Ngay_DH : Ngày ñặt hàng Ngay_GH : Ngày giao hàng ðối với lớp KHACH_HANG SH_KH : Số hiệu khách hàng Ten_KH : Tên khách hàng Dia_chi : ðịa chỉ, nơi giao hàng TK_KH : Số tài khoản của khách hàng trong ngân hàng 324 Danh sách các thuộc tính của các lớp sẽ ñược tiếp tục xem xét, bổ sung cho ñầy ñủ trong giai ñoạn thiết kế. Cần lưu ý là phải cân nhắc ñể ñưa ra ñược những thuộc tính chung nhất, với những tên gọi ñặc trưng cho từng lớp ñối tượng. Xác ñịnh các hàm ðể mô tả ñầy ñủ, chính xác các ñối tượng chúng ta cần tiếp tục xác ñịnh các hàm mô tả hành vi của chúng. Chúng ta có thể dựa vào văn bản mô tả bài toán ñể xác ñịnh các hàm. Thông thường, trong các câu mô tả thì ñộng từ ñược dùng ñể chỉ một hành ñộng, sự xuất hiện, phân loại hay cấu thành của các ñối tượng. Các ñộng từ chỉ hành ñộng và so sánh giúp cho chúng ta xác ñịnh ñược các hàm, còn ñộng từ chỉ sự xuất hiện, so sánh giúp chúng ta xây dựng ñược cấu trúc phân loại. ðộng từ sở hữu giúp cho việc xác ñịnh những cấu trúc cấu thành của các ñối tượng. Một cách khác là dựa vào sơ ñồ dòng dữ liệu ñể xác ñịnh các hàm, các chức năng ñược biểu diễn bằng các hình tròn hoặc ellipse. Ví dụ, ñể mô tả cho hành vi của ñối tượng trong lớp KHACH_HANG chúng ta phải xây dựng các hàm xử lý những thuộc tính ñã xác ñịnh ở trên như các hàm xác ñịnh những thông tin về khách hàng: số hiệu, họ và tên, ñịa chỉ, tài khoản, . Xác ñịnh mối quan hệ giữa các ñối tượng Bước tiếp theo là xác ñịnh mối quan hệ giữa các ñối tượng, nghĩa là sự trao ñổi thông tin giữa chúng. Như chúng ta thấy, trong một hệ thống mỗi thực thể phải có quan hệ ít nhất với một thực thể khác. Chẳng hạn, trong hệ thống quản lý kinh doanh của công ty phát hành sách, khách hàng muốn mua sách thì phải ghi vào ñơn ñặt hàng, nghĩa là ñối tượng KHACH_HANG sẽ phải gửi một thông báo (ñơn ñặt hàng) cho ñối tượng DON_HANG. Tương tự, DON_HANG lại có quan hệ với SACH vì những cuốn sách sẽ ñược bán cho khách hàng khi nhận ñược các ñơn ñặt hàng. Quan hệ giữa các lớp ñối tượng có thể có những kiểu khác nhau và ñược phân thành ba kiểu sau: + Quan hệ một – một + Quan hệ một – nhiều + Quan hệ nhiều - nhiều § 2. THIẾT KẾ HƯỚNG ðỐI TƯỢNG 2.1. Giới thiệu Mục này sẽ mô tả phương pháp thiết kế phần mềm dựa trên các ñối tượng. Phương pháp hướng ñối tượng nhằm che dấu thông tin ở mức tối ña và vì vậy hỗ trợ cho việc thiết kế những hệ thống với những cặp bộ giữa các thành phần là cực tiểu nhưng mức ñộ cố kết hệ thống lại cao hơn cách tiếp cận chức năng. Chúng ta sẽ tập trung nghiên 325 cứu các bước cần thực hiện trong thiết kế hướng ñối tượng và ví dụ mô tả cách thiết kế các lớp, xây dựng cấu trúc hệ thống trong quá trình phát triển phần mềm. Che giấu thông tin là chiến thuật thiết kế sao cho có thể giấu ñược nhiều nhất lượng thông tin ở bên trong các thành phần cơ sở của một thiết kế. ðiều này có nghĩa là sự trao ñổi giữa các thực thể của thiết kế là cực tiểu và vì vậy thiết kế dễ dàng thay ñổi hơn. Thiết kế hướng ñối tượng (TKHðT) là phương pháp thiết kế ñược thực hiện theo nguyên lý che giấu thông tin. Khác với cách tiếp cận truyền thống (hướng chức năng) là nó xem hệ thống phần mềm là tập hợp các ñối tượng tương tác với nhau. Mỗi ñối tượng làm việc với trạng thái (dữ liệu) riêng của mình. ðối tượng, khái niệm cơ sở ñã ñược ñề cập nhiều ở các phần trước là một thực thể có tập các thuộc tính và tập các hàm tác ñộng trên các thuộc tính ñó. Tập giá trị các thuộc tính xác ñịnh trạng thái của một ñối tượng. Một ñối tượng không ñược quyền truy nhập trực tiếp hoặc làm thay ñổi trạng thái của ñối tượng khác. ðiều này dẫn ñến là các ñối tượng chỉ có thể trao ñổi với nhau bằng các thông báo. Thông báo sẽ kích hoạt các hàm của ñối tượng nhận thông tin tương ứng. Hoạt ñộng của cơ chế truyền thông báo giữa các ñối tượng là dị bộ (không ñồng bộ) vì vậy chương trình ñược thiết kế theo hướng ñối tượng có thể ñược thực hiện song song hoặc tuần tự tuỳ theo phương pháp lập trình và những công cụ mà chúng ta thực hiện cài ñặt có cho phép thực hiện song song hay không. Thiết kế hướng ñối tượng là phương pháp thiết kế hệ thống phần mềm không phụ thuộc vào ngôn ngữ lập trình. Nhiều ñặc tính như “Che dấu”, “kế thừa” làm cho việc thực hiện thiết kế trở nên dễ dàng hơn, ñơn giản hơn. Những thiết kế này cũng có thể ñược cài ñặt bằng ngôn ngữ chưa có ñặc tính ñó như Turbo C, hoặc Pascal, nhưng tốt nhất là nên sử dụng những ngôn ngữ hướng ñối tượng ñể cài ñặt những thiết kế ñược thực hiện theo cách tiếp cận hướng ñối. Nhiều ngôn ngữ lập trình hướng ñối tượng như Eiffel, Object Pascal, Smalltalk, C ++ có những ñặc tính hướng ñối tượng hỗ trợ cho việc mô tả và thực hiện cài ñặt trực tiếp những thiết kế hướng ñối tượng hiệu quả hơn. Tóm lại thiết kế hướng ñối tượng có những ưu ñiểm chính sau: + Loại bỏ ñược những miền dữ liệu dùng chung thông qua cơ chế trao ñổi thông tin giữa các ñối tượng bằng các thông báo. + Các ñối tượng ñược thiết kế là các thực thể ñộc lập (theo nghĩa không sử dụng dữ liệu chung), mọi thay ñổi về trạng thái, bổ sung, sửa ñổi các hoạt ñộng chức năng của một ñối tượng chỉ sảy ra bên trong của ñối tượng ñó, không ảnh hưởng ñến các ñối tượng khác. Mọi sự thay ñổi trong thiết kế, trong hệ thống phần mềm chỉ sảy ra cục bộ ñối với một số ñối tượng liên quan. ðiều này ñảm bảo hệ thống có tính dễ mở rộng và dễ thích nghi, ñáp ứng ñược nhiều tính chất quan trọng của sản phẩm phần mềm. 326 2.2. Các bước thực hiện trong thiết kế hướng ñối tượng Nhiện vụ của thiết kế hướng ñối tượng là xác ñịnh các ñối tượng trong không gian bài toán, chuyển chúng sang không gian lời giải, xây dựng mô hình kiến trúc và mô hình tính toán cho hệ thống phần mềm. ðể xây dựng kiến trúc tổng thể cho hệ thống chúng ta sử dụng cách tiếp cận dưới - lên (bottom - up). ðiều quan trọng là phải tạo ra ñược cấu trúc phân cấp, xác ñịnh ñược các lớp ñối tượng trừu tượng và giảm thiểu ñược sự trao ñổi giữa các ñối tượng. Ở ñây chúng ta cũng ñề cập ñến khả năng sử dụng lại trong thiết kế, phân loại các ñối tượng thành những hệ thống con trong cấu trúc phân cấp. Cách tiếp cận TKHðT gồm các bước sau: + Xác ñịnh các lớp và các ñối tượng, các thành phần cơ bản của lời giải. + Xây dựng các ñặc tả cho các lớp và mối quan hệ giữa chúng. + Xây dựng cấu trúc phân cấp cho các lớp. + Thiết kế các lớp. + Thiết kế các hàm thành phần của lớp. + Thiết kế chương trình chính. Xác ñịnh các ñối tượng trong không gian lời giải Khi phân tích văn bản mô tả bài toán và các yêu cầu của người sử dụng, chúng ta xác ñịnh ñược các thực thể, những ñối tượng trong không gian bài toán. Bước tiếp theo là phân tích kỹ các ñối tượng, xác ñịnh các thuộc tính và các hàm ñặc tả cho từng ñối tượng. ðồng thời xác ñịnh thêm những ñối tượng mới xuất hiện trong không gian lời giải. Khi xây dựng các ñặc tả cho ñối tượng, chúng ta phải xác ñịnh ñược các thuộc tính, dữ liệu mô tả trạng thái của ñối tượng và các hàm mô tả hành vi của ñối tượng. Thuộc tính là miền dữ liệu riêng của lớp ñối tượng, là dữ liệu cục bộ trong một lớp. Thực hiện nguyên lý che giấu thông tin, trong một lớp dữ liệu có thể tổ chức thành hai vùng: vùng sở hữu riêng, chỉ dành riêng cho những ñối tượng trong cùng lớp và vùng dùng chung, cho phép những ñối tượng trong các lớp có quan hệ với nhau ñược quyền sử dụng. Các hàm (nhiều sách còn gọi là thủ tục, dịch vụ, phương thức) có thể dùng chung cho một số ñối tượng. Quá trình xác ñịnh các hàm mô tả ñối tượng (còn ñược gọi là hàm thành phần của lớp) ñược thực hiện như sau: + Nếu một hàm chỉ cần thiết cho một ñối tượng thì hàm này chỉ hoạt ñộng trong ñối tượng yêu cầu. + Nếu có hai hoặc nhiều hơn ñối tượng cần yêu cầu về một hàm thì cần phải xác ñịnh vùng hoạt ñộng riêng của hàm trong các ñối tượng ñó. + Nếu có một hàm cần nhiều hơn một kiểu ñối tượng (liên quan ñến hai hoặc nhiều hơn các lớp ñối tượng) thì hàm ñó không phải là một hàm cố kết, do vậy cần phải phân tách dịch vụ ñó ra thành các hàm mịn hơn. Bằng cách ñó chúng ta xây dựng ñược danh sách các hàm mô tả hành vi của các ñối tượng. ðồng thời chúng ta cũng loại bỏ ñược những dư thừa, những thành phần phụ không cần thiết trong cấu trúc và trong các ñối tượng. 327 Sự phụ thuộc giữa các lớp Mục tiêu của thiết kế là xây dựng cấu trúc phân cấp cho hệ thống. Do vậy, nhiệm vụ tiếp theo của chúng ta là xác ñịnh mối quan hệ giữa các lớp ñối tượng cấu thành hệ thống. Lớp là tập hợp các ñối tượng có chung một số thuộc tính, một số hàm vừa ñủ ñể phân biệt với những lớp khác. ðối tượng là thể hiện của lớp. Trong thiết kế, khái niệm lớp ñối tượng và ñối tượng là hầu như không phân biệt, các lớp biểu diễn cho các ñối tượng trong không gian lời giải. ðể xây dựng ñược mô hình kiến trúc cho hệ thống phần mềm, chúng ta cần phân biệt ba loại quan hệ quan trọng giữa các lớp: + Quan hệ kế thừa + Quan hệ thành phần + Quan hệ về sử dụng Tổ chức phân cấp các lớp (theo nghuyên lý tổng quát hoá) Ở trên chúng ta ñã nghiên cứu mối quan hệ mà chủ yếu là quan hệ kế thừa của các lớp ñối tượng. Ở ñây chúng ta dựa vào những mối quan hệ ñó ñể xây dựng cấu trúc phân cấp trên nguyên tắc sử dụng lại tối ña các thuộc tính và hàm của những lớp ñã ñược thiết kế trước. Tổ chức phân cấp các lớp là tập trung phân tích từng nhóm lớp có liên quan ñể xác ñịnh ñược những thuộc tính, hàm chung nhất của cả nhóm và sau ñó kết hợp chúng lại ñể tạo ra lớp mới. Lớp mới ñược gọi là lớp trừu tượng và cũng là lớp cơ sở ñể cho các lớp trong cùng nhóm kế thừa. Lớp trừu tượng có thể có hoặc không có thể hiện là ñối tượng trong không gian bài toán. Nó ñược tạo ra thuần tuý bằng cách gộp những thuộc tính chung lại ở nhiều mức trừu tượng khác nhau cho ñến khi cảm thấy chắc chắn không còn một lớp nào mới ñược tạo ra nữa. Thiết kế các lớp Trong bước phân tích, chúng ta ñã xác ñịnh ñược các lớp với các thuộc tính và tập tối thiểu các hàm chính thực hiện trên các thuộc tính mô tả ñối tượng của lớp ñó. ðể xây dựng ñược thiết kế tổng thể cho hệ thống, chúng ta cần xem xét các lớp ở mức ñộ chi tiết, bổ sung thêm những thuộc tính, hàm cần thiết cho các lớp ñối tượng. Ngoài những hàm thể hiện ñặc tính cơ bản của ñối tượng trong một lớp, chúng ta cần bổ sung các hàm phục vụ sau: + Những hàm quản lý lớp (trả lời cho các câu hỏi sau): - Một ñối tượng ñược tạo lập như thế nào? - Một ñối tượng ñược huỷ bỏ như thế nào? + Những hàm thực hiện cài ñặt lớp - Những phép toán nào ñược thực hiện trên dữ liệu kiểu lớp? + Những hàm truy nhập vào lớp - Làm thế nào chúng ta nhận ñược thông tin về các biến nội bộ của một lớp. 328 + Hàm xử lý lỗi - Làm thế nào xử lý ñược các lỗi xuất hiện khi thao tác với các ñối tượng. ðể thiết kế các lớp chúng ta cần phải biết rõ cách thức trao ñổi thông tin giữa các ñối tượng, các mối quan hệ về kế thừa, quan hệ thành phần và quan hệ về sử dụng lại trong các lớp. Kết quả thiết kế lớp sẽ ảnh hưởng rất lớp ñến chất lượng phần mềm. Vì vậy khi thiết kế lớp chúng ta cần chú ý những vấn ñề sau: + Các lớp chỉ trao ñổi với nhau thông qua các hàm. + Một ñối tượng của một lớp không ñược gửi thông báo trực tiếp cho ñối tượng của lớp khác. + Hàm ñược khai báo là chung (public) chỉ khi nó ñược sử dụng chung cho nhiều ñối tượng của một lớp. + Mỗi hàm làm nhiệm vụ truy nhập hoặc làm thay ñổi một số dữ liệu của lớp mà nó biểu diễn. + Sự phụ thuộc của một lớp vào các lớp khác càng ít càng tốt. + Tương tác giữa các lớp phải luôn luôn tường minh. 7. Lớp dẫn xuất là một trường hợp của lớp cơ sở, ñược bổ sung thêm một số ñặc tính riêng ñể mô tả chi tiết hơn về lớp con của lớp cơ sở. + Lớp trên cùng của cấu trúc phân cấp biểu diễn mô hình khái niệm trừu tượng của hệ thống. Thiết kế hàm thành phần ðến giai ñoạn này chúng ta ñã xây dựng ñược: + Các ñối tượng và lớp + Các thành phần dữ liệu + Giao diện giữa các ñối tượng + Sự phụ thuộc của các lớp + Cấu trúc phân cấp các lớp Bây giờ là lúc chúng ta cần xem xét ñến việc thiết kế các hàm thành phần, những phép toán thực hiện trên các dữ liệu của ñối tượng. Các hàm này cũng giống như các hàm trong ngôn ngữ lập trình C vì vậy chúng ta có thể sử dụng kỹ thuật phân rã chức năng trên-xuống (top-down) ñể thiết kế chúng. Trong mỗi khối chúng ta lại có thể sử dụng kỹ thuật thiết kế có cấu trúc ñể tạo ra cấu trúc phân cấp về chức năng cho những hàm phức tạp. Nhiều ngôn ngữ lập trình phổ dụng, như C, C ++ ñã ñược xây dựng ñể hỗ trợ cho phương pháp mô tả thiết kế và lập trình có cấu trúc. Chúng ta có thể cài ñặt các ñơn thể ñược cấu thành từ những cấu trúc tuần tự, tuyển chọn và vòng lặp. Có thể thiết kế các hàm thành phần theo phương pháp có cấu trúc. Kết quả của thiết kế có cấu trúc cho một hàm là một cấu [...]... ư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... thích h p ñ phát tri n ph n m m Trong các m c §1 và §2 chúng ta ñã ñ c p ñ n phương pháp phân tích, thi t k hư ng ñ i tư ng Trong m c này chúng ta ti p t c nghiên c u v phương pháp l p trình hư ng ñ i tư ng L p trình hư ng ñ i tư ng ñ t tr ng tâm vào ñ i tư ng, y u t quan tr ng trong quá trình phát tri n chương trình và nó không cho phép d li u chuy n ñ ng t do trong h th ng D li u ñư c g n ch t v i... i phát tri n ph n m m 3.5 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... h p t m t trong ba c u trúc cơ b n: c u trúc tu n t , tuy n ch n và vòng l p Thi t k chương trình chính Bư c cu i cùng trong khâu thi t k h th ng là xây d ng chương trình chính, gi ng như chương trình main() trong ngôn ng C++ H th ng ñư c b t ñ u và k t thúc t i chương trình chính Do v y nhi m v c a chương trình chính là: + Nh p d li u t ngư i s d ng + T o ra các ñ i tư ng theo ñ nh nghĩa các l p +... li u và các hàm m i có th d dàng b sung vào ñ i tư ng nào ñó khi c n thi t + Chương trình ñư c thi t k theo cách ti p c n bottom-up (dư i-lên) L p trình hư ng ñ i tư ng là khái ni m m i và ñư c hi u r t khác nhau ñ i v i nhi u ngư i ñây chúng ta có th hi u l p trình hư ng ñ i tư ng là cách ti p c n ñ phân chia chương trình thành các ñơn th (module) b ng cách t o ra các vùng b nh cho c d li u l n hàm... hình, máy in, thi t b ngo i vi theo yêu c u ngư i s d ng M i ho t ñ ng, x lý trong quá trình th c hi n chương trình ñ u là k t qu c a s trao ñ i, tương tác gi a các ñ i tư ng Vì v y nhi m v ch y u c a thi t k chương trình là xác ñ nh th t logic c a quá trình trao ñ i thông tin gi a các ñ i tư ng trong h th ng Chương trình chính liên quan tr c ti p ñ n ngư i s d ng Vì v y trong thi t k chúng ta cũng c... 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... các hàm ch c năng L p trình hư ng th t c (LTHTT) s d ng k thu t phân rã hàm ch c năng theo cách ti p c n top-down ñ t o ra c u trúc phân c p Chương trình ñư c xây d ng theo cách ti p c n hư ng th t c th c ch t là danh sách các câu l nh mà theo ñó máy tính c n th c hi n Danh sách các l nh ñó ñư c t ch c thành t ng nhóm theo ñơn v c u trúc cú pháp c a ngôn ng ñ c t hay ngôn ng l p trình và ñư c g i là... ñá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... li u + T ñ ng t o l p và xoá b các ñ i tư ng + Phép toán t i b i 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 . pháp phân tích, thiết kế hướng ñối tượng. Trong mục này chúng ta tiếp tục nghiên cứu về phương pháp lập trình hướng ñối tượng. Lập trình hướng ñối tượng. 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.

Ngày đăng: 30/09/2013, 00:20

Hình ảnh liên quan

khuơn hình 273 tương ứng bội 191 - Phân tích, thiết kế, lập trình hướng đối tượng

khu.

ơn hình 273 tương ứng bội 191 Xem tại trang 18 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan