Bài 15 - Thiết kế hướng đối tượng. Trong chương này người học sẽ tìm hiểu một số nội dung cơ bản như: MVC là gì? Java Swing và MVC, xây dựng phần mềm theo mô hình MVC, các bước xử lý yêu cầu người dùng, Unified Modeling Language, các biểu đồ UML chính,... Mời các bạn cùng tham khảo.
25/10/2014 BÀI 15 THIẾT KẾ HƯỚNG ĐỐI TƯỢNG Nội dung • Mơ hình MVC • Giới thiệu số biểu đồ UML 25/10/2014 MƠ HÌNH MVC MVC gì? • Mơ hình thiết kế phần mềm thành phần: Model – View – Control • Model: • Mơ hình hóa đối tượng chứa liệu cần xử lý • Cung cấp phương thức để truy cập liệu • Mơ hình hóa hoạt động nghiệp vụ • View: • Cung cấp giao diện cho người dùng nhập/xuất liệu • Kiểm tra tính hợp lệ liệu vào • Bắt kiện giao diện • Controller: nhận kiện truyền từ View gọi đến phương thức tương ứng Model hiển thị liệu trả View 25/10/2014 Java Swing MVC • Java Swing xây dựng dựa mơ hình MVC • Mỗi đối tượng Java Swing đóng gói thành phần: • Model: chứa liệu phương thức thao tác liệu • View: phương thức để hiển thị đối tượng • Controller: bắt xử lý kiện đối tượng • Ví dụ: Xem đoạn mã tạo đối tượng ComboBox sau • Mơ hình thực Java Swing Component Swing Component View Model Controller Ví dụ // Create JComboBox for setting the count step size add(new JLabel("Step:")); final Integer[] steps = {1, 2, 3, 4, 5}; final JComboBox comboCount = new Model JComboBox(steps); comboCount.setPreferredSize( View new Dimension(60, 20)); cp.add(comboCount); comboCount.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { step = (Integer) comboCount.getSelectedItem(); } Controller } }); 25/10/2014 Xây dựng phần mềm theo mơ hình MVC • Khi chương trình phát triển thêm nhiều tính năng, q trình xử lý phức tạp hơn, mơ hình MVC đóng gói đối tượng Swing khơng cịn đáp ứng • Xây dựng phần mềm theo mơ hình MVC Lợi ích MVC • Cho phép phân tách hệ thống lớn thành nhóm thành phần dễ dàng thiết kế, phát triển bảo trì • Các thành phần phát triển đồng thời • Từ Model hiển thị View khác Ví dụ: tập số liệu hiển thị dạng bảng, biểu đồ cột, biểu đồ tròn • Để tăng đảm bảo tính cộng tác phát triển đồng thời, lớp cần phải triển khai từ giao diện 25/10/2014 Giao tiếp thành phần Nên Không nên Các bước xử lý yêu cầu người dùng Người dùng thực hành vi View View bắt kiện, chuyển yêu cầu cho Controller xử lý Controller gọi phương thức tương ứng mà Model cung cấp Controller nhận kết trả (có thể Model chứa liệu) chuyển cho View để hiển thị View thay đổi khung nhìn hiển thị kết 10 25/10/2014 Một ví dụ public class Student { private String rollNo; private String name; public String getRollNo() { return rollNo; } public void setRollNo(String rollNo) { this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 11 Một ví dụ (tiếp) public class StudentView { public void printStudentDetails(String studentName, String studentRollNo){ System.out.println("Student: "); System.out.println("Name: " + studentName); System.out.println("Roll No: " + studentRollNo); } } 12 25/10/2014 Một ví dụ (tiếp) public class StudentController { private Student model; private StudentView view; public StudentController(Student model, StudentView view){ this.model = model; this.view = view; } public void setStudentName(String name){ model.setName(name); } 13 Một ví dụ (tiếp) public String getStudentName(){ return model.getName(); } public void setStudentRollNo(String rollNo){ model.setRollNo(rollNo); } public String getStudentRollNo(){ return model.getRollNo(); } public void updateView(){ view.printStudentDetails(model.getName(), model.getRollNo()); } } 14 25/10/2014 Một ví dụ (tiếp) public class MVCPatternDemo { public static void main(String[] args) { Student model = retriveStudentFromDatabase(); StudentView view = new StudentView(); StudentController controller = new StudentController(model, view); controller.updateView(); controller.setStudentName("John"); controller.updateView(); } private static Student retriveStudentFromDatabase(){ Student student = new Student(); student.setName("Robert"); student.setRollNo("10"); return student; } } 15 GIỚI THIỆU VỀ UML 16 25/10/2014 Unified Modeling Language • Là hệ thống ký pháp để mơ hình hóa hướng đối tượng • Phiên tại: UML 2.0 • UML mơ hình hóa hệ thống theo góc nhìn khác nhau: • Góc nhìn sử dụng: góc nhìn từ ngồi vào, phản ánh chức • • • • hệ thống cần có Góc nhìn thiết kế: góc nhìn cấu trúc logic bên hệ thống, phản ánh nhiệm vụ hệ thống cần thực Góc nhìn q trình: phản ánh trình thực thành phần hệ thống Góc nhìn cài đặt: phản ánh cách thức lắp ráp thành phần để hệ thống hoạt động Góc nhìn triển khai: phản ánh vị trí thành phần hệ thống thiết bị vật lý 17 Các biểu đồ UML • Các biểu đồ cấu trúc: • Biểu đồ lớp (Class diagram) • Biểu đồ đối tượng (Object diagram) • Biểu đồ gói (Package diagram) • Biểu đồ thành phần (Component diagram) • Biểu đồ triển khai (Deployment diagram) • Các biểu đồ hành vi: • Biểu đồ ca sử dụng (Use-case diagram) • Biểu đồ hoạt động (Activity diagram) • Biểu đồ máy trạng thái (State machine diagram) • Biểu đồ trình tự (Sequence diagram) • Biểu đồ giao tiếp (Communication diagram) 18 25/10/2014 Biểu đồ Ca sử dụng(Use-case diagram) • Ca sử dụng(use case) biểu diễn tập hợp chuỗi hành động hệ thống nhằm cung cấp kết cho đối tác (actor) • Tên ca sử dụng: động từ • Đối tác: đối tượng bên tương tác với hệ thống • Tên đối tác: danh từ Hệ thống khác Tên ca sử dụng Tên đối tác 19 Biểu đồ Ca sử dụng • Đặc điểm ca sử dụng: • Phải liên kết với đối tác • Phải dẫn tới kết cụ thể • Phải tập hợp nhiều chuỗi hành động • Đặc tả ca sử dụng: • Sử dụng biểu đồ Ca sử dụng • Sử dụng ngơn ngữ tự nhiên: • Mã tên ca sử dụng • Đối tác • Điều kiện đầu vào • Luồng • Luồng phụ ( xử lý ngoại lệ) 20 10 25/10/2014 Các liên kết ca sử dụng • Liên kết đối tác ca sử dụng: • Đối tác ca sử dụng có trao đổi liệu với • Nếu trao đổi chiều: • Khái qt hóa: • Đối tác A khái qt hóa B B thừa kế đặc điểm A • Ca sử dụng X khái quát hóa Y Y thừa kế đặc điểm X Y X A B 21 Các liên kết ca sử dụng • Bao hàm (include): Ca sử dụng X bao hàm Y trình thực X phải thực đầy đủ Y • X: ca sử dụng sở X Y • Mở rộng (extend): Ca sử dụng X thêm vào bước thực kết ca sử dụng Y điều kiện • X: ca sử dụng sở X Y • Lưu ý: Ca sử dụng khơng trình tự bước thực 22 11 25/10/2014 Các liên kết ca sử dụng • Phụ thuộc (dependence): Ca sử dụng Y phụ thuộc X trình thực Y phụ thuộc vào kết thực X X Y • Lưu ý: Biểu đồ ca sử dụng khơng trình tự bước thực Nội dung đặc tả ngơn ngữ tự nhiên 23 Ví dụ - Ca sử dụng đặt bữa nhà hàng Khách hàng ĐK: KH đăng ký thành viên 24 12 25/10/2014 Ví dụ: Đặc tả use-case UC-01 Khách hàng đặt bữa Đối tác Khách hàng Điều kiện Khơng có Luồng Khách hàng cung cấp thơng tin: Họ tên, Số điện thoại, Thời gian, Số người ăn… Hệ thống cung cấp thực đơn nhà hàng Khách hàng chọn thực đơn Nếu cần, khách hàng chọn thực đơn đặc biệt dành cho người ăn kiêng, theo chế biến (Nướng, Lẩu…) Hệ thống cung cấp ăn theo thực đơn khách chọn Khách hàng hoàn tất việc đặt Hệ thống cung cấp hóa đơn đặt hàng Khách hàng xác nhận toán hóa đơn Nếu khách hàng đăng ký thành viên hệ thống chọn tùy chọn tốn trả sau … Luồng phụ Nếu khách hàng chưa đăng nhập chọn toán trả sau, yêu cầu đăng nhập 25 Biểu đồ Hoạt động(Activity diagram) • Biểu đồ hoạt động mô tả luồng xử lý hệ thống thực chức • Hoạt động: cơng việc luồng xử lý • Các ký pháp: • Hoạt động: Tên hoạt động • Luồng điều khiển: • Chuyển từ hoạt động sang hoạt động khác: • Nút khởi tạo: • Nút kết thúc: 26 13 25/10/2014 Các ký pháp (tiếp) • Rẽ nhánh: • Quyết định: luồng vào, nhiều luồng ra, luồng phải loại trừ • Hịa nhập: nhiều luồng vào, luồng ra, có luồng vào xuất hiện, điểm hịa nhập vượt qua • Đồng hóa: biểu diễn luồng thực song song • Nút chạc (fork): mở nhánh song song • Nút chụm (join): đóng nhánh song song 27 Các ký pháp • Điều kiện canh giữ: [Điều kiện] • Luồng phép qua điều kiện xảy • Phân tuyến: sử dụng đường swim-line để phân định hoạt động cho (một nhóm) đối tượng thực :Đối tượng :Đối tượng :Đối tượng • Phân vùng: 28 14 25/10/2014 :Khách hàng :Bộ phận đặt hàng :Bộ phận tốn Đưa danh sách thực đơn Cung cấp thơng tin Chọn thực đơn Đưa DS ăn Chọn ăn chuyển sang biểu đồ khác [KH chọn thêm món] [KH hồn tất đặt món] Đơn ĐH [chưa tốn] Lập đơn đặt hàng Thanh toán 29 Biểu đồ lớp Tên lớp • Biểu diễn lớp Tên lớp DS thuộc tính DS phương thức • Biểu diễn định truy cập: • public: + • protected: # • không định: ~ • private: ─ • Biểu diễn giao diện Tên giao diện 30 15 25/10/2014 Biểu diễn quan hệ lớp Lớp A tên vai trò tên quan hệ tên vai trò số Lớp B số • Tên liên kết: mối quan hệ lớp liên kết • Tên vai trị: vài trị lớp quan hệ • Cơ số: số lượng đối tượng lớp tham gia vào liên kết: • Một số nguyên dương (1, 2, 3…, *) • Một dải giá trị: 1, 4, * • Khơng ghi: mặc định dạy Trường học thầy giáo * học Người * sinh viên 31 Biểu đồ lớp – Quan hệ (tiếp) • Quan hệ kế thừa: Lớp Lớp cha • Quan hệ triển khai Lớp Giao diện • Quan hệ kết tập: Lớp chứa Lớp thành phần • Đối tượng lớp thành phần tồn ngồi đối tượng lớp chứa • Quan hệ cấu thành: Lớp thành phần Lớp chứa • Đối tượng lớp thành phần khơng thể tồn ngồi đối tượng lớp chứa • Quan hệ phụ thuộc: Lớp A Lớp B • Sự thay đổi đối tượng lớp A dẫn đến thay đổi đối tượng lớp B 32 16 25/10/2014 Biểu đồ lớp – Ví dụ 33 Biểu đồ (Sequence diagram) • Biểu đồ tuần tự: biểu diễn trình tự thực theo thời gian thơng điệp trao đổi đối tượng • Thơng điệp gọi: • Thơng điệp kiếm (found message): khơng rõ nguồn • Thơng điệp hút (lost message): khơng rõ đích • Thơng điệp lặp nhiều lần: * • Biểu đồ trình tự biểu diễn theo chiều: • Chiều ngang: bố trí đối tượng, thứ tự đối tượng không quan trọng, song đối tượng khởi tạo q trình nên nằm bên trái • Chiều dọc: trục thời gian hướng xuống dưới, biểu diễn đường đời đối tượng Khi đối tượng bị hủy, kết thúc đường đời dấu gạch chéo (X) 34 17 25/10/2014 Ví dụ 35 Tài liệu tham khảo • Mẫu thiết kế (Design Pattern) • Brett D McLaughlin, et al, Head First Design Patterns • http://www.oodesign.com • http://www.tutorialspoint.com/design_pattern/ • Phân tích thiết kế hướng đối tượng: • Brett D McLaughlin, et al, Head First Object-Oriented Analysis & Design • Tài liệu UML • J Rumbaugh, I Jacobson, and G Booch The Unified Modeling Language Reference Manual, 2nd Edition 36 18 ... khơng trình tự bước thực 22 11 25/10/2014 Các liên kết ca sử dụng • Phụ thuộc (dependence): Ca sử dụng Y phụ thuộc X trình thực Y phụ thuộc vào kết thực X X Y • Lưu ý: Biểu đồ ca sử dụng khơng trình. .. Nội dung đặc tả ngôn ngữ tự nhiên 23 Ví dụ - Ca sử dụng đặt bữa nhà hàng Khách hàng ĐK: KH đăng ký thành viên 24 12 25/10/2014 Ví dụ: Đặc tả use-case UC-01 Khách hàng đặt bữa Đối tác Khách hàng... Thơng điệp lặp nhiều lần: * • Biểu đồ trình tự biểu diễn theo chiều: • Chiều ngang: bố trí đối tượng, thứ tự đối tượng khơng quan trọng, song đối tượng khởi tạo trình nên nằm bên trái • Chiều dọc: