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

chuong6sequencediagram xuanhiens weblog

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 (573.41 KB, 43 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>

<b>Các sơ đồ tương tác </b>


<b>trong UML</b>



Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


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

<b>Giới thiệu</b>



• Có hai loại sơ đồ dùng để biểu diễn sự tương tác giữa các đối
tượng bằng các thông điệp (messages):


• Collaboration diagrams
• Sequence diagrams


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

<b>Collaboration Diagrams </b>



<b>• Sơ đồ hợp tác - Collaboration diagrams</b>


• Biểu diễn sự tương tác giữa các đối tượng mà trong đó các đối tượng
có thể đặt tại bất kỳ vị trí nào.


• Thơng điệp tương tác được đánh số thứ tự thể hiện trình tự tương tác.
• Ví dụ:


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

<b>Collaboration Diagrams </b>



<b>• Ưu điểm</b>


• Tiết kiệm khơng gian, dễ dàng thêm đối tượng mới vào sơ đồ
<b>• Nhược điểm</b>



• Khó khăn trong việc biểu diễn các thơng điệp phức tạp


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

<b>Sequence Diagrams </b>



<b>• Sơ đồ tuần tự - Sequence diagrams </b>


• Sơ đồ tuần tự được dùng phổ biến trong biểu diện sự tương tác giữa
các đối tượng, trung vào việc trao đổi thông báo theo trình tự thời gian.
• Ví dụ:


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

<b>Sequence Diagrams </b>



<b>• Ưu điểm</b>


• Biểu diễn rõ ràng trình tự các thơng điệp tương tác giữa các đối tượng,
trong các trường hợp phức tạp


<b>• Nhược điểm</b>


• Chiếm không gian theo chiều ngang khi thêm đối tượng mới


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

<b>Các ký hiệu trong sơ đồ tương tác</b>



<b>• Lớp (Classes) và thể hiện (Instances)</b>


<i>• Trong UML, một thể hiện (instances) của một lớp (class) có ký hiệu </i>
<i>giống như Lớp, nhưng tên của thể hiện (instances) được gạch chân.</i>


• Ví dụ:



<i>• Tên của một Instance là duy nhất trong sơ đồ, nếu không đặt tên thì </i>


<i><b>đặt dấu : trước tên Lớp và gạch chân </b></i>


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

<b>Các ký hiệu trong sơ đồ tương tác</b>



<b>• Ký hiệu biểu thức thơng báo (Message)</b>


• Cú pháp chuẩn cho các biểu thức thông báo trong UML:


• Ví dụ:


• spec := getProductSpect (id)


• spec := getProductSpect (id:ItemID)


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 9


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

<b>Các ký hiệu trong </b>

<b>collaboration diagram</b>


<b>• Link: </b>


• Là một liên kết có hướng giữa hai đối tượng, là một thể hiện của một
quan hệ kết hợp.


<b>• Có thể có nhiều thông báo trên cùng một Link và theo cả hai chiều</b>
• Ví dụ:


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

<b>Các ký hiệu trong </b>

<b>collaboration diagram</b>


<b>• Messages to "self" or "this" </b>


• Một thơng báo được gửi từ một đối tượng để chính nó
• Ví dụ:


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

<b>Các ký hiệu trong </b>

<b>collaboration diagram</b>


<b>• Tạo một Instance</b>


<b>• Trong UML, quy ước thơng báo tên create được dùng để tạo instance.</b>
<b>• Thơng báo create có thể bao gồm các tham số, chỉ ra giá trị khởi tạo </b>


của instance.
• Ví dụ:


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

<b>Các ký hiệu trong </b>

<b>collaboration diagram</b>


<b>• Thơng báo có điều kiện (Conditional Messages)</b>


• Thơng báo có điều kiện được biểu diễn theo định dạng: <b>Số thứ tự </b>
<b>[điều kiện]</b>.


• Thơng báo này được chỉ gửi nếu biểu thức điều kiện có giá trị đúng.
• Ví dụ:


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

<b>Các ký hiệu trong Sequence diagram</b>



<b>• Link:</b>


• Khác với collaboration diagrams, trong sequence diagram không hiển
<b>thị Link giữa các đối tượng</b>


<b>• Thơng báo (Message)</b>



• Được biểu diễn bằng một biểu thức thông báo đặt trên đường thẳng có
hướng chỉ chiều truyền thơng báo.


• Các thông báo được tuần tự theo thời gian từ trên xuống


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

<b>Các ký hiệu trong Sequence diagram</b>



• Ví dụ:


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

<b>Các ký hiệu trong Sequence diagram</b>



<b>• Giá trị trả về của thơng báo: có 2 cách để biểu diễn giá trị trả </b>
về của thơng báo


• Dùng ký hiệu


<b>• Dùng biến chứa giá trị trả về: returnValue=message()</b>
<b>• Ví dụ: </b>


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

<b>Các ký hiệu trong Sequence diagram</b>



<b>• Thơng báo "self" hoặc "this“:</b>


• Thơng báo được gửi từ một đối tượng đến chính nó được biểu diễn
bằng cách sử dụng một hộp kích hoạt (activation box) lồng nhau


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

<b>Các ký hiệu trong Sequence diagram</b>



<b>• Thơng báo có điều kiện: </b>



• Thơng báo chỉ được gửi khi biểu thức điều kiện có giá trị đúng
• Cú pháp:


<b>[Conditional expression] Message()</b>


<b>Ví dụ:</b>


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

<b>Ví dụ</b>



<b>• Sơ đồ tuần tự của hành vi Kiểm tra tài khoản</b>


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

<b>Thiết kế hướng đối tượng</b>



Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân


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

<b>Nguyên tắc thiết kế hướng đối tượng</b>



<b>• Trong giai đoạn phân tích, u cầu của bài tốn được mơ hình </b>
<b>hóa bằng domain model.</b>


<b>• Trong giai đoạn thiết kế, mục tiêu là xác định các lớp phần </b>
<b>mềm và gán trách nhiệm cho các đối tượng sao cho đáp ứng </b>
được các u cầu của bài tốn.


• GRASP là một phương pháp sử dụng các nguyên tắc thiết kế
dựa trên mơ hình (patterns) gán trách nhiệm.


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

<b>Trách nhiệm - Responsibilities</b>




• Trách nhiệm liên quan đến nghĩa vụ của một đối tượng về hành
vi của nó.


• Trách nhiệm được gán vào lớp các đối tượng trong suốt giai
đoạn thiết kế đối tượng.


<b>• Có 2 loại trách nhiệm</b>
• Doing


• Knowing


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

<b>Trách nhiệm - Responsibilities</b>



<b>• Doing</b>


• Thực hiện một cơng việc, ví dụ, tạo đối tượng, thực hiện phép tính, …
• Bắt đầu một hoạt động trong các đối tượng khác.


• Kiểm sốt và điều phối các hoạt động trong các đối tượng khác.
<b>• Knowing</b>


• Biết về dữ liệu được đóng gói riêng
• Biết về những đối tượng liên quan


• Biết biết về những thơng tin có thể lấy được và tính tốn


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

<b>Phương thức - Methods </b>



<b>• Phương thức được thực hiện để hoàn thành trách nhiệm. </b>



<b>• Trách nhiệm được thực hiện bằng các phương thức. Phương </b>
thức có thể kết hợp với phương thức khác để thực hiện trách
nhiệm


<b>• Ví dụ</b>


<b>• Lớp Sale có thể dùng nhiều phương thức và hợp tác với các đối tượng </b>
<i><b>khác để tính total, như gửi thơng báo agetSubtotal lớp SalesLineltem </b></i>
<i>u cầu tính Subtotal.</i>


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

<b>Mơ hình - Patterns</b>



• Ngun tắc chung và các giải pháp đặc trưng được hệ thống
hóa trong một định dạng cấu trúc mô tả các vấn đề và giải pháp
được dùng để hướng dẫn thiết kế phần mềm, được gọi là Mơ
hình (Pattern)


<b>• Tên của mơ hình thường gồm 2 phần: Vấn đề và giải pháp</b>


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

<b>GRASP là gì?</b>



• GRASP (General Responsibility Assignment Software Patterns)
• Mô tả nguyên tắc cơ bản trong thiết kế hướng đối tượng, được biểu


diễn dưới dạng các mơ hình (Patterns)
<b>• Các mẫu Grasp</b>


• Information Expert
• Creator



• High Cohesion
• Low Coupling
• Controller


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

<b>Information Expert </b>



<b>• Giải pháp: Gán một trách nhiệm cho lớp mà chứa các thông tin </b>
cần thiết để thực hiện trách nhiệm.


• Ví dụ: trong domain model của hệ thống máy tính tiền, những
<i>lớp nào cần thiết để tính GrandTotal</i>


<i><b>Lớp Sale có thể tính tổng của tất cả </b></i>
<i><b>các instance của lớp SalesLineItem</b></i>


<i><b> Gán trách nhiệm tính GrandTotal</b></i>


<i>Cho lớp Sale</i>


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

<b>Information Expert </b>



• Ví dụ (tt):


<i>• Thơng tin thiết để tính Subtotal là quantitytrong lớp SalesLineltem. và </i>


<i>price trong lớp ProductSpecification. </i>


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

<b>Information Expert </b>



• Ví dụ (tt):



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

<b>Creator</b>



<b>• Giải pháp: gán lớp B có trách nhiệm tạo ra một thể hiện của </b>
lớp A nếu một hoặc nhiều điều sau đây là đúng:


• B gộp các đối tượng A
• B chứa đối tượng A.


• B ghi một thể hiện của các đối tượng A


• B có các dữ liệu khởi tạo được thơng qua A khi nó được tạo ra.


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

<b>Creator</b>



<b>• Vấn đề: Ai phải chịu trách nhiệm cho việc tạo ra một thể hiện </b>
mới của một số lớp?


• Ví dụ: ai sẽ chịu trách nhiệm cho việc tạo ra một thể hiện của
SalesLineltem?


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

<b>Creator</b>



• Vd(tt): vậy việc gán trách nhiệm yêu cầu phương thức


<i>makeLineltem được định nghĩa trong lớp Sale.</i>


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

<b> Low Coupling </b>



<b>• Low coupling: là liên kết có độ phụ thuộc thấp, các phần tử có </b>


low coupling bao gồm: classes, subsystems, systems


<b>• Vấn đề: Làm thế nào để hỗ trợ độ phụ thuộc thấp, tác động </b>
thay đổi thấp, và tăng tái sử dụng?


• Ví dụ: các lớp trong hệ thống máy tính tiền


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 33


Payment


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

<b>Low Coupling</b>



• Ví dụ(tt): lớp nào thực hiện trách nhiệm tạo một thể hiện của
<i>lớp Payment?</i>


<i><b>• Lớp Register có thể thực hiện tạo (creating) một Payment và gửi một </b></i>
<i><b>thông báo addPayment(p) đến lớp Sale</b></i>


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

<b>Low Coupling</b>



• Ví dụ(tt): một giải pháp khác cho việc tạo các thể hiện mới của


<i>Payment là kết hợp lớp Payment và Sale</i>


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

<b>Low Coupling</b>



• Mẫu thiết kế 1:


<i>• Register tạo (create) một thể hiện của Payment, thêm kết ghép </i>


<i>(coupling) với Payment</i>


• Mẫu thiết kế 2:


<i>• Sale tạo (create) một thể hiện của Payment, không làm tăng coupling.</i>
 Mẫu thiết kế 2 là thích hợp hơn vì lower coupling được duy trì


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

<b>High Cohesion </b>



<b>• Cohesion: trong thiết kế hướng đối tượng, cohesion (chức </b>
năng gắn kết) là một biện pháp làm thế nào để các phần tử liên
quan chặt chẽ với nhau.


<b>• Giải pháp: Gán một trách nhiệm để duy trì sự kết dính cao</b>


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

<b>High Cohesion </b>



<i>• Ví dụ: giả sử cần tạo một thể hiện của Payment và kết hợp với </i>
<i>lớp Sale. Lớp nào thực hiện trách nhiệm này?</i>


<i>• Theo mẫu create: lớp Register tạo Payment và gửi thông báo </i>


<i>AddPayment(p) đến lớp Sale</i>


Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 38


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

<b>High Cohesion </b>



• Ví dụ (tt): giải pháp 2, ủy quyền trách nhiệm tạo thể hiện của



<i>Payment cho lớp Sale.</i>


<i>• Thiết kế thứ hai hỗ trợ high cohesion và low coupling</i>


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

<b>Controller</b>



<b>• Controller: là một điều phối, nó khơng thực hiện cơng việc của </b>
chính nó mà ủy thác cho các đối tượng khác.


<b>• Vấn đề: Ai chịu trách nhiệm xử lý sự kiện đầu vào?</b>


<b>• Giải pháp: Gán trách nhiệm cho đối tượng đại diện cho:</b>
• Hệ thống hoặc hệ thống con (subsystem)


• Một kịch bản của Use mà trong đó xãy ra sự kiện của hệ thống (use
case controller)


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

<b>Controller</b>



<i>• Ví dụ: ai điều khiển các sự kiện của hệ thống như enterltem và </i>


<i>endSalel </i>


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

<b>Controller</b>



• Ví dụ (tt): theo mẫu Controller thì có 2 lựa chọn


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

<b>Controller</b>



• Hệ thống nhận sự kiện từ bên ngoài, thường liên quan đến một


<b>giao diện điều khiển bởi con người, hoặc một hệ thống khác.</b>


<i>• Trong thiết kế đối tượng, controller pattern hướng dẫn việc lựa </i>
chọn điều khiển sự kiện phù hợp.


<b>• Controller nhận các yêu cầu dịch vụ từ các lớp giao diện và </b>
phối hợp thực hiện, bằng cách điều phối cho các đối tượng
khác.


</div>

<!--links-->

×