1. Trang chủ
  2. » Công Nghệ Thông Tin

phân tích thiết kế hướng đối tượng: phần 2 - pgs. ts phạm văn Đức

143 3 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 143
Dung lượng 5,56 MB

Nội dung

sau đây là nội dung phần 2 của cuốn sách. phần 2 trình bày kỹ thuật mô hình hóa, từ phân tích yêu cầu đến thiết kế hệ thống, kiến trúc hệ thống và cài đặt bằng ngôn ngữ lập trình. Đặc biệt, trong mỗi chương tài liệu đều có phần thực hành trên phần mềm rational rose để độc giả có thể áp dụng ngày công cụ mới, kỹ thuật mới vào giải quyết vấn đề của riêng họ. phần phụ lục trình bày một số mã trình trong một vài ngôn ngữ thông dụng tương ứng với các nhóm phần tử trong biểu đồ uml… mời các bạn cùng tham khảo.

CHƯƠNG BIỂU ĐỒ LỚP VÀ GÓI Sau phân tích lĩnh vực vấn đề, ta tìm hiểu sâu đối tượng để xây dựng mơ hình đối tượng Chương bốn đề cập đến kỹ thuật thiết kế hệ thống xây dựng biểu đồ cộng tác Chương khảo sát kỹ thuật thiết kế khác, biểu đồ lớp Phần cuối chương số vấn đề liên quan đến ánh xạ đối tượng vào CSDL 5.1 LỚP VÀ TIỀM KIẾM LỚP Như trình bày chương trước, đối tượng tồn giới thực Nó phần hệ thống máy móc, tổ chức… Nhưng có đối tượng khơng tồn trực tiếp, mà phát sinh từ khảo sát cấu trúc hay hành vi đối tượng giới thực Do vậy, đối tượng đối tượng giới thực liên quan đến hiểu biết giới thực Lớp mô tả thuộc tính, hành vi ngữ nghĩa kiểu (một tập) đối tượng Đối tượng thực lớp Quan hệ đối tượng với lớp tương tự quan hệ biến với kiểu biến ngơn ngữ lập trình thơng thường Chúng ta sử dụng khái niệm lớp để phân tích đối tượng nhận giới thực Nhà bác học Darwin sử dụng khái niệm lớp để mơ tả nịi giống lồi người Ơng ta tổ hợp lớp thơng qua kế thừa để mơ tả thuyết tiến hóa Tương tự, kỹ thuật kế thừa lớp sử dụng thiết kế hệ thống phần mềm theo phương pháp hướng đơi tượng Khơng có lý để xây dựng lớp trước tìm đối tượng Biết đối tượng thực lớp, lớp phải đặc tả đầy đủ, rõ ràng sau đặc tả đối tượng Thế giới quanh ta bao gồm đối tượng lớp, vập tìm đối tượng trước trừu tượng lớp từ chúng Tóm lại, lớp cung cấp kế hoạch chi tiết cho đối tượng Nói cách khác lớp xác định thông tin đối tượng lưu giữ hành vi đối tượng có Thí dụ lớp tài khoản ơng A Account, lớp nhà số Tràng Tiền House… Lớp House cho biết nhà co độ cao, chiều rộng, tổng số buồng Lớp khái niệm tổng quát, jo1 cho ta mẫu đối tượng Ký pháp lớp UML biểu diễn hình chữ nhật có ba phần dành cho tên lớp, thuộc tính thao tác (hình 5.1) Tên lớp thường danh từ bắt đầu chữ hoa Thuộc tính có tên nó, kiểu đặc tả, giá trị khởi đầu, kiểu giá trị ràng buộc Thao tác có tên, danh sách kiểu giá trị tham số (có thể có giá trị khởi đầu) ràng buộc Phía tên lớp hình 5.1a tên stereotype lớp dấu Dưới tên lớp dấu ngoặc nhọn mở rộng ngữ nghĩa phần tử mơ hình (tagged values) [OEST00], thí dụ chúng xâu ký tự {abtract} Tên lớp có tiền tố, thí dụ tiền tố tên gói trước hai dấu chấm HÌnh 5.1b ví dụ ký pháp lớp hình trịn Circle Chúng có thuộc tính bán kính (radius), vị trí (position) thao tác display(), remove(), setPosition(pos) setRadius(newRadius) Trong thí dụ khơng có ký pháp gói cịn ràng buộc {radius>0} cho biết thuộc tính địi hỏi giá trị radius ln lớn Giá trị khởi đầu (10,10) thuộc tính center có nghĩa đối tượng lớp Circle tạo lập thuộc tính gán giá trị (10,10) Phát triển phần mềm UML trang | 92 Circle Package::Class {Propertive Value} attribute : Type = initialValue{Constrain} operation(Parameter) : {Constrain} radius{radius>0} center:Point=(10,10) display() remove() setPosition(pos : Poin) setRadius(newRadius) b) a) Hình 5.1 Ký pháp đồ họa lớp Vấn đề khó khăn thiết kế theo quan điểm hướng đối tượng tìm đầy đủ lớp cho hệ thống Mặc dù vậy, đơi dễ dàng tìm số lớp Nhiều tài liệu có lời khuyên nơi tốt để bắt đầu tìm lớp luồng kiện UC Tìn danh từ luồn kiện cho ta biết lớp Động từ phương pháp Hãy ý danh từ tìm khơng thiế lớp mà bốn loại sau: tác nhân, lớp, thuộc tính lớp biểu thức khơng phải loại Lớp cịn tìm thấy biểu đồ tương tác Tìm chung đối tượng để hình thành lớp Thí dụ tạo lập biểu đồ trình tự tiến trình chi trả cho khách hàng ứng dụng ATM Biểu đồ có hai đối tượng Khách hàng A Khách hang B rút tiền Cả Khách hàng A Khách hang B có chung vài thuộc tính, tên khách hàng, địa chỉ, số diện thoại Hơn nữa, hai có số thao tác tương tự Vậy lớp hình thành (thí dụ lớp Employee) cho đối tượng Khách hàng A Khách hang B Mỗi đối tượng biểu đồ tương tác ánh xạ vào lớp tương ứng Tuy nhiên số lớp khơng thể tìm thấy luồng kiện biểu đồ tương tác Trong pha phân tích yêu cầu thường nhận thấy nhu cầu quan sát liệu báo khác Mỗi loại báo cáo biểu diễn lớp Nếu có q nhiều loại báo cáo thơng thường báo cáo tương tự tập hợp để biểu diễn lớp, đồng thời sử dụng biến thành phần để quản lý biến thể khác báo cáo Nhóm lớp khác hình thành để biểu diễn giao diện thành phần khác hệ thống, đặc biệt để biểu diễn giao diện lớp ta tạo với hệ thống khác mà tương tác Giao diện nơi đối tượng tương tác với số đối tượng khác (thí dụ trình điều khiển máy in hay lớp thư viện) Các lớp giao diện hình thành tầng ảo, bảo vệ thiết kế ta trước thay đổi hai phía giao diện Một tập lớp khác hình thành để biểu diễn thiết bị phần cứng khác mà hệ thống phần mềm tương tác Thí dụ, hệ thống rút tiền tự động ATM tương tác với máy đọc thẻ từ mày in, thiết bị phần cứng đươc biểu diễn lớp Việc biểu diễn thiết bị giao diện lớp cho khả bao gói yêu cầu riêng chúng Nếu phải thay thiết bị sau này, ta khơng thể viết lại tồn mã trình có Tốt việc tìm kiếm lớp phải thưc với chuyên gia lĩnh vực vấn đề Sau sơ câu hỏi giúp ta tìm lớp [ERIK98]: · Có thơng in cần lưu trữ hay phân tích? Nếu có ứng viên lớp · Có hệ thống ngồi khơng? Nếu có xem lớp chứa hệ thống ta hay hệ thống ta tương tác với chúng · Có mẫu, thư viện lớp, thành phần…? Nếu có, thơng thường chúng chứa ứng viên lớp Phát triển phần mềm UML trang | 93 · Hệ thống cần quản lý thiết bị ngoại vi nào? Mọi thiết bị kỹ thuật nối với hệ thống ứng viên lớp · Tác nhân đóng vai trị tác nghiệp nào? Các nhiệm vụ lớp; Thí dụ người sử dụng, thao tác viên hệ thống, khách hàng… 5.2 BIỂU ĐỒ LỚP Biểu đồ lớp biểu đồ đối tượng thuộc hai góc nhìn mơ hình bổ sung cho Biểu đồ lớp trừu trượng giới thực, tập trung vào giải thích cấu trúc tĩnh từ góc nhìn tổng qt Biểu đồ đối tượng biểu diễn trường hợp đặc biệt, cụ thể vào thời điểm, thể cấu trúc tĩnh hành vi Thông thường ta xây dựng đồng thời biểu đồ lớp biểu đồ đối tượng Khung nhìn logic chứa thành phần đồ họa sau: biểu đồ tương tác, lớp, biểu đồ lớp, biểu đồ UC, thuộc tính, thao tác, kết hợp (association) biểu đồ chuyển trạng thái Trong biểu đồ lớp sử dụng để hiển thị lớp gói chúng hệ thống Biểu đồ lớp cho hình ảnh tĩnh phận hệ thống quan hệ giữ chúng Thơng thường hệ thống có vài biểu đồ lớp Một số biểu đồ lớp số hiển thị lớp quan hệ lớp, vài biểu đồ lớp khác hiển thị gói lớp quan hệ gói Có thể tạo nhiều biểu đồ lớp để mơ tả tồn tranh hệ thống Các biểu đồ lớp giúp người phát triển phần mềm quan sát lập kế hoạch cấu trức hệ thống trước viết mã trình Nó đảm bảo hệ thống thiết kế tốt từ ban đầu 5.2.1 - Các loại lớp biểu đồ Biểu đồ lớp chứa nhiều loại lớp khác nhau, chúng lớp thơng thường, lớp tham số, lớp thực, lớp tiện ích, lớp tiện ích tham số, lớp tiện ích thực metaclass Lớp tham số (parameterized class) Lớp tham số lớp sử dụng để tạo họ lớp khác Nó cịn có tên lớp mẫu (template) Ngơn ngữ C++ hổ trợ đầy đủ lớp này, Java lại khơng hồn tồn Thí dụ từ lớp tham số List tạo lớp thực Employeelist, AccountList… Trong UML, lớp tham số biểu diễn hình 5.2 Lớp thực (instantiated class) Lớp thực lớp tham số mà đối số có giá trị Thí dụ, lớp tham số chứa danh sách phần tử Bây ta cung cấp giá trị cho đối số phần tử, kết ta có danh sách nhân viên Trong UML, ký pháp lớp thực lớp có tên đối số ngoặc hình 5.3 Item List Attribute Attribute Operation() Opetation() Hình 5.2 Lớp tham số Hình 5.3 Lớp thực tham số Lớp tiện ích (class utility) Lớp tiện ích tập hợp thao tác Thí dụ có tập hàm tốn học squareroot(), cuberoot()… sử dụng nhiều nơi hệ thống, chúng gói vào lớp tiện ích để lớp khác hệ thống sử dụng Trong biểu đồ lớp, lớp tiện ích thể lớp đường viền bóng hình 5.4 Phát triển phần mềm UML trang | 94 Item Class Utility Operation() Hình 5.4 Lớp tiện ích ClassUtility Operation() Hình 5.5 Lớp tiện ích tham số Lớp tiện ích tham số (parameterized class utility) Lớp tiện ích tham số lớp tham số chứa tập thao tác Đó mẫu để tạo lập lớp tiện ích Lớp vẽ biểu đồ lớp biểu tượng hình 5.5 Operation() Hình 5.6 Lớp tiện ích thực MetaClass Attribute Operation() Hình 5.7 Metaclass Lớp tiện ích thực (instantiated class utility) Lớp tiện ích thực lớp ham số mà đối chúng có giá trị Lớp vẽ biểu đồ lớp biểu tượng hình 5.6 Metaclass Metaclass lớp mà thực lớp chức đối tượng Lớp tham số lớp tiện ích thí dụ metaclass Lớp vẽ biểu đồ lớp biểu tượng hình 5.7 5.2.2 - Stereotype lớp Trong biểu đồ lớp, stereotype chế để phân nhóm lớp Thí dụ, để nhanh chóng tìm kiếm biểu mẫu mơ hình, ta tạo stereotype với tên biểu mẫu (form) gán cho lớp tương ứng UML có ba loại stereotype mặc định để gán cho ba loại lớp, lớp biên (Boundary), lớp thực thể (Entity) lớp điều khiển (Control) Lớp biên (boundary class) Lớp biên lớp nằm biên hệ thống pah62n giới cịn lại Chúng biểu mẫu (form), báo cáo (report), giao diện với phần cứng máy in, máy quyét… giao diện với hệ thống khác Ký pháp UML lớp biên sau: Để tìm lớp biên khảo sát biểu đồ UC Với tác nhân ta có lớp biên (hình 5.8a) Lớp biên cho pháp tác nhân tương tác với hệ thống Không thiếp phải tạo lớp biên cho tác nhân Nếu hai tác nhân kích hoạt UC cần tạo lớp biên cho hai (hình 5.8b) Phát triển phần mềm UML trang | 95 Tá c nhâ n UseCase1 Use Case Tá c nhâ n Lớ p biê n Tá c nhâ n Lớ p Biê n a) b) Hình 5.8 Lớp biên Lớp thực thể (entity class) Lớp thực thể lưu trữ thơng tin mà ghi vào nhớ ngồi Thí dụ lớp Employee lớp thực thể Các lớp thực thể tìm thấy luồn kiện biểu đồ tương tác Nó lớp có ý nghĩa người sử dụng Trong UML, ký pháp lớp thực thể sau: Thông thường ta phải tạo bảng CSDL cho lớp loại Thay cho xác định cấu trức CSDL trước, ta phát triển cấu trúc CSDL từ thơng tin mơ hình đối tượng Các yêu cầu hệ thống xác định luồng kiện Luồng kiện xác định đối tượng lớp Mỗi thuộc tính lớp thực thể trở thành trường torng CSDL Lớp điều khiển (control class) Lớp điều khiển có trách nhiệm điều phối hoặt động lớp khác Thơng thường UC có lớp điều khiển để điều khiển trình tự kiện Chú ý lớp điều khiển không tự thực chức (lớp khác không gửi nhiều thông điiệp đến chúng), chúng lại gửi nhiều thông điệp đến lớp khác Do vậy, lớp điều khiển gọi lớp quản lý Trong UML, lớp điều khiển ký hiệu sau: Một loại lớp điều khiển khác lớp chia vài UC Thí dụ lớp SecurityManager có trách nhiệm điều khiển kiện liên quan đến an tồn Lớp TransactionManager có trách nhiệm điều phối thông điệp liên quan đến giao dịch CSDL Sử dụng loại lớp điều khiển cách tốt để tách chức hệ thống Nếu thay đổi trình tự logic chứng lớp điều khiển bị ảnh hưởng Ngoài stereotype mặc định UML trình bày đây, ta cịn bổ sung stereotype vào mơ hình để sử dụng cho mục đích riêng 5.3 GĨI Gói sử dụng để nhóm lớp có chung với Có nhiều quan điểm hình thành gói lớp dựa hay dựa đặt tính kỹ thuật Quan điểm chung ta tùy ý gói lớp lại với Thí dụ, chọn tiêu chí stereotype có gói lớp Entity, gói lớp Boundary, gói lớp Control… Quan điểm khác gói lớp theo chức Phát triển phần mềm UML trang | 96 Thí dụ, gói Security chứa lớp liên quan đến an tồn hệ thống, gói Reporting hay Error Handling… Lợi gói cho khả dễ sử dụng lại Thí dụ, lấy gói Sercurity để sử dụng lại ứng dụng khác Sau ví dụ gói hệ thống quản lý thư viện Gói giao diện (UI): bao gồm lớp giao diện người dùng, cho khả quan sát liệu nhập liệu Các lớp xây dựng sở thư viện chuẩn ngơn ngữ lập trình MFC Visual C++ Gói kết hợp với gói đối tượng tác nghiệp Gói UI gọi thao tác đối tượng tác nghiệp để truy vấn hay nhập liệu Gói đối tượng tác nghiệp: bao gồm lĩnh vực từ mơ hình phân tích Chúng chi tiết thiết kế để bổ sung thao tác hỗ trợ lưu trữ Gói đối tượng tác nghiệp hợp tác với gói CSDL để lớp đối tượng tác nghiệp kế thừa từ lớp lưu trữ gói CSDL Gói CSDL: gói cung cấp dịch vụ cho lớp khác gói tác nghiệp để lưu trữ (thí dụ ghi lên tập đĩa) Gói tiện ích: gói chứa dch vụ để gói khác hệ thống sử dụng Thí dụ gói chứa lớp lưu trữ để lưu trữ đối tượng tồn hệ thống sử dụng gói UI, tác nghiệp CSDL Hình 5.9 thiết kế gói vừa mơ tả Gó i UI Gó i đố i tượ n g tá c nghiệ p Gó i tiệ n ích Gó i CSDL Hình 5.9 Gói lớp 5.4 THUỘC TÍNH LỚP Thuộc tính phận thơng tin liên kết với lớp, thí dụ lớp Cơng ty chứa thuộc tính Tên, địa chỉ, số nhân viên Mỗi lớp mơ hình chứa hay nhiều thuộc tính 5.4.1 - Tìm kiếm thuộc tính Có nhiều nơi để tìm thuộc tính lớp Trước hết, tìm thuộc tính tài liệu UC Tìm danh từ luồng kiện Chú ý danh từ thuộc tính mà số danh từ lớp, đối tượng… Thí dụ xem xét luồng kiện: “Người sử dụng nhập tên Phát triển phần mềm UML trang | 97 nhân viên, địa chỉ, số bảo hiểm xã hội số điện thoại”, ta nhận lớp Nhân viên thuộc tính Tên, Địa chỉ, Số điện thoại Số chứng minh thư Sau tìm danh từ phải thận trọng định lớp hay thuộc tính, điều phụ thuộc vào ứng dụng cụ thể Thí dụ, danh từ cơng ty gợi ý lớp có tên Cơng ty hay xem thuộc tính lớp khác, lớp Nhân viên? Khi muốn lưu trữ thơng tin cơng ty có hành vi liên quan đến cơng ty cho lớp Thí dụ, hệ thống bán hàng, ta cần lưu trữ thông tin công ty có mua sản phẩm hay có nhu cầu dịch vụ, cơng ty lớp với thuộc tính số lượng nhân viên công ty, tên, địa công ty… Ngược lại, không cần biết thông tin chi tiết cơng ty, thí dụ hệ thống có chức in thư gửi khách hàng thuộc cơng ty khác coi tên cơng ty thuộc tính lớp đó, thí dụ lớp Giao tiếp Mặc khác, cần phải xem xết thông tin tư sanh từ có hành vi hay khơng Nếu cơng ty có hành vi ứng dụng mơ hình hóa lớp, ngược lại cơng ty khơng có hành vi mơ hình hóa thuộc tính Nơi khác để tìm thuộc tính tài liệu yêu cầu hệ thống Nếu có u cầu loại thơng tin mà hệ thống thu thập thơng tin thuộc tính lớp Cuối cùng, thuộc tính tìm thấy cấu trúc CSDL Nếu hình thành cấu trức CSDL trước trường bảng nơi tốt để xác định thuộc tính Thí dụ, bảng Nhân viên có trường Tên, Địa chỉ, Số điện thoại Số chứng minh thư trường ứng viên thuộc tính Thông thường thực ánh xạ một-một bảng CSDL với lớp thực thể Nhưng cần ý lúc ánh xạ mà phải xem xét kỹ lưỡng thiết kế CSDL lớp bảng CSDL quan hệ khơng hỗ trợ trực tiếp kế thừa Khi nhận thuộc tính phải đảm bảo chắn cần thiết cho yêu cầu hệ thống đó, có nghĩa cần thiết cho khách hàng Điều tránh vấn đề muôn thuở vô số thông tin tìm khơng cần đến chúng Tiếp theo phải thận trọng gán thuộc tính cho lớp phù hợp, thí dụ lớp Nhân viên có tên địa chỉ, khơng cần có thơng tin loại sản phẩm mà công ty nhân viên sản xuất Thông tin sản phẩm nên đặt lớp khác, lớp Sản phẩm Không nên xây dựng lớp có q nhiều hay q thuộc tính (tốt lớp có 10-15 thuộc tính) Phải đảm bảo chắn thuộc tính lớp phải thực cần thiết thuộc lớp Nếu lớp có q nhiều thuộc tính chia nhiều lớp nhỏ Ngược lại, không nên xây dựng lớp với hay hai thuộc tính 5.4.2 - Đặc tả thuộc tính Các thuộc tính lớp gán đặc tả chi tiết, chúng bao gồm kiểu liệu thuộc tính, stereotype, giá trị khởi đầu, phạm vi… Kiểu liệu thuộc tính Kiểu liệu kiểu phụ thuộc ngơn ngữ lập trình string, integer, long hay boolean Trước phát sinh mã trình từ biểu đồ ta phải gán kiểu liện cho thuộc tính Có thể sử dụng kiểu liệu mặc định cho ngôn ngữ lập trình hay kiểu liệu (tên lớp) ta xác lập Stereotype thuộc tính Tương tự tác nhân, UC lớp, ta gán stereotype cho thuộc tính (việc khơng bắt buộc) Đây cách phân lớp thuộc tính để dễ quan sát dễ hiểu biểu đồ Giá trị khởi đầu thuộc tính Rất nhiều thuộc tính có giá trị mặc định Thí dụ, lớp Order chứa thơng tin hành vi đơn mua hàng công ty Lớp có thuộc tính với tên TaxRate để lưu trữ tỷ lệ thuế mua hàng Nếu thực tế tỷ lệ thuế mua hàng 10% nạp giá trị ban đầu 0,08 cho thuộc tính TaxRate Việc nạp giá trị khởi đầu thuộc tính tùy ý, khơng bắt buộc Phạm vi thuộc tính Một rong tính chất quan trọng lập trình hướng đối tượng tính bao gói Mỗi lớp bao gói thơng tin vài hành vi nhờ thuộc tính thao tác Thuộc tính nằm lớp ẩn với lớp khác Hình 5.10 mơ tả quan sát thuộc Phát triển phần mềm UML trang | 98 tính thao tác lớp Vì thuộc tính bao gói lớp ta phải định nghĩa lớp xâm nhập làm thay đổi Việc làm gọi xác định phạm vi thuộc tính (attribute visibility) Thuộc tính chung Thuộc tính thao tác riêng Thao tác chung Hình 5.10 Phạm vi thuộc tính thao tác UML hỗ trợ bốn tùy chọn phạm vi thuộc tính, chung (public), riêng (private), bảo vệ (protected), gói (package) hay cài đặt (implemetation) Ký pháp đồ họa chúng biểu đồ hình 5.11 Hình 5.11a ký pháp chuẩn UML, UML khơng có biểu tượng cho thuộc tính có phạm vi package hay implemetation Hình 5.11b ký pháp phạm vi phần mềm công ty Rational Rose Public Private Proteced Package(Imlementation) a) + # Public Private Proteced b) Hình 5.11 Biểu tượng phạm vi · Public Các thuộc tính có tính chất xâm nhập từ lớp khác Bất kỳ lớp rong hệ thống quan sát sửa đổi giá trị thuộc tính Thí dụ ta có hai lớp với tên Employee Company Lớp Employee có thuộc tính Address Nếu Address có tính chất public lớp Company quan sát sửa đổi giá trị · Private Thuộc tính gán tính chất khơng nhìn thấy từ lớp khác Nếu Address gán Private lớp Employee làm thay đổi nội dung thc tính cịn lớp Company khơng Nếu lớp Company muốn quan sát hay sửa đổi giá trị Address phải u câu Employee làm việc thơng qua thao tác public · Protected Thuộc tính có tính chất lớp lớp phân cấp (lớp kế thừa) xâm nhập Giả sử ta có lớp nhân viên hưởng lương theo với tên HourlyEmp lớp nhân viên hưởng lương tgheo tháng SalariedEmp kế thừa từ lớp Employee Nếu thuộc tính Address gán tính chất protected lớp Employee, HourlyEmp, SalariedEmp xâm nhập cịn có lớp Company khơng · Package Implemetation Thuộc tính gán tính chất cho thấy public, lớp gói xâm nhập Nếu Address gán thuộc tính package lớp Company xâm nhập lớp Company lớp Employee gói Tính chất lưu trữ Tính chất mơ tả thuộc tính lưu trữ lớp Có ba loại lưu trữ mô tả đây: Phát triển phần mềm UML trang | 99 · Giá trị (by value) Thuộc tính gán tính chất cho biết chứa lớp Thí dụ, có thuộc tính kiểu string xâu lưu lớp · Tham chiếu (by reference) Thuộc tính gán tính chất cho biết lưu trữ bên ngồi lớp, lớp có trỏ trỏ đến Thí dụ, có thuộc tính kiểu Date lớp Person Đối tượng Date đặt ngồi lớp Person Thuộc tính Person trỏ trỏ đến đối tượng ngồi · Chưa xác định (Unspecified) Thuộc tính gán tính chất cho biết cách lưu trữ chưa xác định, phát sinh mã trình Rational Rose coi By value Thuộc tính tĩnh Khi gán thuộc tính thơng thường cho lớp thực lớp có riêng thuộc tính Thí dụ, lớp Account với thuộc tính Rate thực hóa thành hai đối tượng Tài khoản ông A Tài khoản ơng B Mỗi đối tượng có thuộc tính Rate Nhưng thuộc tính static thuộc tính chia cho thực lớp Nếu Rate gán tính chất static chia cho Tài khoản ông A Tài khoản ông B Có nghĩa có thuộc tính Rate dùng chung cho đối tượng lớp Account UML biểu diễn thuộc tính tĩnh dấu $ trước tên thuộc tính Thí dụ lớp Account có thuộc tính tỷ lệ lãi xuất sau: #$Rate:float Thuộc tính suy diễn Là thuộc tính hình thành từ hay nhiều thuộc tính khác Thí dụ, lớp Chữ nhật có thuộc tính Độ rộng Chiều cao Nó có thuộc tính Diện tích tính từ độ rộng chiều cao Vì Diện tích suy diễn từ Độ rộng Chiều cao gọi thuộc tính suy diễn Trong UML thuộc tính suy diễn ký hiệu dấu / trước tên thuộc tính Thí dụ thuộc tính suy diễn Diện tích lớp Chữ nhật sau: /Diện tích 5.5 THAO TÁC CỦA LỚP Thao tác hành vi kết hợp với lớp Mỗi thao tác có ba phần sau: tên thao tác, tham số thao tác kiểu cho lại thao tác Tham số đối tượng mà thao tác nhận đầu vào Kiểu cho lại đầu thao tác Trên biểu đồ lớp nhìn thấy tên thao tác hay tên thao tác, sau tham số giá trị cho lại Ký pháp thao tác UML sau: Operation Name (arg1: arg1 data type, arg2: arg2 data type…): return type Thao tác xác định trách nhiệm lớp Sau nhận biết thao tác xem xét lại lớp chứa chùng, ý rằng: · Nếu lớp có hay hai thao tác nên gộp vào lớp khác · Nếu lớp khơng có thao tác nên mơ hình thuộc tính · Nếu lớp có q nhiều thao tác khó quản lý, nên chia chúng lớp khác Việc lập biểu đồ tương tác có nghĩa thực phần lớp công việc cần thiết cho việc tìm kiếm thao tác Có bốn loại thao tác cần xem xét, bao gồm: Thao tác cài đặt (implemetor) Thao tác cài đặt vài chức tác nghiệp Chúng tìm từ biểu đồ tương tác Biểu đồ tượng tác tập trung vào chức tác nghiệp, thông điệp biểu đồ ánh xạ thành thao tác cài đặt Mỗi thao tác chuyển ngược lại nhu cầu hệ thống Việc thực sau: Mỗi thao tác hình thành từ biểu đồ tương tác, biểu đồ thao tác hình thành từ chi tiết luồng kiện, luồng kiện hình thành từ UC cuối UC hình thành từ yêu cầu hệ thống Điều khẳng định yêu cầu cài đặt mã trình đoạn mã trình phản ánh ngược lại yêu cầu Phát triển phần mềm UML trang | 100 Thao tác quản lý (manager) Thao tác manager quản lý việc tạo lập hủy bỏ đối tượng Thí dụ, cấu tử hủy tử lớp thuộc nhóm Thao tác xâm nhập (access) Thơng thường thuộc tính có tính chất private hay protected Tuy nhiều lớp hệ thống lại có nhu cầu xâm nhập thuộc tính lớp khác Việc thực hiện nhờ thao tác xâm nhập Thí dụ, lớp Employee có thuộc tính salary ta khơng muốn lớp khác xâm nhập trực tiếp thuộc tính Hãy gán đặc tính private cho bổ sung hai tháo tác xâm nhập vào lớp Employee, GetSalary SetSalary Hãy gán tính chất public cho hai thao tác để lớp khác gọi chúng Thao tác GetSalary có khả lấy giá trị thuộc tính Salary trả lại giá trị cho lớp gọi Thao tác SetSalary hỗ trợ lớp khác gán giá trị vào thuộc tính Salary Cách tiếp cận cho khả thuộc tính bao gói an toàn lớp bảo vệt rước lớp khác, cho lớp khác xâm nhập chúng Thơng thường thao tác Get Set hình thành cho thuộc tính lớp Thao tác trợ giúp (helper) Thao tác Helper thao tác mà lớp chứa cần đến để thực trách nhiệm, lớp khác khơng cần biết chúng Đó thao tác có tính chất private proteted lớp Tương tự thao tác cài đặt, thao tác loại tìm khảo sát biểu đồ tương tác Thơng thường hình thành từ thông điệp phản thân biểu đồ trình tự biểu đồ cộng tác Tóm lại, để nhận thao tác lớp ta phải: · Khảo sát biểu đồ tương tác: PHần lớn thông điệp biểu đồ trở thành thao tác implementor Các thông điệp phản thân trở thành thành helper · Các thao tác quản lý: Bổ sung cấu tử hủy tử · Các thao tác xâm nhập: Tạo lập thao tác Get, Set cho thuộc tính cần xem xét lớp khác hay lớp khác cần làm thay đổi giá trị chúng 5.6 QUAN HỆ Quan hệ kết nối ngữ nghĩa lớp, cho phép lớp biết thuộc tính, thao tác quan hệ lớp khác Các quan ệh thể biểu đồ lớp Giữa lớp có bốn kiểu quan hệ chính, là: kết hợp (association), phụ thuộc (dependencies), tập hợp (aggregation) khái qt hóa (generalization) Để tìm kiếm quan hệ ta phải khảo sát phần tử mơ hình Thơng tin quan hệ kếp hợp quan hệ phụ thuộc dễ dàng tìm thấy biểu đồ tương tác Các quan hệ tập hợp khái quát hóa tìm thấy khảo sát lớp Vậy, để tìm quan hệ lớp ta thực công việc sau đây: Khởi đầu khảo sát biểu đồ trình tự biểu đồ cộng tác Nếu Lớp A gửi thông điệp đến Lớp B biểu đồ tương tác, chúng phải có quan hệ Thơng thường, quan hệ tìm quan hệ kết hợp hay phụ thuộc Khảo sát lớp để tìm quan hệ tổng thể - thành phần Bất kỳ lớp hình thành từ lớp khác chúng có quan hệ tập hợp Khảo sát lớp để tìm quan hệ khái qt hóa Nếu tìm lớp hồn tồn khác kế thừa từ lớp thứ ba chúng với lớp thứ ba có quan hệ khái quát hóa 5.6.1 - Quan hệ kết hợp Quan hệ kết hợp kết nối ngữ nghĩa hai lớp Quan hệ vẽ đường đơn rong biểu đồ lớp Khi có quan hệ kết hợp, lớp gửi thơng điệp đến lớp khác biểu Phát triển phần mềm UML trang | 101 unboundedSetByReferencethe_C; }; 9.1.3 - Quan hệ phụ thuộc tập hợp 9.1.3.1 - Phụ thuộc tập hợp (aggregation)1-1 Mơ hình Ra B A Mã trình #include “B.h” class A { … const B* get_the_B () const; void set_the_B (B* const value); private: B* the_B; }; #include “A.h” class B { … const A* get_Ra () const; void set_Ra (A* const value); private: A* Ra; }; 9.1.3.2 - Phụ thuộc tập hợp với khả dẫn đường hạn chế Mơ hình Ra B A Mã trình class A { … private: Phát triển phần mềm UML trang | 220 }; #include “A.h” class B { … const A* get_Ra () const; void set_Ra (A* const value); private: A*Ra; }; 9.1.3.3 - Quan hệ gộp (composition) 1-1 Mơ hình Ra B A Mã trình #include “B.h” class A { … const B* get_the_B() const; void set_the_B (B* Const value); private: B* THE_b; }; #include “A.h” class B { … const A get_Ra () const; void set_Ra (const Avalue); private: A Ra; }; 9.1.3.4 - Phụ thuộc tập hợp 1-N Mơ hình Phát triển phần mềm UML trang | 221 Ra B A n Mã trình #include “A.h” class B { … const UnboundedSetByReferenceget_Ra () const; void set_Ra (const UnboundedSetByReferencevalue); private: unboundedSetByReference Ra; }; 9.1.4 - Quan hệ kế thừa 9.1.4.1 - Kết thừa đơn Mơ hình Mã trình #include “A.h” class B:public A { … }; 9.1.4.2 - Kế thừa bội Mơ hình Mã trình #include “A1.h” #include “A2.h” class B:public A2,public A1 { … }; 9.2 PHÁT SINH MÃ TRÌNH JAVA Các đoạn mã trình mẫu Rose phát sinh từ mơ hình UML.Phần khơng mơ tả tồn khả Rose mà mô tả tương ứng vài biểu đồ UMLvới ngôn ngữ Java Phát triển phần mềm UML trang | 222 9.2.1 - Các lớp 9.2.1.1 - Lớp rỗng Rose phát sinh cấu tử,hủy tử.Chú ý dễ đọc mã trình thao tác không viết lặp lại thí dụ sau Mơ hình Mã trình public final class A { public A () { super (); … } protected void finalize () throws Throwable { super.finalize (); … } … } 9.2.1.2 - Lớp có thuộc tính thao tác Mơ hình Mã trình public final class A { private String m_A1; private String m_A2; public void Op 1() { … } public void Op () { … } … } 9.2.1.3 - Lớp trừu tượng Mơ hình Mã trình Insert Figure: 08710D01 public abstract class A { … } Phát triển phần mềm UML trang | 223 9.2.1.4 - Giao diện Mô hình Mã trình Insert Figure: 08710D01 public interface I_A { … } 9.2.2 - Quan hệ kết hợp 9.2.2.1 - Kết hợp 1-1 Mơ hình A Ra Rb 1 B Mã trình public class A { public B m_Rb; … }; public class B { public A m_Ra; … }; 9.2.2.2 - Kết hợp 1-N Mơ hình A Ra Rb n B Mã trình public class B { public A m_Ra; … } Mơ hình Phát triển phần mềm UML trang | 224 A -Ra Rb n B Mã trình public class B { public Vector m_Ra = new Vector (); … } Mơ hình A Ra Rb B Khi tính nhiều có hạn chế kết hợp cài đặt mảng Mã trình public class B { private A[] m_Ra = new A[5]; … } 9.2.3 - Quan hệ phụ thuộc tập hợp 9.2.3.1 - Phụ thuộc tập hợp (aggregation) 1-1 Mơ hình B 1 A Ra Mã trình public class A { public B m_B; … } public class B { public A m_Ra; … } Phụ thuộc tập hợp với khả dẫn đường hạn chế Mô hình Phát triển phần mềm UML trang | 225 B 1 Rb Ra A Mã trình public class A { … } public class B { public A m_Ra; … } 9.2.4 - Quan hệ kế thừa 9.2.4.1 - Kế thừa đơn Mơ hình Mã trình public class B extends A { … } 9.2.4.2 - Kế thừa giao diện Mơ hình Mã trình public interface I_C extends I_A { … } public interface I_C extends I_A, I_B { … } 9.2.4.3 - Cài đặt giao diện lớp trừu tượng Mơ hình Mã trình Phát triển phần mềm UML trang | 226 public abstract class A implements I_A { … } 9.2.4.4 - Cài đặt giao diện lớp Mơ hình Mã trình public class A implements I_A { … } 9.2.4.5 - Cài đặt vài giao diện lớp Mơ hình Mã trình public class A implements I_A,I_B { … } 9.3 PHÁT SINH MÃ TRÌNH VISUAL BASIC Các đoạn mã trình mẫu đậy Rose phát sinh từ mơ hình UML Phần khơng mơ tả tồn khả Rose mà mô tả tương ứng vài biểu đồ UML với ngôn ngữ Visual Basic 9.3.1 - Các lớp 9.3.1.1 - Lớp rỗng Mơ hình Mã trình Phát triển phần mềm UML trang | 227 Option Base Private Sub Class_Initialize () End Sub Private Sub Class_Terminate () End Sub 9.3.1.2 - Lớp có thuộc tính thao tác Mơ hình Mã trình Option Base Public A1 As String Public A2 As String Private Sub Class_Initialize () End Sub Private Sub Class_Terminate () End Sub Public Sub Op1() On Error GoTo Op1Err … End Sub Op1Err: Call RaiseError (MyUnhandleError, “A:Op1 Method”) End Sub Public Property Get Op2() As Boolean On Error GoTo Op1Err … Exit Property Op2Err: Call RaiseError (MyUnhandleError, “A:Op2 Method”) End Property 9.3.1.3 - Lớp có thuộc tính thao tác Mơ hình Mã trình Phát triển phần mềm UML trang | 228 Option Base Private Sub Class_Initialize () End Sub Private Sub Class_Terminate () End Sub Public Sub Op2() End Sub Public Property Get Op2() As Boolean End Property 9.3.2 - Quan hệ kết hợp 9.3.2.1 - Kết hợp 1-1 Mơ hình A Ra Rb 1 B Mã trình Option Base Public Rb As B Private Sub Class_Terminate () End Sub Private Sub Class_Initialize () End Sub Option Base Public Ra As A Private Sub Class_Terminate () End Sub Private Sub Class_Initialize () End Sub Phát triển phần mềm UML trang | 229 9.3.2.2 - Kết hợp 1-N Mơ hình A Ra Rb n B Mã trình Option Base Public Rb As B Private Sub Class_Initialize () End Sub Private Sub Class_Terminate () End Sub Option Base Public Ra As Collection Private Sub Class_Initialize () End Sub Private Sub Class_Terminate () End Sub 9.3.3 - Quan hệ kế thừa đơn Mô hình Mã trình Option Base Implements A Local superclass object (generated) Private mAObject As New A Private Sub Class_Initialize () End Sub Private Sub Class_Terminate () End Sub Public Sub Op 2() End Sub Private Sub A_Op1 () Phát triển phần mềm UML trang | 230 mAObject.Op1 End Sub 9.4 PHÁT SINH MÃ TRÌNH SQL Các đoạn mã trình mẫu Rose phát sinh từ mơ hìnhUML Phần khơng mơ tả tồn khả Rose mà mô tả tướng ứng vài biểu đồ UML với ngôn ngữ ANSI SQL 9.4.1 - Các lớp 9.4.1.1 - Lớp rỗng Mơ hình Mã trình CREATE TABLE T_A( A_Id NUMBER (5), PRIMARY KEY (A_Id) ) 9.4.1.2 - Lớp có thuộc tính thao tác Mơ hình Mã trình CREATE TABLE T_A ( A_ IdNUMBER (5) A1 VARCHAR (), A2 VARCHAR (), PRIMARY KEY (A_Id) ) 9.4.2 - Quan hệ kết hợp 9.4.2.1 - Kết hợp 1-1 Mơ hình Phát triển phần mềm UML trang | 231 A Ra Rb B Mã trình CREATE TABLE T_B ( B_Id NUMBER (5), PRIMARY KEY (B_Id) ) CREATE TABLE T_A ( A_Id NUMBER (5) B_Id NUMBER (5) REFERENCE T_B (B_Id), PRIMARY KEY (A_Id) ) 9.4.2.2 - Kết hợp N-1 Mơ hình A Ra Rb n B Mã trình CREATE TABLE T_B( B_Id NUMBER (5), PRIMARY KEY (B_Id) ) CREATE TABLE T-A( B_Id NUMBER (5) REFERENCES T_B (B_Id), A_Id NUMBER (5), PRIMARY KEY (A_Id) ) 9.4.2.3 - Lớp kết hợp N-N Mơ hình Phát triển phần mềm UML trang | 232 A B n n C Mã trình CREATE TABLE T_A( A_Id NUMBER (5), PRIMARY KEY (A_Id) ) CREATE TABLE T_B( B_Id NUMBER (5), PRIMARY KEY (B_Id) ) CREATE TABLE T_C ( A_Id NUMBER (5) REFERENCES T_A(A_Id)ON DELETE CASCADE, B_Id NUMBER (5) REFERENCES T-B (B_Id)ON DELETE CASCADE, PRIMARY KEY (A_Id,B_Id) ) 9.4.3 - Quan hệ kế thừa Trong thí dụ sau đây, lớp cài đặt bảng 9.4.3.1 - Kế thừa đơn Mơ hình Mã trình CREATE TABLE T_A ( A_Id NUMBER (5), PRIMARY KEY (A_Id) ) CREATE TABLE T_B ( A_Id NUMBER(5) REFERENCES T_A (A_Id), PRIMARY KEY (A_Id) ) Phát triển phần mềm UML trang | 233 9.4.3.2 - Kế thừa bội Mơ hình Mã trình CREATE TABLE T_A1 ( A1_Id NUMBER (5), PRIMARY KEY (A1_Id) ) CREATE TABLE T_A2 ( A2_Id NUMBER (5), PRIMARY KEY (A2_Id) ) CREATE TABLE T_B ( A1_Id NUMBER (5) REFERENCES T_A1 (A1_Id), A2_Id NUMBER (5) REFERENCES T_A2 (A2_Id), PRIMARY KEY (A1_Id, A2_Id) ) Phát triển phần mềm UML trang | 234 ... A a1 a2 a1 a2 a1 a2 b1 a1 a2 c1 c2 c3 Lớ p B Lớ p C Lớ p C Lớ p B c1 c2 c3 b1 Lớ p A b) a) Hình 5.35 Thí dụ kế thừa lớp Chú ý thuộc tính định nghĩa A (A.a1 A.a2) phần đối tượng B đối tượng C... lớp kết hợp (association) Thuộc tính Grade liên quan đến liên kết hai lớp với lớp, đặt chúng vào lớp Ký pháp phần tử liên kết UML hình 5. 32 Course Student 20 Grade Hình 5. 32 Phần tử liên kết... quan hệ kết hợp chiều hay hai chiều một-nhiều dễ cài đặt quan hệ nhiều-nhiều Tuy nhiên, quan hệ kết hợp hai chiều nhiều-nhiều chuyển thành quan hệ kết hợp một-nhiều hình 5 .28 Hình 5 .28 Loại bỏ

Ngày đăng: 11/05/2021, 03:27

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN