Luận văn Xây dựng bản đồ trên điện thoại di động có hỗ trợ Java

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

pdf164 trang | Chia sẻ: netpro | Lượt xem: 1894 | Lượt tải: 5download
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:

  • pdfXay dung ban do tren dtdd co ho tro java.pdf
Tài liệu liên quan