Tải bản đầy đủ (.pptx) (101 trang)

mẫu phiếu phỏng vấn c03thunhanyeucaumoi huongdantaobangcauhoi 2tailieuthietkelopvadonggoi 3templaterequirement management sheet 4checklisttest case review 4mauquanlythaydoi 0danhsachcauhoi

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 (2.1 MB, 101 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>Chương 6</b>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

NỘI DUNG



<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à giao </b>
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:


◦ <sub>Các lớp (classes)</sub>


◦ <sub>Mối quan hệ và thuộc tính (associations & attributes </sub>


◦ <sub>Giao diện và thao tác trên giao diện (interfaces with their operations)</sub>
◦ <sub>Các phương thức (methods)</sub>


◦ <sub>Thuộc tính (attribute)</sub>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Định nghĩa sơ đồ lớp



Biểu đồ lớp chi ra sư tồn tại của các lớp và mối quan h giữa chung trong ban ê
thiết kế logic của một h thốngê


▫Chi ra cấu truc tĩnh của mô hình như lớp, cấu truc bên trong của chung và
mối quan h với các lớp khác.ê


▫Chi ra tất ca ho c một phân cấu truc lớp của một h thống.ă ê
▫Không đưa ra các thông tin tạm thời.


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4></div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Mục đích của sơ đồ lớp



• Làm tài liệu cho các lớp cấu thành hệ thống và hệ thốngcon



• Mơ ta kết hơp, tổng quát hóa và các quan hệ kết tập giữa các lớp
trong biểu đồ


• Chi rõ đặc trưng của lớp, các thuộc tính và tác vụ chính của mơi lớp


• Biểu đồ lớp đươc dùng khắp nơi trong chu trình phát triển, từ bài toán
đến mô hình cài đặt


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Định nghĩa sơ đồ lớp



Biểu đồ lớp chi ra sư tồn tại của các lớp và mối quan h giữa chung trong ban ê
thiết kế logic của một h thốngê


▫Chi ra cấu truc tĩnh của mô hình như lớp, cấu truc bên trong của chung và
mối quan h với các lớp khác.ê


▫Chi ra tất ca ho c một phân cấu truc lớp của một h thống.ă ê
▫Không đưa ra các thông tin tạm thời.


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Domain Model - Design Model


Classes



<b>Domain model: các lớp khái niệm đại diện cho các khái niệm trừu </b>


tương trong thế giới thưc mà người phát triển phân mềm đang quan
tâm.


<i><b>Mô hình lớp thiết kế (Design model class): lớp thiết kế đại diện cho </b></i>



</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

Domain Model - Design Model


Classes



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Xây dựng sơ đồ lớp thiết kế



Các bước xây dưng sơ đồ lớp thiết kế



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

Các cách tiếp cận xác định các


lớp



1. Tiếp cận theo thưc thể nghiệp vụ


2. Tiếp cận theo cụm danh từ



3. Tiếp cận theo phân loại



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>Tiếp cận theo thực thể </b>


<b>nghiệp vụ</b>



<b>Đối với các thực thể sự vật: kiểm chứng xem có nhu câu </b>



quan lý thông tin về thưc thể này trong hệ thống không?



Nếu có, xác định một lớp trong sơ đồ phân tích biểu diễn


cho thưc thể này



Xác định tên lớp: tên của sư vật



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12></div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>Tiếp cận theo thực thể </b>


<b>nghiệp vụ</b>




Đối với thưc thể thông tin:



Nếu thưc thể mô ta thông tin về một hoạt động giao dịch hệ


thống thì chuyển thành một lớp trong mơ hình phân tích



</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14></div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15></div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b>Tiếp cận theo cụm danh từ</b>



Đề xuất bởi Rebecca Wirfs-Brock, Brian Wilkerson, và Lauren


Wiener



<b>Ý tưởng: xác định các lớp thông qua việc đọc trong các văn </b>



<b>bản mô tả use case hoặc các mô tả yêu cầu để tìm kiếm và </b>



</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17></div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>Tiếp cận theo cụm danh từ</b>



</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>Tiếp cận theo cụm danh từ</b>



</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>Danh từ, cụm danh từ có thể </b>


<b>là thuộc tính</b>



Xác định danh từ, cụm danh từ có thể là thuộc tính:
Chi đươc sử dụng như là giá trị


Khơng có nhiều hơn một đặc trưng riêng, hoặc chi mô ta một đặc trưng của đối tương
khác


Ví dụ: hệ thống ATM (tiếp tục phân tích)


<b>Số tiền:một giá trị, khơng phai một lớp</b>



<b>Số dư tài khoản: thuộc tính của lớp Tài khoan</b>
<b>PIN khơng hợp lệ: một giá trị, không phai một lớp</b>
<b>Mật khẩu: một thuộc tính (có thể của lớp Khách hàng)</b>


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<b>Danh từ, cụm danh từ có thể </b>


<b>là thuộc tính</b>



</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<b>Danh từ, cụm danh từ có thể </b>


<b>là thuộc tính</b>



<b>Loại bỏ các ứng viên</b>


Loại bỏ các ứng viên khơng mục tiêu hoặc không
thuộc phạm vi hệ thống:


􀂄 Thông điệp
􀂄 Hệ thống
􀂄 Mẫu tin
􀂄 Ngân quỹ
􀂄 VND


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<b>Danh từ, cụm danh từ có thể </b>


<b>là thuộc tính</b>



<b>ATM: các lớp</b>


<b>Máy ATM: cung cấp một giao diện tới ngân hàng</b>


<b>Thẻ ATM: cung cấp một khách hàng với một khoá tới một tài khoan</b>



<b>Khách hàng: một khách hàng là một cá nhân sử dụng máy ATM, có một tài khoan.</b>


<b>Ngân hàng: các khách hàng phụ thuộc vào ngân hàng. Nó là một nơi tập trung các tài khoan và </b>


xử lý các giao dịch tài khoan.


<b>Tài khoản: nó mơ hình hố một tài khoan của khách hàng và cung cấp các dịch vụ về tài khoan</b>


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

Xác định các lớp phần mềm



Xác định những lớp mà tham gia vào các giai 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 ca các sơ đồ tương
tác và danh sách các lớp trong domain model.


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

Xác định các lớp phần mềm



<i>Ví dụ: Một hệ thống máy tính tiền được sử dụng để ghi lại doanh thu </i>


<i>và xử lý các khoản thanh toán, được sử dụng trong một cửa hàng </i>
<i>bán lẻ, hệ thống bao gồm các thành phần phần cứng như máy tính </i>
<i>và máy qt 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 thuế, </i>
<i>hệ thống kiểm soát hàng tồn kho, kho lưu trữ sản phẩm theo Loại </i>
<i>sản phẩm.</i>


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

Xác định các lớp phần mềm



</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

Xác định các lớp phần mềm




</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

<b>Tiếp cận theo phân loại</b>



Tiếp cận theo phân loại: phân loại các lớp của hệ thống dưa trên các mẫu chung.


<b>􀂄 Lớp khái niệm (concept): Một khái niệm là một quan niệm hoặc sư hiểu biết riêng </b>
biệt về thế giới.


Lớp khái niệm bao gồm các nguyên lý đươc dùng để tổ chức hoặc để lưu trữ các hoạt
động và các trao đổi về mặt quan lý.


􀂄 Ví dụ: các lớp khái niệm có thể là: phương pháp, hiệu năng, mô hình, môn học…
<b>􀂄 Lớp sự kiện (event):</b>


􀂄 Lớp sư kiện là các điểm thời gian cân đươc lưu trữ. Các sư việc xay ra tại một thời điểm, hoặc một
bước trong một dãy tuân tư các bước


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

<b>Tiếp cận theo phân loại</b>



<b>Lớp tổ chức (organisation): tập hơp con người,</b>


tài nguyên, phương tiện, hoặc những nhóm xác định chức năng người dùng
􀂄 Ví dụ: đơn vị, bộ phận, phịng ban, chức danh,…


<b>􀂄 Lớp con người (people): lớp con người thể hiện các vai trò khác nhau của người dùng </b>
trong việc tương tác với hệ thống. Những đối tương này thường là người dùng hệ


thống hoặc những người không sử dụng hệ thống nhưng thông tin về họ đươc lưu trữ
bởi hệ thống



</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<b>Tiếp cận theo phân loại</b>



<b>Lớp vị trí (place): Các vị trí vật lý mà hệ thống cân mơ ta thơng tin về nó.</b>


􀂄 Ví dụ: tồ nhà, kho, văn phịng, chi nhánh, đại lý,…


<b>􀂄 Lớp sự vật hữu hình và thiết bị: các đối tương vật lý hoặc các nhóm của đối tương </b>
hữu hình mà có thể cam nhận trưc quan và các thiết bị mà hệ thống


tương tác.


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<b>Tiếp cận theo phân loại</b>



</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32></div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

<b>Tiếp cận theo phân tích hoạt </b>


<b>động usecase</b>



Phân tích use case “Giải quyết PIN khơng hợp
lệ”. Các hoạt động khách hàng có thể thực hiện
với hệ thống:


􀂄 Đưa vào thẻ ATM
􀂄 Nhập mã PIN
􀂄 Rút thẻ ATM


</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34></div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35></div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36></div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37></div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>

<b>StereoType của lớp</b>



</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>

<b>StereoType của lớp</b>



</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>

<b>StereoType của lớp</b>




</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

<b>StereoType của lớp</b>



</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42></div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>

<b>Xác định mối quan hệ giữa </b>


<b>các lớp</b>



<b>Xác định mối kết hợp association:</b>
<b>Hướng dẫn xác định mối kết hợp:</b>


􀂄 Một sư phụ thuộc giữa hai hay nhiều lớp có thể thiết lập thành mối
kết hơp. Mối kết hơp thường tương ứng với một động từ hoặc cụm
<b>giới từ như là thành phần của, làm việc cho, chứa</b>


<b>trong, …</b>


</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44></div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45></div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46></div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Mối kết hợp đa phân: là mối kết hơp giữa ba lớp trở lên, mối kết </b>


hơp này phức tạp trong cách thể hiện


</div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Mối kết hợp trực tiếp dư thừa: là các mối kết hơp đươc định nghĩa </b>


</div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Mối kết hợp trực tiếp dư thừa: là các mối kết hơp đươc định nghĩa </b>



</div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50></div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51></div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



Nâng cấp mối kết hợp:


􀂄 Xác định mối kết hợp tổng quát – chuyên biệt (generalization): Thể hiện quan hệ kế


thừa giữa các lớp và một cấu trúc phân cấp xác định những dòng kế thừa này


􀂄 <b>Tiếp cận top-down:</b>


􀂄 Từ một lớp chúng ta tìm kiếm cụm danh từ chứa tên lớp và
tính từ (hoặc danh từ). Đánh giá xem cụm danh từ này có
thể là một trường hợp đặc biệt cần được quản lý trong hệ
thống khơng


􀂄 Tìm kiếm xem có những đặc trưng riêng của lớp


</div>
<span class='text_page_counter'>(53)</span><div class='page_container' data-page=53></div>
<span class='text_page_counter'>(54)</span><div class='page_container' data-page=54>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



Nâng cấp mối kết hợp:


􀂄 Xác định mối kết hợp tổng quát – chuyên biệt (generalization):


􀂄 <b>Tiếp cận bottom-up:</b>


􀂄 Tìm kiếm trong các lớp để xác định xem có các thuộc tính và phương thức giống nhau. Sau đó



chúng ta có thể gom nhóm và đưa các thuộc tính và phương thức chung này lên một lớp
tổng quát (trừu tượng)


􀂄 Tạo mối kết hợp tổng quát hoá từ các lớp này đến lớp tổng quát mới xác định


</div>
<span class='text_page_counter'>(55)</span><div class='page_container' data-page=55>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Vấn đề đa thừa kế:</b>


􀂄 Phức tạp trong vấn đề kế thừa


</div>
<span class='text_page_counter'>(56)</span><div class='page_container' data-page=56>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Vấn đề đa thừa kế:</b>


􀂄 Phức tạp trong vấn đề kế thừa


</div>
<span class='text_page_counter'>(57)</span><div class='page_container' data-page=57>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



Xác định mối kết hơp thành phân (a-partof, aggregration)
􀂄 Đặc trưng cơ ban


<b>􀂄 Tính bắc cầu: Nếu lớp A là một thành phân của lớp B và lớp B là thành phân của </b>


<b>lớp C lớp A là thành phân của lớp C</b>


</div>
<span class='text_page_counter'>(58)</span><div class='page_container' data-page=58>

<b>Loại bỏ các mối kết hợp </b>



<b>không cần thiết</b>



Xác định mối kết hơp thành phân (a-partof, aggregration)


</div>
<span class='text_page_counter'>(59)</span><div class='page_container' data-page=59>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Vật chứa: một đối tương vật lý chứa đưng các thành phân nhưng không đươc cấu </b>


</div>
<span class='text_page_counter'>(60)</span><div class='page_container' data-page=60>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Tập hợp – thành viên: một đối tương khái niệm chứa các thành phân có thể vật lý </b>


hoặc khái niệm


</div>
<span class='text_page_counter'>(61)</span><div class='page_container' data-page=61>

<b>Loại bỏ các mối kết hợp </b>


<b>không cần thiết</b>



<b>Tập hợp – thành viên: một đối tương khái niệm chứa các thành phân có thể vật lý </b>


hoặc khái niệm


</div>
<span class='text_page_counter'>(62)</span><div class='page_container' data-page=62>

Xác đinh thuộc tính



Câu hỏi:


􀂄 Thơng tin gì về đối tương sẽ đươc quan lý ?
􀂄 Nguyên tắc:



􀂄 Tên: danh từ; cụm danh từ


􀂄 Đơn gian: chi dùng đủ thuộc tính để diễn đạt trạng thái đối tương ở
giai đoạn phân tích (thuộc tính sẽ đươc bổ sung chi tiết hơn ở các giai
đoạn tiếp theo)


</div>
<span class='text_page_counter'>(63)</span><div class='page_container' data-page=63>

Xác đinh thuộc tính



Lớp Khách Hàng: Phân tích lân lươt tất ca các use case có liên quan
đến lớp Khách


</div>
<span class='text_page_counter'>(64)</span><div class='page_container' data-page=64>

Xác đinh phương thức



<b>Các phương thức của mơi lớp có thể đươc xác định bằng cách phân </b>
<b>tích các biểu đồ tương tác.</b>


</div>
<span class='text_page_counter'>(65)</span><div class='page_container' data-page=65>

Xác đinh phương thức



Câu hỏi:


􀂄 Các đối tương chịu trách nhiệm xử lý gì về thơng tin của nó để cung cấp dịch vụ
cho hệ thống?


􀂄 Nguyên tắc:


􀂄 Tên: động từ + bổ ngữ


􀂄 Chi quan tâm đến các method có phạm vi tồn cục (public), các method có phạm
vi cục bộ sẽ đươc phát hiện trong giai đoạn thiết kế cài đặt (vd: constructor, ….)



</div>
<span class='text_page_counter'>(66)</span><div class='page_container' data-page=66>

Xác đinh phương thức



Phân tích các dịng message trong sơ đồ tuân tư để xem có thể
chuyển một hoạt động thành một method khơng?


􀂄 Nếu có, đặt tên cho method ứng với hoạt động đó


</div>
<span class='text_page_counter'>(67)</span><div class='page_container' data-page=67></div>
<span class='text_page_counter'>(68)</span><div class='page_container' data-page=68>

<b>Tinh chế thuộc tính</b>



Kiểu thuộc tính


􀂄 Thuộc tính đơn trị


􀂄 Thuộc tính đa trị: có thể dùng các cấu trúc, list, array, bag để khai báo cài đặt.


􀂄 Ví dụ: thuộc tính sốĐiệnThoại của lớp NhânViên có thể là đa trị
􀂄 địaChỉ[3]: String


</div>
<span class='text_page_counter'>(69)</span><div class='page_container' data-page=69>

<b>Tinh chế thuộc tính</b>



<Phạm vi> <tên> : <kiểu thuộc tính> =
<giá trị khởi tạo>


</div>
<span class='text_page_counter'>(70)</span><div class='page_container' data-page=70>

<b>Tinh chế thuộc tính</b>



<phạm vi> <tên> <(danh sách tham số)>:
<kiểu tra về>


􀂄 Các method đa số là các method có phạm vi tồn cục
􀂄 Ví dụ:



􀂄 +get_Tên(): String


</div>
<span class='text_page_counter'>(71)</span><div class='page_container' data-page=71>

Xác đinh phương thức



</div>
<span class='text_page_counter'>(72)</span><div class='page_container' data-page=72>

Xác đinh phương thức



<b>Một số vấn đề với tên phương thức</b>


◦ <b><sub>Thông điệp Create trong sơ đồ tương tác, chi ra một đối tương mới đươc khởi tạo, khi chuyển thiết kế </sub></b>


sang ngơn ngữ lập trình hướng đối tương, nó phai đươc thể hiện trong ngữ canh của ngôn ngữ hiện
thưc.


</div>
<span class='text_page_counter'>(73)</span><div class='page_container' data-page=73>

Xác đinh phương thức



<b>Một số vấn đề với tên phương thức</b>


◦ <sub>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 đó</sub>
◦ <sub>Ví dụ: Find() là một thơng điệp đến một tập đối tương</sub>


◦ <b><sub>Vì vậy, Find() không phai là một phân của lớp Productspecification; nó là một phân của interface của </sub></b>


</div>
<span class='text_page_counter'>(74)</span><div class='page_container' data-page=74>

Bổ sung role vào mối quan hê



<b>Bổ sung điều hướng vào mối quan hệ:</b>


◦ <b><sub>Điều hướng là một thuộc tính của Role, chi ra rằng mối quan hệ đươc thưc hiện từ lớp nguồn đến lớp </sub></b>


<b>mục tiêu.</b>



</div>
<span class='text_page_counter'>(75)</span><div class='page_container' data-page=75>

Bổ sung role vào mối quan hê



Ví dụ:


</div>
<span class='text_page_counter'>(76)</span><div class='page_container' data-page=76></div>
<span class='text_page_counter'>(77)</span><div class='page_container' data-page=77></div>
<span class='text_page_counter'>(78)</span><div class='page_container' data-page=78></div>
<span class='text_page_counter'>(79)</span><div class='page_container' data-page=79></div>
<span class='text_page_counter'>(80)</span><div class='page_container' data-page=80></div>
<span class='text_page_counter'>(81)</span><div class='page_container' data-page=81></div>
<span class='text_page_counter'>(82)</span><div class='page_container' data-page=82></div>
<span class='text_page_counter'>(83)</span><div class='page_container' data-page=83>

Sử dụng Package tổ chức domain


model



Để 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.


</div>
<span class='text_page_counter'>(84)</span><div class='page_container' data-page=84>

Nhóm các lớp vào Package



<b>Nguyên tắc 1: nhóm các lớp vào package phai thỏa các tiêu chí gắn </b>
<i><b>kết (coherence) sau:</b></i>


◦ <i><b><sub>Mục tiêu: các lớp phai tra về các dịch vụ đáp ứng yêu câu người dùng</sub></b></i>


◦ <i><b><sub>Ổn định: sư cô lập các lớp trong một package phai thưc sư ổn định trong quá </sub></b></i>


trình phát triển dư án, và sau đó.


◦ <i><b><sub>Thời gian sống của các đối tượng: tiêu chí này giup phân biệt đươc các lớp </sub></b></i>


mà đối tương có thời gian sống rất khác nhau.


</div>
<span class='text_page_counter'>(85)</span><div class='page_container' data-page=85>

Nhóm các lớp vào Package



Cách chọn các lớp vào một


package cân phai:




◦ <sub>Có cùng chủ đề, có quan hệ </sub>


chặt chẽ bởi khái niệm hoặc
mục đích


</div>
<span class='text_page_counter'>(86)</span><div class='page_container' data-page=86>

Nhóm các lớp vào Package



<b>Ký hiệu Package trong UML: đươc hiển thị như một thư mục dạng </b>


<i>tab, Subordinate packages có thể đươc hiển thị bên trong nó. </i>


<i><b>Tên packages </b></i>


</div>
<span class='text_page_counter'>(87)</span><div class='page_container' data-page=87>

Quyền sở hữu và tham chiếu



<b>Quyền sở hữu: </b>


◦ <sub>Một phân tử đươc sở hữu bởi package chứa nó. </sub>


◦ <sub>Tuy nhiên, Một phân tử có thể đươc tham chiếu đến một phân tử trong package </sub>


<b>khác. Trong trường hơp này, tên của phần tử đươc xác định bởi tên của package </b>
<b>theo định dạng: PackageName::ElementName </b>


</div>
<span class='text_page_counter'>(88)</span><div class='page_container' data-page=88>

Package phụ thuộc



Nếu một phân tử trong mô hình phụ thuộc vào một phân tử khác thì
<b>giữa chung có mối quan hệ phụ thuộc</b>



Một package phụ thuộc chi ra rằng các phân tử bên trong nó kết hơp
với các phân tử trong package mục tiêu


</div>
<span class='text_page_counter'>(89)</span><div class='page_container' data-page=89>

Package phụ thuộc



</div>
<span class='text_page_counter'>(90)</span><div class='page_container' data-page=90>

Ví dụ 1



</div>
<span class='text_page_counter'>(91)</span><div class='page_container' data-page=91>

Ví dụ 1



</div>
<span class='text_page_counter'>(92)</span><div class='page_container' data-page=92>

Ví dụ 1



</div>
<span class='text_page_counter'>(93)</span><div class='page_container' data-page=93>

Ví dụ 1



</div>
<span class='text_page_counter'>(94)</span><div class='page_container' data-page=94>

Bài tập



Cho domain model của hệ thống đặt vé máy bay, hãy chia


domain model thành 2 package sau cho đam bao:



◦ <sub>Tính kết dính trong mơi package </sub>


◦ <sub>Giam tối thiểu sư phụ thuộc giữa các package</sub>
◦ <sub>Dịch vụ của môi package là gì?</sub>


</div>
<span class='text_page_counter'>(95)</span><div class='page_container' data-page=95></div>
<span class='text_page_counter'>(96)</span><div class='page_container' data-page=96>

Bài tập



<b>Gợi ý:</b>



◦ <sub>Package 1: gồm các lớp liên quan đến chuyến bay</sub>
◦ <sub>Package 2: các lớp liên quan đến việc đặt vé</sub>



Lưu ý:



◦ <i><b><sub>Lớp flight đặt trong Package nào là tốt nhất để đam bao thời gian </sub></b></i>


</div>
<span class='text_page_counter'>(97)</span><div class='page_container' data-page=97>

Bài tập



</div>
<span class='text_page_counter'>(98)</span><div class='page_container' data-page=98>

Bài tập



</div>
<span class='text_page_counter'>(99)</span><div class='page_container' data-page=99>

Bài tập



<b>Giai pháp 2: lớp Flight trong package Bookings đam bao đươc các </b>
tiêu chí:


◦ <sub>Thời gian sống của các đối tương</sub>


◦ <b><sub>Flight có quan hệ chặt hơn với việc đặt vé (Bookings) so với các thông tin </sub></b>


</div>
<span class='text_page_counter'>(100)</span><div class='page_container' data-page=100>

Bài tập



</div>
<span class='text_page_counter'>(101)</span><div class='page_container' data-page=101></div>

<!--links-->

×