Từ việc phân tích, thiết kế hệ thống thang máy dựa vào các biểu đồ của UML, ta chuyển thiết kế sang phát sinh mã Java. Ví dụ để chuyển sang mã Java từ lớp đối tƣợng thang máy (chƣa áp dụng kế thừa). Ta thực hiện 4 bƣớc sau đây:
1. Sử dụng tên lớp trong phần đầu của lớp để khai báo lớp public
public class ThangMay {
public ThangMay() {} }
2.Sử dụng các thuộc tính trong phần 2 để khai báo các biến
public class ThangMay {
// các thuộc tính
private boolean dichuyen; private boolean goiden; private int tangHientai = 1; private int tangDich = 2;
đóng cửa thang máy
rung chuông đặt lại nút thang máy
[thang máy nhàn rỗi] [nút trên tầng đích đã nhấn] [thang máy đang di chuyển] [nút tầng đã nhấn] [nút thang máy đã nhấn] [được gọi]
[không được gọi]
đặt lời gọi là true đặt lời gọi là false
di chuyển đến tầng đích
mở cửa thang máy
[nút trên tầng đích đã nhấn]
[nút trên tầng hiện tại đã nhấn]
- 71 - private int tgianDichuyen = 5; // xây dựng lớp Thangmáy
public ThangMay() {} }
3.Sử dụng liên kết trong biểu đồ lớp (hình 3.1) để khai báo các tham chiếu
public class ThangMay {
// các thuộc tính
private boolean dichuyen; private boolean goiden; private int tangHientai = 1; private int tangDich = 2; private int tgianDichuyen = 5;
// các đối tượng được liên kết
private CuaThangMay cuaThangMay; private NutThangMay nutThangMay; private Chuong chuong;
// xây dựng lớp Thangmáy
public ThangMay() {} }
4.Sử dụng các thao tác trong phần 3 của lớp để mô tả các phƣơng thức
public class ThangMay {
// các thuộc tính
private boolean dichuyen; private boolean goiden; private int tangHientai = 1; private int tangDich = 2; private int tgianDichuyen = 5;
// các đối tượng được liên kết
private CuaThangMay cuaThangMay; private NutThangMay nutThangMay; private Chuong chuong;
// xây dựng lớp Thangmáy
public ThangMay() {}
// các phương thức
public void diThangMay() {} public void yeucauThangMay() {} public void vaoThangMay() {} public void rakhoiThangMay() {} public void khoihanhThangMay() {} }
Tiếp theo xem xét việc phát sinh mã đối với lớp kế thừa từ một lớp trừu tƣợng.
5.Nếu lớp A là lớp con của lớp B. Ví dụ lớp ThangMay là lớp con của lớp
- 72 -
public class ThangMay extends ViTri {
// xây dựng lớp Thangmáy
public ThangMay() {} }
6.Nếu lớp B là một lớp abstract và lớp A là một lớp con của lớp B, thì lớp A
phải định nghĩa lại phƣơng thức abstract của lớp B (nếu lớp A là một lớp cụ
thể). Ví dụ lớp ViTri có phƣơng thức abstract layNutNhan và layCua, vì
vậy lớp ThangMay phải khai báo lại những phƣơng thức này, vì
ThangMay là một đối tƣợng cụ thể. Phần sau là mã Java thực hiện lớp
ThangMay hình 3.6 và 3.7. Phƣơng thức layNutNhan (dòng 20-23) trả lại
một tham chiếu tới đối tƣợng NutNhan của ThangMay, và phƣơng thức
layCua (dòng 25-28) trả lại một tham chiếu tới đối tƣợng Cua của
ThangMay – ThangMay có những liên kết với hai đối tƣợng này, dựa vào
biểu đồ lớp trong hình 3.7. Lớp ThangMay kế thừa thuộc tính trongluong,
tenViTri, và phƣơng thức non-abstract layTrongLuong, datTenViTri,
layTenViTri từ lớp cha ViTri, vì vậy không cần thực hiện những thuộc
tính và phƣơng thức này trong lớp ThangMay. Hình 3.6 là các thuộc tính
dichuyen, goiden, tangHientai, tangDich, tgianDichuyen (dòng 3-7) và
phƣơng thức diThangMay, yeucauThangMay, vaoThangMay,
rakhoiThangMay, và khoihanhThangMay của lớp ThangMay (dòng 14-
18). Dòng 8-10 là các thuộc tính đƣợc chỉ ra từ sự kết nhập của ThangMay
trong hình 3.7. Mã Java phát sinh từ biểu đồ lớp hình 3.6 và 3.7.
1 public class ThangMay extends ViTri { 2 // các thuộc tính
3 private boolean dichuyen; 4 private boolean goiden; 5 private ViTri tangHientai; 6 private ViTri tangDich;
7 private int tgianDichuyen = 5; 8 private Nut nutThangMay;
9 private Cua cuaThangMay; 10 private Chuong chuong;
11 // xây dựng lớp
12 public ThangMay() {} 13 // các phương thức
14 public void diThangMay() {} 15 public void yeucauThangMay() {}
- 73 -
16 public void vaoThangMay() {} 17 public void rakhoiThangMay() {} 18 public void khoihanhThangMay() {} 19 // định nghĩa lại phương thức layNutNhan
20 public Nut layNutNhan() 21 {
22 return nutThangMay; 23 }
24 // định nghĩa lại phương thức layCua
25 public Cua layCua() 26 {
27 return cuaThangMay; 28 }
- 74 -
KẾT LUẬN
Sau một thời gian dài thực hiện luận văn với sự cố gắng, nổ lực của bản thân tác giả cùng sự hƣớng dẫn tận tình, chu đáo của thầy hƣớng dẫn, luận văn đã thu đƣợc một số kết quả chính sau đây:
Trình bày khái quát các khái niệm cơ bản, các đặc trƣng và các vấn đề
liên quan đến việc phân tích thiết kế hệ thống thời gian thực.
Áp dụng UML và phần mềm Rose để phân tích, thiết kế hƣớng đối tƣợng
một hệ thống thời gian thực cụ thể - hệ thống điều khiển thang máy.
Cài đặt chƣơng trình mô phỏng các hoạt động cơ bản của hệ thống thang
máy bằng ngôn ngữ lập trình hƣớng đối tƣợng Java - ngôn ngữ rất đƣợc ƣu chuộng và đang đƣợc sử dụng phổ biến.
Hƣớng phát triển của khóa luận: trong tƣơng lai, tác giả rất mong muốn thực hiện những vấn đề sau đây:
Nghiên cứu và trình bày chi tiết hơn nữa các vấn đề liên quan đến hệ
thống thời gian thực. Trình bày cụ thể hơn vấn đề lập lịch trong thiết kế phần mềm thời gian thực. Phân tích, thiết kế hoàn chỉnh hệ thống thời gian thực, tích hợp cả phần cứng và phần mềm.
Đi sâu vào tìm hiểu và nghiên cứu đặc điểm quan trọng của hệ thống thời
gian thực là ràng buộc thời gian thực hiện giữa các tác vụ trong hệ thống, để tìm ra phƣơng pháp lập lịch phù hợp cho các tác vụ của hệ thống.
Xây dựng chƣơng trình hệ thống thang máy có giao diện thuận tiện hơn,
thực nhiều chức năng hơn nữa. Phát triển hệ thống thang máy phục vụ cho tòa nhà nhiều tầng, và gồm nhiều thang máy với đa thành phần sử dụng (phân quyền).
Mặc dù đã rất cố gắng, nổ lực nhƣng do thời gian và trình độ có những hạn chế nhất định do đó luận văn sẽ không tránh khỏi những thiếu sót. Trong tƣơng lai, em sẽ cố gắng hoàn thiện những hạn chế và phát triển những vấn đề đã nêu trên, để mang lại những kết quả khả quan hơn nữa. Rất mong nhận đƣợc sự đóng góp ý kiến của thầy cô và các bạn để luận văn ngày càng hoàn thiện hơn.
- 75 -
Cuối cùng, em xin chân thành cám ơn thầy PSG.TS Đoàn Văn Ban đã nhiệt tình hƣớng dẫn em hoàn thành luận văn này; xin cám ơn các cán bộ của Viện Công nghệ Thông tin thuộc Viện Khoa học và Công nghệ Việt nam đã tạo điều kiện giúp đỡ trong thời gian em làm luận văn.
- 76 -
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Nguyễn Văn Ba (2005), Phát triển hệ thống hướng đối tượng với UML 2.0
và C++, NXB Đại học Quốc Gia Hà nội.
[2] Đoàn Văn Ban (2005), Lập trình huớng đối tượng với Java, NXB Khoa
học và Kỹ thuật, Hà nội.
[3] Đặng Văn Đức (2002), Phân tích thiết kế hướng đối tượng bằng UML,
NXB Giáo Dục, Hà nội.
[4] Nguyễn Văn Vỵ (2004), Phân tích thiết kế hệ thống phần mềm theo hướng
đối tượng, Đại học Công nghệ, Hà nội.
[5] Nguyễn Văn Vỵ (2004), Phân tích thiết kế hệ thống quản lý đào tạo Khoa
Công nghệ theo công nghệ hướng đối tượng, Đề tài NCKH đặc biệt cấp
ĐHQG 2002-2004 - Mã số:QG.02.03.
Tiếng Anh
[6] Alan C.SHAW (2001), Real Time Systems and Software, John Wiley &
Sons, Inc, USA.
[7] Abdelouahed Gherbi and Ferhat Khendek (May–June 2006), “UML
Profiles for Real-Time Systems and their Applications”, Journal of Object
Technology, vol. 5, no. 4, pages 149–169, Electrical and Computer
Engineering Department, Concordia University, Montreal, Canada.
[8] Bruce Power Douglass (1998), Real-Time UML Second Edition Devoloping
efficient Objects for embedded system, Addison - Wesley.
[9] Craig Larman (2004), Applying UML and Patterns: An Introduction to
Object-Oriented Analysis and Design and Iterative Development, Third
Edition, Addison - Wesley.
[10] Grady Booch, James Rumbaugh, and Ivar Jacobson (2005), The Unified
Modeling Language User Guide, Second Edition, Addison - Wesley.
[11] Ian Sommerville (2001), Software Engineering, 6th Edition, Addison -
- 77 -
[12] J.A. Stankovic, K. Ramamritham, D. Niehaus, M. Humphrey, G. Wallace
(August 1998), “The Spring System: Integrated support for complex real-
time systems,” Technical Report CS-98-18, University of Virginia.
[13] M. Potkonjak and W. Wolf (October 1999), A methodology and algorithms
for the design of hard real-time multi-tasking ASICs, ACM Transactions on
Design Automation of Electronic Systems, Vol. 4, No. 4, pp. 430-459.
[14] Pao-Ann Hsiung (2001), Real-Time Constraints, Institute of Information
Science, Academia Sinica, Taipei, Taiwan, ROC.
[15] R.J.Wieringa (2003), Design Methods for Reactive Systems Yourdon,
Statemate, and the UML, Morgan Kaufmann Publishers.
Trang Web
[16] http://www.cs.york.ac.uk/rts/RTSBookThirdEdition.html.
[17] http://www.ebooks.vdcmedia.com.
[18] http://www.ilogix.com.
- 78 -
MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ... 1
DANH MỤC CÁC HÌNH VẼ ... 2
MỞ ĐẦU ... 4
CHƢƠNG I HỆ THỐNG THỜI GIAN THỰC ... 6
1.1. Khái niệm hệ thống thời gian thực ... 6
1.1.1. Những hệ thống thời gian thực (Real Time System - RTS)... 6
1.1.2. Khái niệm ... 7
1.1.3. Những ràng buộc thời gian thực ... 8
1.1.4. Đặc điểm của hệ thống thời gian thực ... 9
1.1.5. Mô hình hóa hệ thống thời gian thực ... 9
1.1.6. Thực hiện thời gian thực ... 10
1.2. Vấn đề thời gian trong hệ thống thời gian thực ... 11
1.2.1. Đồng hồ hệ thống ... 11
1.2.2. Các loại đồng hồ hệ thống ... 11
1.2.3. Quan niệm về sự rời rạc thời gian ... 11
1.2.4. Ràng buộc thời gian ... 12
1.3. Các lớp chính của hệ thống thời gian thực ... 12
1.3.1. Hệ thống thời gian thực cứng ... 13 1.3.2. Hệ thống thời gian thực mềm... 13 1.4. Ứng dụng hệ thống thời gian thực ... 13 1.4.1. Các lớp ứng dụng ... 13 1.4.2. Các ứng dụng hệ thống thời gian thực ... 14 1.5. Ngôn ngữ lập trình... 15
1.6. Hệ điều hành thời gian thực ... 16
1.6.1. Khái niệm hệ điều hành... 16
1.6.2. Hệ điều hành thời gian thực ... 16
1.7. Phân tích thiết kế hệ thống hƣớng đối tƣợng với UML ... 17
1.7.1. Phân tích, thiết kế hƣớng đối tƣợng ... 17
1.7.2. Cơ chế của cách tiếp cận hƣớng đối tƣợng ... 18
1.7.3. Các ƣu điểm của lập trình hƣớng đối tƣợng ... 18
1.7.4. Quá trình phát triển phần mềm ... 20
1.8. Thiết kế hệ thống thời gian thực ... 23
1.8.1. Thiết kế hệ thống thời gian thực ... 23
1.8.2. Phƣơng pháp hƣớng đối tƣợng trong RTS với UML ... 26
- 79 -
CHƢƠNG II PHÂN TÍCH THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN THANG
MÁY THEO CÁCH TIẾP CẬN HƢỚNG ĐỐI TƢỢNG VỚI UML ... 28
2.1. Giới thiệu UML - Unified Modeling Language ... 28
2.1.1. Giới thiệu ... 28
2.1.2. Các biểu đồ trong UML 2.0 ... 28
2.2. Hệ thống điều khiển thang máy (ECS) ... 35
2.2.1. Mô tả hệ thống ... 35
2.2.2. Các chức năng chính của hệ thống ... 35
2.2.3. Mục tiêu của hệ thống ... 36
2.3. Phân tích thiết kế hệ thống ECS qua các biểu đồ của UML... 36
2.3.1. Biểu đồ ca sử dụng ... 36
2.3.2. Biểu đồ lớp ... 38
2.3.3. Biểu đồ tuần tự ... 43
2.3.4. Biểu đồ truyền thông ... 51
2.3.5. Biểu đồ máy trạng thái ... 56
2.4. Kết luận ... 58
CHƢƠNG III CHƢƠNG TRÌNH MÔ PHỎNGHỆ THỐNG ĐIỀU KHIỂN THANG MÁY ... 60
3.1. Mô phỏng chƣơng trình ... 60
3.2. Chi tiết các lớp chính ... 61
3.3. Một số sửa đổi trong các lớp ... 63
3.4. Giao diện của chƣơng trình ... 68
3.5. Mô tả hoạt động của một số đối tƣợng... 69
3.6. Chuyển đổi từ thiết kế sang phát sinh mã ... 70
KẾT LUẬN ... 74