5. Thực hành xây dựng Classs Diagarm

Trong bài trước chúng ta đã nắm được khái niệm, các thành phần cũng như cách xây dựng Class Diagram thông qua ví dụ về xây dựng phần mềm cho ATM. Bài này, chúng ta sẽ bàn kỹ hơn về cách xây dựng Class Diagram cho ứng dụng eCommerce với hy vọng giúp các bạn nắm rõ hơn cách xây dựng bản vẽ này.

Hãy xem lại các yêu cầu và Use Case Diagram của hệ thống eCommerce chúng ta đã bàn ở bài số 3 của chuyên mục này.

 

1. Xây dựng Class Diagram cho hệ thống eCommerce

Bước 1: Tìm các Classes dự kiến

Nghiên cứu kỹ các yêu cầu, Use Case và nghiên cứu kỹ các hệ thống tương tự để xác định các lớp dự kiến thông qua việc xác định các đối tượng có trong hệ thống.

Xem xét Use Case Diagram của hệ thống:

–          Phân tích Use Case “Xem sản phẩm” chúng ta xác định thực thể sản phẩm (Products). Sản phẩm được phân loại theo chủng loại (Product Types) và Nhà sản xuất (Providers) nên đây có thể là 2 lớp có quan hệ với class Products.

–          Xem xét Use Case “Xem khuyến mãi” xác định Class Chương trình khuyến mãi (Promotions)

–          Use Case “Quản lý giỏ hàng” -> Class giỏ hàng (Shopping Carts)

–          Use Case Chat -> Class Chat session. Những người dùng tham gia Chat là SalesGuest có thể là hai class dự kiến.

–          Use Case “Đăng ký thành viên” ->  Khách hàng (Customers)

–          Use Case “Quản lý đơn hàng” -> Class đơn hàng  (Orders), class thu tiền (Payments) và Quản lý chuyển hàng (Shipping Orders) có thể là 2 lớp có liên quan với Class Orders.

Tạm thời vẽ và xác định quan hệ sơ bộ chúng ta có bản vẽ Class dự kiến như sau:

Bản vẽ sơ bộ Class Diagram khi phân tích các Use Case

Hình 1. Bản vẽ sơ bộ Class Diagram khi phân tích các Use Case

Bản vẽ này giúp chúng ta có cái nhìn cơ bản về cấu trúc hệ thống để tiếp tục phân tích. Tất nhiên, bạn cần phân tích tất cả các Use Case còn lại và tìm hiểu thêm về hệ thống để bổ sung đầy đủ Class dự kiến cho hệ thống.

Bước 2: Xác định thuộc tính và quan hệ cho các lớp

Chúng ta bổ sung các thuộc tính cho các lớp và phân tích quan hệ của chúng.

–          Products: xem xét tài liệu mô tả sản phẩm của hệ thống chúng ta có thể thấy Class Products cần những thuộc tính sau: Tên sản phẩm, mô tả, cấu hình, Giá bán, khuyến mãi, bảo hành (xem mô tả chi tiết sản phẩm trên Website)… Trong đó, thuộc tính giá thay đổi theo thời gian nên chúng ta nên tách ra thành lớp riêng là Giá (Prices). Tương tự thuộc tính khuyến mãi cũng được tách ra thành lớp Promotions.

–          Prices: có các thuộc tính là Mã sản phẩm, Giá, ngày bắt đầu, ngày hết hạn.

–          Promotions: tương tự như giá nó cần có lớp riêng với các thuộc tính là Mã sản phẩm, Mô tả khuyến mãi, Giá trị khuyến mãi, Ngày bắt đầu, Ngày hết hạn.

–          ProductTypes: chứa loại sản phẩm

–          Providers: chưa tên nhà sản xuất

–          ShoppingCarts: chứa các thông tin như: cartID, ngày, mã sản phẩm, số lượng, đơn giá. Chúng ta nhận thấy nếu để nguyên lớp này khi tạo đối tượng chúng sẽ lặp thông tin cartID và ngày mua nên tách chúng ra thành ShoppingCarts với các thuộc tính CartID, ngày và  CartDetails với các thuộc tính ProductID, số lượng, đơn giá.

–          Tương tự chúng ta có class Orders với OrderID, ngày, customerID và class Orderdetails với ProductID, số lượng, đơn giá.

–          Payments: chứa các thông tin như PaymentID, OrderID, ngày trả, số tiền, hình thức thanh toán.

–          Shippings: có thể chứa ShippingID, OrderID, Ngày chuyển, ngày đến, số tiền, phương thức vận chuyển.

–          Customers: CustomerID, Họ và tên, địa chỉ, điện thoại, ngày đăng ký v.v…

–          Guests: có thể chứa sessionID để xác định thông tin khi chat

–          Sales: có thể gộp với lớp người dùng (Users) chứa UserID, Name

–          ChatSessions:  ChatsessionID, tên người bán hàng, mã khách, mã tin nhắn, nội dung tin nhắn, ngày.

Nhập đầy đủ thuộc tính và vẽ chúng ra, chúng ta có bản vẽ như sau:

Prac_Class_Diagarm2

Hình 2. Bản vẽ Class Diagram sau khi thêm thuộc tính và tách các quan hệ

 

Bước 3: Bổ sung phương thức cho các lớp

Phương thức là các hành động mà đối tượng sinh ra từ lớp đó có thể thực hiện trong hệ thống. Ví dụ các đối tượng của lớp Customers có thể đăng ký mới, có thể thay đổi mật khẩu (password), kích hoạt người dùng (Active) v.v..

Class1

Hình 3. Ví dụ về các phương thức

Có một vấn đề ở đây là chúng ta rất khó xác định chính xác các phương thức của một lớp. Nếu thiếu bạn sẽ không thể cài đặt đủ yêu cầu chức năng, nếu thừa bạn tốn công cài đặt vô ích mà không dùng đến.  Bạn có thể đối chiếu khi phân tích và thiết kế tất cả các Use Case của hệ thống. Do vậy, chúng ta có thể bổ sung dần các phương thức cho các lớp khi sử dụng Activity Diagram và Sequence Diagarm để phân tích Use Case. Các bản vẽ này sẽ bàn ở các bài tiếp theo.

 

Bước 4: Thiết kế chi tiết các thuộc tính và phương thức cho lớp

Khi đã có được Class Diagram, bạn cần thiết kế chi tiết các lớp bằng cách đặc tả các thuộc tính và phương thức của nó.

–          Đặc tả thuộc tính: chúng ta xác định kiểu dữ liệu và kích thước.

–          Đặc tả phương thức: chúng ta xác định dữ liệu đầu vào, dữ liệu đầu ra.

Class2

Hình 4. Ví dụ về thiết kế lớp Customers

Việc sử dụng các kiểu dữ liệu và mô tả các phương thức của một lớp chúng ta đã học kỹ trong lập trình hướng đối tượng nên chúng ta không bàn ở đây. Hoàn tất các bước trên cho toàn bộ các Use Case chúng ta sẽ có bản vẽ Class hoàn chỉnh.

 

2. Kết luận

Bài này đã trao đổi cùng các bạn từng bước để xây dựng một bản vẽ Class cho hệ thống eCommerce. Bạn hãy hoàn thiện các bước còn lại để có được bản vẽ Class hoàn chỉnh.

Trong bài tiếp theo chúng ta sẽ phân tích hoạt động của hệ thống thông qua các bản vẽ của mô hình động (dynamic model) như activity diagram, sequence diagarm v.v….

 

Bài tiếpSơ đồ hoạt động (Activity Diagram)

Bài trướcGiới thiệu bản vẽ Class Diagram