Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (588.56 KB, 34 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>• Sơ đồ lớp thiết kế biểu diễn chi tiết của các lớp phần mềm và </b>
giao diện trong một ứng dụng. Những thông tin tiêu biểu trong
sơ đồ lớp thiết kế bao gồm:
• Các lớp (classes)
• Mối quan hệ và thuộc tính (associations & attributes
• Giao diện và thao tác trên giao diện (interfaces with their operations)
• Các phương thức (methods)
• Thuộc tính (attribute)
• Các phụ thuộc (dependencies)
<b>• Domain model: các lớp khái niệm đại diện cho các khái niệm </b>
trừu tượng trong thế giới thực mà người phát triển phần mềm
đang quan tâm.
• Ví dụ
• Các bước xây dựng sơ đồ lớp thiết kế
• Xác định những lớp mà tham gia vào các giải pháp phần mềm.
Các lớp này có thể được tìm thấy bằng cách duyệt tất cả các
sơ đồ tương tác và danh sách các lớp trong domain model.
• Tuy nhiên có những lớp trong domain model không cần xuất
hiện trong sơ đồ lớp thiết kế
<i>• Ví dụ: Một hệ thống máy tính tiền được sử dụng để ghi lại </i>
<i>doanh thu và xử lý các khoản thanh toán, được sử dụng trong </i>
<i>một cửa hàng bán lẻ, hệ thống bao gồm các thành phần phần </i>
<i>cứng như máy tính và máy quét mã vạch</i>
<i>• Hệ thống có thể giao tiếp với các ứng dụng khác như máy tính </i>
<i>thuế, hệ thống kiểm soát hàng tồn kho, kho lưu trữ sản phẩm </i>
<i>theo Loại sản phẩm.</i>
<i>• Hệ thống tự động xuất hóa đơn thanh toán khi tất cả các sản </i>
<b>• Ví dụ: các lớp khái niệm trong domain model của hệ thống </b>
máy tính tiền
<b>• Các phương thức của mỗi lớp có thể được xác định bằng </b>
<b>cách phân tích các biểu đồ tương tác.</b>
• Nói chung, tập hợp tất cả các Messages được gửi đến một lớp
X trên tất cả các sơ đồ tương tác thường là các phương thức
của lớp X phải xác định.
<b>• Một số vấn đề với tên phương thức</b>
<b>• Thơng điệp Create trong sơ đồ tương tác, chỉ ra một đối tượng mới </b>
được khởi tạo, khi chuyển thiết kế sang ngơn ngữ lập trình hướng đối
tượng, nó phải được thể hiện trong ngữ cảnh của ngơn ngữ hiện thực.
• Ví dụ: C ++, Java khơng có phương thức create() mà là new()
<b>• Một số vấn đề với tên phương thức</b>
• Một thơng điệp dạng (multiobject) truyền tới các đối tượng chứa bên
trong lớp đó
• Ví dụ: Find() là một thông điệp đến một tập đối tượng
<b>• Bổ sung điều hướng vào mối quan hệ:</b>
<b>• Điều hướng là một thuộc tính của Role, chỉ ra rằng mối quan hệ được </b>
<b>thực hiện từ lớp nguồn đến lớp mục tiêu.</b>
• Ví dụ:
• Ví dụ:
• Để dễ dàng trong phần thiết kế hướng đối tượng, domain
model được tổ chức thành các package.
• Tổ chức domain model thành các package là một thủ tục phức
<b>tạp, dựa trên hai nguyên tắc cơ bản: sự gắn kết và độc lập.</b>
<b>• Nguyên tắc 1: nhóm các lớp vào package phải thỏa các tiêu </b>
<i><b>• Mục tiêu: các lớp phải trả về các dịch vụ đáp ứng yêu cầu người dùng</b></i>
<i><b>• Ổn định: sự cô lập các lớp trong một package phải thực sự ổn định </b></i>
trong quá trình phát triển dự án, và sau đó.
<i><b>• Thời gian sống của các đối tượng: tiêu chí này giúp phân biệt được </b></i>
các lớp mà đối tượng có thời gian sống rất khác nhau.
<b>• Ngun tắc 2: nhóm các lớp vào package phải giảm thiểu sự </b>
• Cách chọn các lớp vào một package cần phải:
• Có cùng chủ đề, có quan hệ chặt chẽ bởi khái niệm hoặc mục đích
• Cùng một hệ thống phân cấp
• Tham gia cùng một use case
• Có quan hệ kết hợp chặt.
<b>• Ký hiệu Package trong UML: được hiển thị như một thư mục </b>
<i>dạng tab, Subordinate packages có thể được hiển thị bên trong </i>
nó.
<i><b>• Tên packages </b></i>
<b>• Quyền sở hữu: </b>
• Một phần tử được sở hữu bởi package chứa nó.
• Tuy nhiên, Một phần tử có thể được tham chiếu đến một phần tử trong
<b>package khác. Trong trường hợp này, tên của phần tử được xác định </b>
<b>bởi tên của package theo định dạng: PackageName::ElementName </b>
• Ví dụ:
• Nếu một phần tử trong mơ hình phụ thuộc vào một phần tử
<b>khác thì giữa chúng có mối quan hệ phụ thuộc</b>
• Một package phụ thuộc chỉ ra rằng các phần tử bên trong nó
kết hợp với các phần tử trongpackage mục tiêu
<b>• Ví dụ: package Sales phụ thuộc vào package Core Elements</b>
<b>• Package Core</b>
<b>• Package Sales</b>
• Cho domain model của hệ thống đặt vé máy bay, hãy chia
domain model thành 2 package sau cho đảm bảo:
• Tính kết dính trong mỗi package
• Giảm tối thiểu sự phụ thuộc giữa các package
• Dịch vụ của mỗi package là gì?
<b>• Gợi ý:</b>
• Package 1: gồm các lớp liên quan đến chuyến bay
• Package 2: các lớp liên quan đến việc đặt vé
• Lưu ý:
• Giải pháp 1:
<b>• Giải pháp 2: lớp Flight trong package Bookings đảm bảo được </b>
các tiêu chí:
• Thời gian sống của các đối tượng
<b>• Flight có quan hệ chặt hơn với việc đặt vé (Bookings) so với các </b>
thông tin chung về chuyến bay.