MỤC LỤC
Trang
Lời cảm ơn .i
Lời nói đầu .ii
Mục lục.v
Danh mục hình .vii
Danh mục bảng .x
Chương 1 : TỔNG QUAN VỀLẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG .1
1.1. Đôi nét vềthịtrường điện thoại di động Việt Nam .1
1.1.1. Sựphát triển của thịtrường thông tin di động .1
1.1.2. Nhu cầu phát triển phần mềm cho điện thoại di động .2
1.2. Lập trình trên điện thoại di động.4
1.2.1. Quá trình phát triển ứng dụng J2ME .4
1.2.2. Các J2ME IDE .5
1.3. Giới thiệu một sốcông cụhỗtrợlập trình J2ME .6
1.3.1. J2ME Wireless Toolkit (WTK).6
1.3.2. Borland JBuiler .9
1.3.3. Sun ONE Studio 5, Mobile Edition .16
Chương 2 : GIỚI THIỆU KHÁI QUÁT VỀCHUẨN J2ME .23
2.1. Nền tảng Java .23
2.2. Sựkhác nhau giữa ngôn ngữJava trên CLDC với Java thông thường.29
2.3. MIDP.32
2.3.1. Định nghĩa.32
2.3.2. Yêu cầu vềphần cứng .32
2.3.3. Các khảnăng và hạn chếcủa MIDP .33
Chương 3 : NHỮNG KHÓ KHĂN DO HẠN CHẾCỦA J2ME .36
3.1. Các hàm tô màu.36
3.2. Các hàm vẽ đường.37
3.3. Vấn đềfont chữ.38
3.4. Vấn đềvẽchuỗi ký tự.39
3.5. Vấn đềvềsốthực .40
Chương 4 : PHÂN TÍCH – THIẾT KẾ ỨNG DỤNG .42
4.1. Khảo sát hiện trạng.42
4.2. Phân tích và xác định yêu cầu .43
4.2.1. Danh sách các yêu cầu nghiệp vụ.43
4.2.2. Các yêu cầu phi chức năng .43
4.3. Thiết kế ứng dụng .44
4.3.1. Lược đồsửdụng .44
4.3.2. Đặc tảUse Case .45
4.3.3. Sơ đồlớp mức phân tích .57
4.3.4. Các biểu đồhoạt động.64
4.3.4. Sơ đồlớp mức thiết kế.70
Chương 5 : MỘT SỐCẢI TIẾN NHẰM TỐI ƯU HÓA CHƯƠNG TRÌNH.95
5.1. Nội dung và ý nghĩa của việc tối ưu hóa.95
5.2. Tối ưu hóa kích thước chương trình .95
5.2.1. Các nguyên tắc tối ưu kích thước trong thiết kếchương trình .95
5.2.2. Tối ưu kích thước chương trình khi đóng gói .99
5.3. Tối ưu hóa vềtốc độ.104
5.3.1. Khái quát chung .104
5.3.2. Tìm các vịtrí cần tối ưu vềtốc độ.104
5.3.3. Các nguyên tắc tăng tốc cho chương trình.106
5.4. Tối ưu hóa việc sửdụng bộnhớ.110
5.4.1. Công cụtheo dõi việc sửdụng bộnhớ.110
5.4.2. Các nguyên tắc tối ưu hóa việc sửdụng bộnhớ.111
Chương 6 : THỬNGHIỆM – HƯỚNG DẪN CÀI ĐẶT VÀ SỬDỤNG .114
6.1. Cài đặt chương trình trên máy ảo.114
6.1.1. Trình giảlập Sony Ericsson .114
6.1.2. Trình giảlập Nokia .115
6.1.3. Trình giảlập Siemens .117
6.1.4. Trình giảlập Samsung .120
6.1.5. Trình giảlập chuẩn (Sun Microsystems) .121
6.2. Vấn đềhỗtrợtiếng Việt có dấu .123
6.2.1. Hiển thịtiếng Việt trên máy ảo .123
6.2.2. Hiển thịtiếng Việt trên thiết bịthật .123
6.3. Hướng dẫn sửdụng chương trình .124
6.3.1. Chức năng duyệt bản đồ.124
6.3.2. Chức năng tra cứu địa điểm, tên đường .124
6.3.3. Chức năng tìm đường đi ngắn nhất giữa hai điểm.128
6.3.4. Chức năng trợgiúp, hướng dẫn sửdụng.131
Chương 7 : TỔNG KẾT – ĐÁNH GIÁ.133
7.1. Ưu điểm.133
7.2. Khuyết điểm .133
7.3. Hướng mởrộng .134
Phụlục A : CÁC THUẬT NGỮ ĐƯỢC SỬDỤNG .135
Phụlục B : GIỚI THIỆU CÁC CHƯƠNG TRÌNH GIẢLẬP.138
B.1. JDK.138
B.2. Công cụphát triển của hãng thứba .138
B.3. Trình giảlập các loại điện thoại di động .139
B.3.1. Siemens.139
B.3.2. Sony Ericsson .140
B.3.3. Samsung .142
B.3.4. Nokia .145
Tài liệu tham khảo.147
164 trang |
Chia sẻ: netpro | Lượt xem: 1883 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng bản đồ trên điện thoại di động có hỗ trợ Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iữa máy di động và server: ví dụ như các
chương trình không thể kết nối tới server nếu thiếu sự chấp thuận
của người sử dụng.
• Thêm các API hỗ trợ Multimedia.
• Mở rộng các tính năng của Form. Nhiều cải tiến đã được đưa vào API
javax.microedition.lcdui trong MIDP 2.0, nhưng các thay đổi lớn nhất (ngoài API
cho game) là trong Form và Item.
• Hỗ trợ các lập trình viên Game bằng cách tung ra Game API. Có lẽ Sun
đã kịp nhận ra thị trường đầy tiềm năng của các thiết bị di động trong lĩnh vực
Game. Với MIDP 1.0 thì các lập trình viên phải tự mình viết code để quản lý các
Chương 2 : Giới thiệu khái quát về chuẩn J2ME
35
hành động của nhân vật cũng như quản lý đồ họa. Việc này sẽ làm tăng kích thước
file của sản phẩm cũng như việc xuất hiện các đoạn mã bị lỗi. Được hưởng lợi nhất
từ Game API trong MIDP 2.0 không chỉ là các lập trình viên Game mà còn là các
lập trình viên cần sử dụng các tính năng đồ họa cao cấp.
• Ý tưởng cơ bản của Game API là việc giả định rằng một màn hình game
là tập hợp các layer (lớp). Ví dụ như : trong một game đua xe thì màn hình nền là
một layer, con đường là một layer và chiếc xe được xem như đang nằm trên layer
khác.
• Với Game API nhà phát triển còn được cung cấp các tính năng như quản
lý các thao tác bàn phím.
• Hỗ trợ kiểu ảnh RGB : một trong những cải tiến hấp dẫn cho các nhà phát
triển MIDP là việc biểu diễn hình ảnh dưới dạng các mảng số nguyên, cho phép
MIDlet thao tác với dữ liệu hình ảnh một cách trực tiếp.
Chương 3 : Những khó khăn do hạn chế của J2ME
36
Chương 3 : NHỮNG KHÓ KHĂN DO HẠN CHẾ CỦA J2ME
Như chương 2 đã đề cập, J2ME được thiết kế nhắm đến thị trường các thiết
bị di động có cấu hình thấp, hạn chế về năng lực xử lý và khả năng lưu trữ. Cũng vì
vậy, bộ thư viện lớp của J2ME cũng được giản lược để trở nên đơn giản và gọn nhẹ
hơn rất nhiều so với J2SE. Những hàm, lớp ít khi sử dụng, không cần thiết hoặc
không thể cài đặt được do khả năng hạn chế của phần cứng thiết bị đều được loại
bỏ. Tuy vậy, việc loại bỏ quá nhiều thư viện hàm cũng gây không ít khó khăn cho
nhóm trong quá trình thực hiện đề tài, đặc biệt là việc thiếu thốn các hàm về đồ họa.
Điều này đặt ra yêu cầu tìm kiếm giải pháp khắc phục hoặc các giải pháp thay thế.
3.1. Các hàm tô màu :
Thư viện đồ họa của J2ME – MIDP 1.0 chỉ hỗ trợ các hàm tô màu sau :
fillArc : tô màu cho vùng giới hạn bởi một cung
fillRect : tô màu cho một hình chữ nhật
fillRoundRect : tô màu cho một hình chữ nhật có góc tròn
Nhằm giúp người xem bản đồ dễ dàng phân biệt được các đơn vị hành chính
(trong đề tài này, đó là các quận), hầu hết trong mọi bản đồ, người ta thường tô màu
cho mỗi đơn vị sao cho hai vùng kế cận nhau không cùng màu với nhau.
Nếu như trong Visual C++, chúng ta có thể sử dụng ít nhất là 1 trong 3 hàm
FillRgn, FillPolygon, FloodFill để thực hiện được việc này. Trong phiên bản Java
chuẩn (J2SE) cũng có cung cấp hàm FillPolygon nhưng đáng tiếc là trong J2ME,
hàm này lại bị lược bỏ và chuẩn J2ME cũng không cung cấp hàm nào giúp tô màu
Chương 3 : Những khó khăn do hạn chế của J2ME
37
cho một vùng kín có hình dạng bất kỳ. Nếu chỉ sử dụng 3 hàm tô màu như trên thì
không thể nào thực hiện được.
Tuy vậy, một điều may mắn là trong phiên bản MIDP 2.0, thư viện đồ họa lại
được thêm vào 1 hàm mới, đó là fillTriangle. Đó là một cơ hội mà chúng ta có thể
tận dụng được.
Theo một quy tắc trong đồ họa máy tính, một mặt phẳng bất kỳ, kể cả hình
tròn đều có thể được lợp kín từ nhiều tam giác (với số lượng tam giác đủ lớn). Như
vậy, nếu chúng ta có thể tạo được các tam giác từ dữ liệu về ranh giới của các quận
rồi áp dụng hàm fillTriangle thì vấn đề tô màu cho các quận sẽ được giải quyết.
Tuy nhiên, cách này có một hạn chế đó là chỉ có thể thực hiện được nếu điện
thoại di động sử dụng MIDP 2.0
3.2. Các hàm vẽ đường :
Thư viện đồ họa trong J2ME chỉ hỗ trợ hàm vẽ đường thẳng có độ dày là 1
pixel, ngoài ra không có hàm nào khác cho phép thay đổi độ dày này, điều mà
chúng ta có thể thay đổi được chỉ là dạng nét vẽ : nét liền (SOLID) hay nét đứt
(DOTTED). Nếu so với phiên bản chuẩn J2SE thì chúng ta thấy rằng thư viện đồ
họa J2ME đã bị loại bỏ hàm setStroke vốn dễ dàng thực hiện được điều này.
Như vậy, khi cần vẽ các con đường trên bản đồ có độ dày mỏng khác nhau
và đủ lớn để có thể vẽ tên đường trên đó cũng như để phân biệt các đại lộ với các
đường nhỏ hơn, chúng ta buộc phải vẽ liên tiếp nhiều đoạn thẳng xếp cạnh nhau.
Chương 3 : Những khó khăn do hạn chế của J2ME
38
Đây là các giải quyết đơn giản nhất, tuy nhiên, việc gọi nhiều hàm vẽ liên tục
cũng có hạn chế là làm giảm tốc độ của chương trình. Do đó, chương trình cần phải
so sánh để loại bỏ việc vẽ những những đường không nhìn thấy và hạn chế đến mức
thấp nhất số đoạn thẳng cần vẽ.
3.3. Vấn đề font chữ :
J2ME không cho phép chúng ta thay đổi loại font chữ cho đối tượng
Graphics, có nghĩa là không cho phép chúng ta quy định font family, font size…
Điều này có thể là do font hệ thống trong thiết bị là có giới hạn và chỉ có một số
điện thoại di động cho phép cài đặt thêm font chữ vào máy.
Khi tạo một đối tượng thuộc lớp Font để sử dụng, chúng ta chỉ có một cách,
đó là :
Font font = Font.getFont(int face, int style, int size)
Trong đó, các tham số truyền vào bắt buộc phải là các hằng số sau :
face : FACE_SYSTEM, FACE_MONOSPACE, FACE_PROPORTIONAL
style : STYLE_PLAIN, hoặc tổ hợp từ các dạng STYLE_BOLD,
STYLE_ITALIC, STYLE_UNDERLINED
size : SIZE_SMALL, SIZE_MEDIUM, SIZE_LARGE
Đặc điểm này gây ra một bất lợi cho chương trình, đó là khó xác định được
chính xác kích thước của font chữ được sử dụng để lựa chọn cho phù hợp vì đối với
một số điện thoại, font với kích thước trung bình có thể đẹp, nhưng với một số điện
thoại khác thì quá to hoặc quá nhỏ hay quá cao.
Mặt khác, khi phóng to bản đồ đến một mức nào đó thì font chữ có kích
thước tối đa cũng sẽ trở nên quá nhỏ và không còn phù hợp nữa. Đây là một vấn đề
thuộc về hệ thống cho nên nhóm thực hiện đề tài không khắc phục được triệt để mà
Chương 3 : Những khó khăn do hạn chế của J2ME
39
chỉ có thể chọn lựa được dạng font cùng với kích thước thích hợp nhất phù hợp với
phần lớn điện thoại phổ biến trên thị trường Việt Nam hiện nay.
3.4. Vấn đề vẽ chuỗi ký tự :
Trong J2ME, việc vẽ một chuỗi ký tự được thực hiện thông qua hàm sau :
public void drawString(String str, int x, int y, int anchor)
với x, y là tọa độ bắt đầu vẽ và anchor là chế độ căn lề. Anchor được tổ hợp từ 1
hằng số căn lề theo chiều ngang (LEFT, HCENTER, RIGHT) và 1 hằng số nhằm
căn lề theo chiều dọc (TOP, BASELINE, BOTTOM).
Nếu như trong Visual C++, chúng ta có thể vẽ chuỗi ký tự xoay theo mọi
hướng nhờ vào 2 trường lfEscapement và lfOrientation của struct LOGFONT thì
trong J2ME, chúng ta không được cung cấp bất cứ một hàm, một đối tượng nào có
chức năng tương tự như thế. Mọi chuỗi ký tự do thư viện đồ họa của J2ME vẽ ra
đều có chiều nằm ngang.
Như vậy, nếu một con đường trên bản đồ có chiều không nằm theo phương
ngang (hầu hết các đường đều như vậy) thì chúng ta không thể sử dụng hàm vẽ
chuỗi ký tự nêu trên để vẽ tên đường cũng như không thể xoay tên theo hướng của
đường như trong các bản đồ bình thường khác :
Chương 3 : Những khó khăn do hạn chế của J2ME
40
Để khắc phục việc này, chúng ta có thể sử dụng một giải pháp thay thế, đó là
phân rã chuỗi tên đường thành các ký tự rồi trực tiếp tính toán để xác định vị trí của
mỗi ký tự trên bản đồ, sau đó sử dụng hàm vẽ ký tự để hiển thị từng ký tự này ra
màn hình :
public void drawChar(char character, int x, int y, int anchor)
ý nghĩa của các tham số tương tự như hàm drawString.
Sau khi áp dụng phương pháp trên, kết quả đạt được như sau :
Nhận xét :
Giải pháp này cũng chưa thật sự tốt do buộc chương trình phải xử lý, tính
toán nhiều. Ngoài ra, việc vẽ các ký tự trong tên đường một cách rời rạc như vậy
cũng có thể khiến người sử dụng khó theo dõi nếu một vùng nào đó có số lượng
đường giao thông nhiều và nằm gần nhau. Tuy vậy, trong điều kiện thiếu thốn các
hàm về xử lý font chữ, các hàm vẽ ký tự của thư viện đồ họa thì đây là giải pháp
duy nhất, tốc độ thực hiện cũng có thể chấp nhận được.
3.5. Vấn đề về số thực :
Như chương 2 đã trình bày, J2ME đã loại bỏ kiểu dữ liệu số thực (float,
double). Từ lý do này chương trình gặp phải một số khó khăn sau :
- Phải xây dựng lại hàm tính căn bậc 2 để phục vụ cho mục đích xác định
khoảng cách giữa 2 tọa độ.
- Vì không hỗ trợ số thực cho nên J2ME cũng không hỗ trợ các hàm tính sin,
cos của một góc. Như vậy, chúng ta không thể vẽ được mũi tên cho các đoạn
đường một chiều bởi vì để xác định được 2 đoạn thẳng trên đầu mũi tên,
Chương 3 : Những khó khăn do hạn chế của J2ME
41
chúng ta bắt buộc phải sử dụng đến công thức lượng giác. Hiện nay, có nhiều
lập trình viên trên thế giới xây dựng một thư viện bổ sung để xử lý các số
thực :
Tuy nhiên, xét thấy việc sử dụng thêm các thư viện hàm bổ sung sẽ làm tăng
đáng kể kích thước và việc tính toán nhiều trên số thực cũng khiến cho chương trình
chạy chậm đi, hơn nữa, đây cũng không phải là tính năng thực sự quan trọng nên
nhóm thực hiện đề tài không cài đặt phần này.
Chương 4 : Phân tích – Thiết kế ứng dụng
42
Chương 4 : PHÂN TÍCH – THIẾT KẾ ỨNG DỤNG
4.1. Khảo sát hiện trạng :
Hiện nay, trên thế giới cũng như tại Việt Nam, các điện thoại di động đang
được sử dụng ngày càng nhiều. Chiếc điện thoại di động tuy nhỏ bé nhưng hết sức
tiện lợi, ngoài chức năng liên lạc, nó còn là một phụ tá không thể thiếu và là một
phương tiện phục vụ cho giải trí rất lý thú. Do đó, điện thoại di động ngày càng
khẳng định được vị trí của nó trong cuộc sống của chúng ta.
Các điện thoại di động hiện nay có thể chạy được rất nhiều phần mềm, phần
lớn các ứng dụng này là trò chơi, chỉ có một số ít là ứng dụng tiện ích như máy tính,
từ điển, chương trình nghe nhạc, xem phim... Thị trường phần mềm trên điện thoại
di động đang dần dần phát triển và ngày càng trở nên hấp dẫn. Tuy nhiên, với ứng
dụng bản đồ điện tử trên điện thoại di động (chạy trên nền Java) thì rất ít. Ứng dụng
bản đồ cụ thể cho mạng giao thông ở Việt Nam nói chung, cho thành phố Hồ Chí
Minh thì hiện chỉ có một vài sản phẩm, nhưng có rất ít chức năng và rất cồng kềnh,
không thể sử dụng được cho các máy có ít bộ nhớ. Do đó, việc xây dựng một ứng
dụng bản đồ điện tử cho các máy điện thoại di động dựa trên nền Java là hết sức cần
thiết. Ứng dụng này sẽ giúp cho người dùng xem bản đồ, tìm đường, tìm các địa
điểm (trường học, khách sạn, bệnh viện…), tìm đường đi giữa hai địa điểm khi cần.
Trong bối cảnh Việt Nam đang hội nhập với thế giới, thành phố Hồ Chí
Minh lại là một trong những vùng kinh tế trọng điểm của cả nước. Việc cho ra đời
một sản phẩm bản đồ trên điện thoại di động như thế sẽ giúp ích rất nhiều cho các
thương gia, du khách trong và ngoài nước cũng như người dân thuận tiện trong việc
đi lại, tham quan tìm hiểu thành phố.
Chương 4 : Phân tích – Thiết kế ứng dụng
43
4.2. Phân tích và xác định yêu cầu :
Dựa trên các yêu cầu về tìm kiếm thông tin của một người trên bản đồ giấy,
nhóm thực hiện đưa ra các yêu cầu của ứng dụng bản đồ điện tử như sau.
4.2.1. Danh sách các yêu cầu nghiệp vụ :
STT Chức năng Ghi chú
1 Hiển thị bản đồ
2 Phóng to, thu nhỏ bản đồ
3 Di chuyển bản đồ
4 Di chuyển nhanh đến một quận trên bản đồ
5 Tìm đường đi theo tên
6 Tìm địa điểm theo tên
7 Tìm đường đi ngắn nhất giữa hai vị trí trên bản đồ
8 Trợ giúp người dùng trong việc sử dụng bản đồ
Bảng 4-1 : Danh sách các yêu cầu nghiệp vụ
4.2.2. Các yêu cầu phi chức năng :
Chương trình phải chạy được trên các máy điện thoại thông thường.
Tốc độ duyệt, tốc độ tìm kiếm chấp nhận được.
Kích thước của chương trình không được quá lớn.
Chương 4 : Phân tích – Thiết kế ứng dụng
44
4.3. Thiết kế ứng dụng :
4.3.1. Lược đồ sử dụng :
Hình 4-1 : Lược đồ sử dụng
Chương 4 : Phân tích – Thiết kế ứng dụng
45
4.3.2. Đặc tả Use Case :
View map :
a. Mô tả :
Người sử dụng muốn hệ thống vẽ lại thông tin của bản đồ.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Use case bắt đầu khi hệ thống được yêu cầu vẽ lại bản đồ.
- Hệ thống xóa thông tin cũ của bản đồ.
- Dịch chuyển tới tọa độ lưu trong máy.
- Hệ thống vẽ thông tin quận, đường và địa điểm nằm trong
vùng bản đồ được nhìn thấy.
- Vẽ con trỏ trên bản đồ.
- Kết thúc Use Case
Dòng sự kiện nhánh :
- Không có.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Không có.
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
46
Zoom map :
a. Mô tả :
Người sử dụng muốn phóng to, thu nhỏ bản đồ.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Use case bắt đầu khi người sử dụng nhấn nút phóng to hay thu
nhỏ.
- Nếu tỉ lệ vẽ hiện nay đã là lớn nhất hay nhỏ nhất thì kết thúc Use
Case.
- Hệ thống thực hiện tăng/giảm tỉ lệ vẽ của bản đồ.
- Hệ thống tính toán lại các thông số dùng để vẽ bản đồ.
- Use case kết thúc.
c. Yêu cầu đặc biệt :
- Không có
d. Điều kiện đầu :
- Không có
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ theo các thông số mới.
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
47
Move map :
a. Mô tả :
Người sử dụng thực hiện di chuyển bản đồ theo các hướng qua trái, qua
phải, lên trên, xuống dưới, lên góc trên bên phải, lên góc trên bên trái, xuống
góc dưới bên phải, xuống góc dưới bên trái.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Use case bắt đầu khi người sử dụng nhấn các phím di chuyển
bản đồ.
- Hệ thống thực hiện tính lại tọa độ bản đồ.
- Hệ thống tính lại tọa độ con trỏ.
- Use case kết thúc.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ theo các thông số mới.
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
48
Move cursor :
a. Mô tả :
Người sử dụng thực hiện di chuyển con trỏ theo các hướng qua trái, qua
phải, lên trên, xuống dưới.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Use case bắt đầu khi người sử dụng nhấn các phím di chuyển
con trỏ.
- Nếu con trỏ đã chạm biên màn hình thì kết thúc Use Case.
- Hệ thống thực hiện tính lại tọa độ con trỏ.
- Use case kết thúc.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ theo các thông số mới.
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
49
Move to district :
a. Mô tả :
Người sử dụng thực hiện di chuyển nhanh đến một quận nào đó
trong thành phố.
b. Dòng sự kiện :
Dòng sự kiện chính.
- Hệ thống hiển thị danh sách tên tất cả các quận trong thành
phố.
- Nếu người sử dụng gõ tên quận để tìm thì thực hiện luồng
nhánh A1.
- Nếu người sử dụng không muốn tìm nữa thì thực hiện luồng
nhánh A2.
- Người sử dụng chọn quận cần đến từ danh sách.
- Hệ thống cập nhật lại tọa độ bản đồ theo tọa độ của quận cần
đến
- Tắt màn hình tìm kiếm quận.
- Use Case kết thúc.
Dòng sự kiện nhánh A1: Người sử dụng gõ tên quận để tìm.
- Người sử dụng nhập tên quận cần di chuyển.
- Hệ thống tìm kiếm và cập nhật lại danh sách tên các quận theo
thông tin người sử dụng đã nhập.
Dòng sự kiện nhánh A2: Người sử dụng trở về màn hình trước mà
không tìm quận.
- Hệ thống tắt màn hình tìm kiếm quận.
- Use Case kết thúc.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
50
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ theo tọa độ mới .
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
51
Search place :
a. Mô tả :
Người sử dụng muốn tìm kiếm một địa điểm nào đó trong thành phố.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Hệ thống hiển thị danh sách các loại địa điểm trong thành phố.
- Nếu người sử dụng không muốn tìm nữa thì thực hiện luồng
nhánh A1.
- Người sử dụng chọn loại địa điểm cần tìm từ danh sách.
- Hệ thống hiển thị danh sách các địa điểm thuộc loại này.
- Nếu người dùng không muốn tìm các địa điểm thuộc loại này
thì thực hiện dòng sự kiện nhánh A2.
- Nếu người sử dụng gõ tên địa điểm để tìm thì thực hiện luồng
nhánh A3.
- Người sử dụng chọn địa điểm cần đến từ danh sách.
- Hệ thống cập nhật lại tọa độ bản đồ theo tọa độ của địa điểm
cần đến
- Tắt màn hình tìm kiếm địa điểm.
- Use Case kết thúc
Dòng sự kiện nhánh A1 : người sử dụng không muốn tìm kiếm nữa
- Tắt màn hình danh sách các loại địa điểm.
- Kết thúc Use Case.
Dòng sự kiện nhánh A2 : người sử dụng muốn quay trở lại màn hình
danh sách các loại địa điểm
- Tắt màn hình danh sách các địa điểm.
- Hiển thị màn hình danh sách các loại địa điểm
Dòng sự kiện nhánh A3 : người sử dụng gõ tên địa điểm để tìm kiếm
- Người sử dụng nhập tên địa điểm cần di chuyển.
Chương 4 : Phân tích – Thiết kế ứng dụng
52
- Hệ thống tìm kiếm và cập nhật lại danh sách tên các địa điểm
theo thông tin người sử dụng đã nhập.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ theo tọa độ mới .
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
53
Search street base on name :
a. Mô tả :
Người sử dụng muốn tìm kiếm một con đường trong thành phố.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Hệ thống hiển thị danh sách tên 10 con đường đầu tiên trong
thành phố.
- Nếu người sử dụng không muốn tìm nữa thì thực hiện luồng
nhánh A1.
- Nếu người sử dụng nhập tên đường để tìm thì thực hiện luồng
nhánh A2.
- Nếu người sử dụng muốn xem 10 con đường tiếp theo thì thực
hiện luồng nhánh A3.
- Nếu người sử dụng muốn xem 10 con đường trước đó thì thực
hiện luồng nhánh A4.
- Người sử dụng chọn đường cần đến từ danh sách.
- Hệ thống cập nhật lại tọa độ bản đồ theo tọa độ của đường cần
đến
- Tắt màn hình tìm kiếm đường.
- Use Case kết thúc.
Dòng sự kiện nhánh A1 : Người sử dụng không muốn tìm nữa
- Hệ thống tắt màn hình tìm kiếm đường.
- Use Case kết thúc.
Dòng sự kiện nhánh A2 : Người sử dụng nhập tên đường để tìm
- Người sử dụng nhập tên đường cần tìm.
- Hệ thống tìm kiếm và cập nhật lại danh sách tên các con
đường theo thông tin người sử dụng đã nhập.
Dòng sự kiện nhánh A3 : Người sử dụng muốn xem 10 con đường tiếp
theo
Chương 4 : Phân tích – Thiết kế ứng dụng
54
- Hệ thống hiển thị danh sách 10 con đường tiếp theo nếu có.
Dòng sự kiện nhánh A4 : Người sử dụng muốn xem 10 con đường
trước đó
- Hệ thống hiển thị danh sách 10 con đường trước đó nếu có.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ theo tọa độ mới .
f. Điểm mở rộng :
- Không có
Chương 4 : Phân tích – Thiết kế ứng dụng
55
Search shortest way :
a. Mô tả :
Người sử dụng tìm kiếm đường đi ngắn nhất giữa hai điểm trong
thành phố.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Người sử dụng xác định điểm khởi hành.
- Người sử dụng xác định điểm cần đến.
- Người sử dụng chọn chức năng tìm đường đi ngắn nhất.
- Hệ thống thực hiện tìm kiếm đường đi ngắn nhất giữa hai
điểm, nếu chưa chọn địa điểm khởi hành hay địa điểm đến thì
thực hiện dòng sự kiện lỗi E1.
- Hệ thống hiển thị chỉ dẫn đường đi cho người sử dụng.
- Hệ thống vẽ đường đi trên bản đồ.
- Use Case kết thúc.
Dòng sự kiện phụ E1 : Người sử dụng chọn chức năng tìm đường đi
mà chưa chọn điểm khởi hành hay điểm đến.
- Hệ thống thông báo lỗi cho người sử dụng.
- Use Case kết thúc.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ.
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
56
Help :
a. Mô tả :
Người sử dụng muốn xem thông tin hướng dẫn sử dụng hệ thống.
b. Dòng sự kiện :
Dòng sự kiện chính :
- Người sử dụng chọn chức năng hướng dẫn sử dụng.
- Hệ thống hiển thị danh sách các chức năng của phần mềm.
- Người sử dụng chọn chức năng của hệ thống cần hướng dẫn.
- Hệ thống hiển thị thông tin hướng dẫn sử dụng của chức năng
đã chọn.
- Use Case kết thúc.
c. Yêu cầu đặc biệt :
- Không có.
d. Điều kiện đầu :
- Không có.
e. Điều kiện sau :
- Hệ thống vẽ lại bản đồ.
f. Điểm mở rộng :
- Không có.
Chương 4 : Phân tích – Thiết kế ứng dụng
57
4.3.3. Sơ đồ lớp mức phân tích :
IndexListFindObjectForm
MessageBox
MainMIDlet
Districts
Places
Streets
MainCanvas
Hình 4-2 : Sơ đồ lớp mức phân tích
Chương 4 : Phân tích – Thiết kế ứng dụng
58
Mô tả các lớp :
a. Lớp MainMIDlet :
MainMIDlet
Canvas
//MainMIDlet()
//startApp()
//pauseApp()
//destroyApp()
//qui tApp()
//commandAction()
Hình 4-3 : Mô tả lớp MainMIDlet
STT Thuộc tính Ý nghĩa
1. Canvas Màn hình hiển thị bản đồ
Bảng 4-2 : Phân tích các thuộc tính lớp MainMIDlet
STT Phương thức Ý nghĩa
1. //MainMIDlet Hàm khởi tạo MIDlet
2. //startApp Phương thức mặc định được gọi khi chạy ứng dụng
3. //pauseApp Phương thức mặc định được gọi khi tạm dừng ứng
dụng
4. //destroyApp Phương thức mặc định được gọi khi thoát ứng dụng
5. //quitApp Phương thức mặc định được gọi khi thoát ứng dụng
6. //commandAction Phương thức xử lý sự kiện trong chương trình
Bảng 4-3 : Phân tích các phương thức lớp MainMIDlet
Chương 4 : Phân tích – Thiết kế ứng dụng
59
b. Lớp MainCanvas :
MainCanvas
districts : Districts
places : Places
streets : Streets
//MainCanvas()
//keyPressed()
//keyReleased()
//keyAction()
//paint()
//destroy()
//move()
//find shortest path()
Hình 4-4 : Mô tả lớp MainCanvas
STT Thuộc tính Ý nghĩa
1. districts đối tượng lưu trữ, xử lý về quận
2. places đối tượng lưu trữ, xử lý về các địa điểm
3. streets đối tượng lưu trữ, xử lý về đường đi
Bảng 4-4 : Phân tích các thuộc tính lớp MainCanvas
STT Phương thức Ý nghĩa
1. //MainCanvas Hàm khởi tạo MainCanvas
2. //keyPressed Phương thức xứ lý sự kiện nhấn phím
3. //keyReleased Phương thức xứ lý sự kiện buông phím
4. //keyAction Phương thức xử lý các phím được nhấn
5. //paint Phương thức vẽ, thể hiện bản đồ lên màn hình
6. //destroy Phương thức hủy, giải phóng tài nguyên mà lớp có sử
dụng
Bảng 4-5 : Phân tích các phương thức lớp MainCanvas
Chương 4 : Phân tích – Thiết kế ứng dụng
60
c. Lớp FindObjectForm :
FindObjectForm
//FindObjectForm()
// itemStateChanged()
//destroy ()
Hình 4-5 : Mô tả lớp FindObjectForm
STT Phương thức Ý nghĩa
1. //FindObjectForm Hàm khởi tạo lớp FindObjectForm
2. //itemStateChanged Phương thức xử lý sự kiện chọn một đối tượng trên
màn hình
3. //destroy Phương thức hủy, giải phóng tài nguyên
Bảng 4-6 : Phân tích các phương thức lớp FindObjectForm
d. Lớp MessageBox :
MessageBox
//MessageBox()
//Show()
//commandAction()
Hình 4-6 : Mô tả lớp MessageBox
STT Phương thức Ý nghĩa
1. //MessageBox Hàm khởi tạo của lớp MessageBox
2. //Show Phương thức thể hiện MessageBox
3. //commandAction Phương thức xử lý sự kiện của lớp MessageBox
Bảng 4-7 : Phân tích các phương thức lớp MessageBox
Chương 4 : Phân tích – Thiết kế ứng dụng
61
e. Lớp IndexList :
IndexList
//IndexList()
//commandAction()
Hình 4-7 : Mô tả lớp IndexList
STT Phương thức Ý nghĩa
1. //IndexList Hàm khởi tạo IndexList
2. //commandAction Phương thức xử lý sự kiện của lớp IndexList
Bảng 4-8 : Phân tích các phương thức lớp IndexList
f. Lớp Districts :
Districts
//Districts()
//drawDistrict()
//drawDistrictNames()
//destroy()
Hình 4-8 : Mô tả lớp Districts
STT Phương thức Ý nghĩa
1. //Districts Hàm khởi tạo, đọc dữ liệu quận vào bộ nhớ
2. //drawDistrict Phương thức vẽ ranh giới quận
3. //drawDistrictNames Phương thức tên quận
4. //destroy Phương thức hủy, giải phóng tài nguyên
Bảng 4-9 : Phân tích các phương thức lớp Districts
Chương 4 : Phân tích – Thiết kế ứng dụng
62
g. Lớp Places :
Places
//Places()
//drawPlaces()
//destroy ()
Hình 4-9 : Mô tả lớp Places
STT Phương thức Ý nghĩa
1. //Places Hàm khởi tạo, đọc dữ liệu quận vào bộ nhớ
2. //drawPlaces Phương thức vẽ địa điểm
3. //destroy Phương thức hủy, giải phóng tài nguyên
Bảng 4-10 : Phân tích các phương thức lớp Places
Chương 4 : Phân tích – Thiết kế ứng dụng
63
h. Lớp Streets :
Streets
//Streets()
//drawStreets()
//drawNodes()
//drawArc()
//drawStreetName()
//drawGuidingPath()
//findShortestPath()
//destroy()
//getFoundPathString()
Hình 4-10 : Mô tả lớp Streets
STT Phương thức Ý nghĩa
1. //Streets Hàm khởi tạo, đọc dữ liệu đường vào bộ nhớ
2. //drawStreets Phương thức vẽ đường
3. //drawNodes Phương thức vẽ nút bắt đầu,kết thúc của đoạn đường
cần tìm
4. //drawArc Phương thức vẽ 1 cung của đường
5. //drawStree
Các file đính kèm theo tài liệu này:
- Xay dung ban do tren dtdd co ho tro java.pdf