Chuyển đổi từ thiết kế sang phát sinh mã

Một phần của tài liệu Phân tích thiết kế hệ thống thời gian thực theo cách tiếp cận hướng đối tượng (Trang 72)

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; (adsbygoogle = window.adsbygoogle || []).push({});

// 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 layNutNhanlayCua, 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. (adsbygoogle = window.adsbygoogle || []).push({});

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). (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Phân tích thiết kế hệ thống thời gian thực theo cách tiếp cận hướng đối tượng (Trang 72)