1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động

145 1,3K 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 145
Dung lượng 2,6 MB

Nội dung

Tài liệu tham khảo công nghệ thông tin Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM

CAO THÁI PHƯƠNG THANH - 0112031

NGHIÊN CỨU VÀ XÂY DỰNG ỨNG DỤNG TỪ ĐIỂN

TRÊN ĐIỆN THOẠI DI ĐỘNG

KHÓA LUẬN CỬ NHÂN TIN HỌC

GIÁO VIÊN HƯỚNG DẪN Th.S NGUYỄN TẤN TRẦN MINH KHANG Th.S TRẦN MINH TRIẾT

NIÊN KHÓA 2001 - 2005

Trang 2

LỜI CÁM ƠN

Chúng em xin chân thành cảm ơn Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Tp Hồ Chí Minh đã tạo điều kiện thuận lợi cho chúng em học tập và thực hiện đề tài tốt nghiệp này

Chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Nguyễn Tấn Trần Minh Khang, thầy Trần Minh Triết đã tận tình hướng dẫn, chỉ bảo chúng em trong quá trình thực hiện đề tài

Chúng em xin chân thành cám ơn quý Thầy Cô trong Khoa Công nghệ Thông tin đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm học vừa qua

Chúng con xin chân thành cảm ơn Ông Bà, Cha Mẹ đã luôn động viên, ủng hộ vật chất lẫn tinh thần trong suốt thời gian qua

Chúng em xin cảm ơn sự quan tâm, giúp đỡ và ủng hộ của anh chị, bạn bè trong quá trình thực hiện khóa luận

Mặc dù đã cố gắng hoàn thành khóa luận trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Chúng em rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý Thầy Cô và các bạn

Tp Hồ Chí Minh, tháng 07 năm 2005 Nhóm sinh viên thực hiện

Bùi Tấn Lộc – Cao Thái Phương Thanh

Trang 3

Lời nói đầu

Công nghệ thông tin đang trở thành một phần quan trọng của cuộc sống Các thiết bị kĩ thuật cao ngày càng gần gũi với mọi hoạt động của con người Đặc biệt những năm gần đây, các thiết bị không dây - với ưu thế nhỏ gọn, dễ mang chuyển – đã chứng tỏ được lợi ích to lớn cho người sử dụng Trong đó điện thoại di động, với các chức năng liên lạc, nổi bật lên như một thiết bị “không thể thiếu” trong cuộc sống của nhiều người Với sự phát triển nhanh chóng của công nghệ sản xuất thiết bị không dây, điện thoại di động đã trở thành phương tiện đa chức năng (nghe nhạc, chơi trò chơi, nhắc lịch làm việc…) phục vụ cho nhu cầu của người sử dụng mọi lúc, mọi nơi

Hệ điều hành Symbian là một hệ điều hành được thiết kế riêng để hoạt động tối ưu trên các thiết bị di động vốn hạn chế về tài nguyên Trên môi trường Symbian có thể xây dựng hàng loạt ứng dụng tương tự máy tính cá nhân như: trình nghe nhạc MP3, trình xem phim AVI, ứng dụng văn phòng (hỗ trợ tập tin MS Word, MS Excel…), các trò chơi 3D… Vì vậy sự ra đời của dòng điện thoại thông minh sử dụng hệ điều hành Symbian với kiểu dáng tương đối nhỏ gọn, thiết kế đẹp mắt và những ứng dụng hữu ích đã tạo ra một bước ngoặt mới trong thị trường điện thoại di động Đồng thời mở ra một hướng phát triển mới đầy hứa hẹn cho các công ty phần mềm

Bên cạnh đó, trong cuộc sống hiện nay, nhu cầu học tập, trao đổi kiến thức, cũng như làm việc bằng ngoại ngữ là hết sức cần thiết Sẽ rất tiện lợi nếu có một bộ từ điển đa ngôn ngữ với đầy đủ chức năng, ngữ nghĩa nhưng nhỏ gọn, dễ mang chuyển

Vì những lý do trên, nhóm chúng em quyết tâm thực hiện đề tài “Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động”

Trang 4

MỤC LỤC

Chương 1 Mở đầu 9

1.1 Nhu cầu thực tế và lý do thực hiện đề tài 9

1.2 Mục tiêu của đề tài 10

1.3 Nội dung khóa luận 11

Chương 2 Tổng quan về hệ điều hành Symbian và điện thoại thông minh Series 60 12

2.1 Giới thiệu hệ điều hành Symbian 12

2.1.1 Công ty Symbian và hệ điều hành Symbian 12

2.1.2 Các mô hình thiết bị sử dụng hệ điều hành Symbian 14

2.1.3 Các thành phần phần cứng chính trong điện thoại Symbian 15

2.2 Điện thoại thông minh Symbian Series 60 17

2.2.1 Giới thiệu 17

2.2.2 Các tiêu chuẩn phần cứng của sản phẩm Series 60 18

Chương 3 Môi trường lập trình và vấn đề chính khi xây dựng ứng dụng từ điển trên Series 60 19

3.1 Phát triển ứng dụng trên điện thoại Series 60 19

3.1.1 Series 60 Developer Platform 19

3.1.2 Các ngôn ngữ lập trình trên Series 60 Developer Platform 21

3.2 Series 60 Application Framework 23

3.2.1 Series 60 Application Structure 23

3.2.2 Các loại ứng dụng trên điện thoại Series 60 24

3.3 Vấn đề chính khi xây dựng ứng dụng từ điển trên Series 60 25

3.3.1 Một số hạn chế phần cứng của điện thoại di động Series 60 26

3.3.2 Các yêu cầu cơ bản của một ứng dụng từ điển 26

Trang 5

6.1 Font chữ tiếng Việt 64

6.2 Bàn phím máy điện thoại 66

6.3 Các control của hệ điều hành Symbian 68

6.3.1 Mô hình MVC 68

6.3.2 Phân loại controls trong Symbian 69

6.3.3 Sử dụng control 70

6.3.4 Control observers 73

6.4 Kỹ thuật tra cứu tự nhiên 73

6.4.1 Sắp xếp các mục từ tăng dần theo thứ tự bảng chữ cái Việt Nam 73

6.4.2 Tối ưu số lượng các mục từ được nạp 76

6.4.3 Tùy biến cách thức tra cứu của người sử dụng 76

6.5 Kỹ thuật phát âm 77

6.5.1 Những giới hạn khi xây dựng thư viện phát âm 77

6.5.2 Text To Speech Offline 79

6.5.3 Text To Speech Online 79

Chương 7 Phân tích thiết kế ứng dụng từ điển 81

Trang 6

8.5.1 Danh sách các màn hình giao diện 109

8.5.2 Mô tả các màn hình giao diện 110

Chương 9 Cài đặt và thử nghiệm 112

9.1 Môi trường phát triển 112

9.2 Mô hình cài đặt 113

9.3 Hướng dẫn sử dụng 114

9.3.1 Yêu cầu phần cứng 114

9.3.2 Cài đặt 114

9.3.3 Hướng dẫn sử dụng chương trình Mobile Dictionary 115

9.3.4 Hướng dẫn sử dụng chương trình Dictionary Manager 117

9.4 Thử nghiệm 121

9.4.1 Kết quả thử nghiệm hoạt động của ứng dụng 121

9.4.2 So sánh với các từ điển hiện có trên thị trường 121

Chương 10 Tổng kết 123

10.1 Một số kết quả đạt được 123

10.2 Hướng phát triển 124

Phụ lục ASDKs và ứng dụng HelloWorld 125

A.1 SDKs (Software Development Kits) 125

A.2 Hướng dẫn cài đặt SDKs cho Series 60 (Một và nhiều SDK) 126

A.3 Biên dịch và cài đặt ví dụ HelloWorld 127

Phụ lục BKhái niệm cơ bản khi lập trình C++ trên hệ điều hành Symbian132B.1 Các qui ước đặt tên 132

B.2 Kiểu dữ liệu cơ bản 135

Phụ lục CChuẩn nén Dictzip# 137

Phụ lục DCác bộ dữ liệu của từ điển 139

Tài liệu tham khảo 141

Trang 7

DANH MỤC CÁC HÌNH

Hình 1.1 Nhu cầu từ điển di động 10

Hình 2.1 Các cổ đông của công ty Symbian 12

Hình 2.2 Các nhà sản xuất có giấy phép sử dụng hệ điều hành Symbian 13

Hình 2.3 Communicator áp dụng mô hình Crystal 14

Hình 2.4Communicator áp dụng mô hình Quartz 15

Hình 2.5 Smartphone áp dụng mô hình Pearl 15

Hình 2.6 Điện thoại thông minh Symbian Series 60 17

Hình 2.7 Màn hình điện thoại Series 60 18

Hình 2.8 Bàn phím điện thoại Series 60 18

Hình 3.1 Application Structure 23

Hình 3.2 Một ứng dụng dialog base 24

Hình 3.3 Một ứng dụng controls 25

Hình 3.4 Một ứng dụng Application / View architecture 25

Hình 4.1 Chuỗi không thể thay đổi 39

Hình 4.2 Chuỗi có thể thay dổi 39

Hình 4.3Chuỗi cấp phát trên heap 40

Hình 4.4 Con trỏ chuỗi không thể thay đổi 40

Hình 4.5 Con trỏ chuỗi có thể thay đổi 40

Hình 4.6 Cây kế thừa các lớp descriptor 41

Hình 4.7 Sức chứa và độ phân hạt của mảng 43

Hình 5.1 Ý tưởng cấu trúc lưu trữ chuẩn Dictzip 54

Hình 5.2 Ý tưởng cấu trúc lưu trữ chuẩn Dictzip# 55

Hình 5.3 Tổ chức tập tin nghĩa 58

Trang 8

Hình 5.4 Cấu trúc mẫu tin chỉ mục 59

Hình 5.5 Các giá trị cần thiết để phân tích mục từ 60

Hình 6.1 Tiếng Việt không hiển thị tốt 64

Hình 6.2 Bàn phím điện thoại Series 60 66

Hình 6.3 Mẫu thiết kế MVC 68

Hình 6.4 Control 69

Hình 6.5 Minh họa cách sử dụng biên dưới 75

Hình 6.6 Minh họa sử dụng biên trên 76

Hình 6.7 Nạp từ vào listbox 77

Hình 7.1 Use-Case diagram 81

Hình 7.2 Class diagram 87

Hình 7.3 Sơ đồ tuần tự Khởi động ứng dụng 1 90

Hình 7.4 Sơ đồ tuần tự Khởi động ứng dụng 2 91

Hình 7.5 Sơ đồ tuần tự Chọn từ điển mới 92

Hình 7.6 Sơ đồ tuần tự Tìm kiếm từ 1 93

Hình 7.7 Sơ đồ tuần tự Tìm kiếm từ 2 93

Hình 7.8 Sơ đồ tuần tự Hiển thị nghĩa từ 94

Hình 7.9 Sequence diagram Xem nghĩa từ khác trong màn hình nghĩa 1 95

Hình 7.10 Sequence diagram Xem nghĩa từ khác trong màn hình nghĩa 2 95

Hình 7.11 Sequence diagram Nghe phát âm từ 1 96

Hình 7.12 Sơ đồ tuần tự Nghe phát âm từ 2 97

Hình 8.1 Mô hình Use-Case Dictionary Manager 100

Hình 8.2 Sơ đồ các lớp đối tượng 106

Hình 8.3 Sơ đồ tuần tự cho xư lý Import 107

Hình 8.4 Sơ đồ tuần tự cho xử lý Export 108

Hình 8.5 Sơ đồ tuần tự cho xử lý LoadDictionary 108

Hình 8.6 Sơ đồ tuần tự cho xử lý UpdateWord 109

Trang 9

Hình 8.7 Màn hình chính của ứng dụng Dictionary Manager 110

Hình 8.8 Màn hình biên sọan từ 111

Hình 9.1 Mô hình cài đặt đề tài 113

Hình 9.2 Cài đặt thành công Mobile_Dict 115

Hình 9.3 Cài đặt thành công Dữ liệu 115

Hình 9.4 Tra từ và gõ tiếng Việt 115

Hình A 1 Cửa sổ HelloWorldBasic project 127

Hình A 2 Build Solution HelloworldBasic 128

Hình A 3 Trình giả lập SDK 2nd Edition, FP2 128

Hình A 4 HelloWorld trên máy giả lập 129

Hình A 5 Release build 130

Trang 10

DANH MỤC CÁC BẢNG

Bảng 5.1 Bảng mô tả các trường dữ liệu 49

Bảng 5.2 Tổ chức từ điển với cáctừ gốc có kích thước bằng nhau 50

Bảng 5.3 Tổ chức từ điển với cáctừ gốc có kích thước không bằng nhau 51

Bảng 5.4 So sánh tỉ lệ nén giữa DictZip và Dictzip# 56

Bảng 5.5 Kích thước tập tin sau khi dùng Dictzip# nén 56

Bảng 5.6 Tốc độ truy xuất từ điển Anh-Việt khi sử dụng Dictzip# 56

Bảng 5.7 Tốc độ truy xuất từ điển Anh-Việt khi sử dụng Dictzip# 57

Bảng 5.8 Các trường dữ liệu trong mẫu tin chỉ mục 59

Bảng 5.9 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 1 61

Bảng 5.10 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 2 62

Bảng 5.11 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 3 62

Bảng 5.12 Bảng thống kê sự phân bố các cụm trong bảng băm cấp 4 63

Bảng 6.1 Tập các ký tự có dấu tiếng Việt 74

Bảng 6.2 Biên trên và biên dưới của ký tự có dấu tiếng Việt 75

Bảng 6.3 Kích thước của bộ thư viện Offline 79

Trang 11

Bảng 9.2 Danh sách điện thoại tương thích 114

Bảng 9.3 Kết quả thử nghiệm trên máy ảo 121

Bảng 9.4 Kết quả thử nghiệm trên máy thật 121

Bảng 9.5 So sánh với TMADict 122

Bảng B 1 Qui ước đặt tên lớp 132

Bảng B 2 Qui ước đặt tên biến 133

Bảng B 3 Qui ước đặt tên hàm 134

Bảng B 4 Kiểu số nguyên 135

Bảng B 5 Kiểu số thực 135

Bảng B 6 Các kiểu cơ bản khác 136

Trang 12

Chương 1 Mở đầu

1.1 Nhu cầu thực tế và lý do thực hiện đề tài

Trong cuộc sống, nhu cầu thông tin liên lạc là hết sức cần thiết Vô số phương pháp liên lạc đã ra đời nhằm phục vụ nhu cầu này từ thư tín, điện thoại bàn đến thư điện tử, điện thoại di động, kết nối Wi-fi, chat Web_Camera Trong đó, điện thoại di động nổi bật lên như một phương tiện liên lạc hữu ích nhất, tiện lợi nhất, đặc biệt đối với những người sống và làm việc trong các đô thị Nhờ chức năng đàm thoại trực tiếp mọi lúc mọi nơi, mà điện thoại di động ngày càng được sử dụng rộng rãi Hiện nay trên thế giới, điện thoại di động phát triển không ngừng Hàng loạt điện thoại với các tính năng, ứng dụng hiện đại được tung ra thị trường Có thể nói điện thoại di động là thiết bị điện tử phát triển nhanh chóng nhất cả về công nghệ lẫn tính năng, ứng dụng Riêng ở Việt Nam, thị trường điện thoại di động đã và đang phát triển mạnh mẽ với số lượng người sử dụng đông đảo, hơn hẳn các thiết bị di động cá nhân khác như Pocket PC, máy nghe nhạc…

Bên cạnh đó, nhu cầu về một từ điển ngôn ngữ phục vụ công việc, học tập, giao tiếp… là luôn luôn cần thiết Tuy nhiên không phải lúc nào chúng ta cũng có mặt ở nhà để tra từ điển; và khi đi công tác, đi học, du lịch… mang theo một quyển từ điển dày cộm hoặc máy tính xách tay có nhiều bất tiện Vì vậy, một ứng dụng từ điển trên điện thoại di động cho phép tra cứu “mọi lúc mọi nơi” luôn được người dùng chờ đợi và ủng hộ Sự ra đời của thế hệ điện thoại thông minh sử dụng hệ điều hành mở (open operation system) Symbian đã cho phép thực hiện điều này Tuy nhiên do điện thoại Symbian mới phát triển trong khoảng hai năm gần đây nên trên thế giới cũng như ở Việt Nam, số lượng ứng dụng từ điển cho điện thoại di động còn ít

Từ những thực tế và lý do trên, chúng em quyết tâm xây dựng một ứng dụng từ điển trên điện thoại di động

Trang 13

1.2 Mục tiêu của đề tài

Như tên gọi, điện thoại di động là thiết bị nhỏ gọn, được thiết kế phục vụ chủ yếu cho nhu cầu liên lạc và giải trí của người dùng khi “di chuyển” Bộ xử lý cũng như khả năng lưu trữ của điện thoại di động kém xa so với máy tính để bàn Ngoài ra việc lập trình ứng dụng trên điện thoại cũng có những khác biệt và khó khăn so với với lập trình trên máy tính

Như vậy, đề tài cần giải quyết các công việc chính như sau:

ƒ Tìm hiểu về điện thoại thông minh, hệ điều hành Symbian và khả năng lập trình trên môi trường này

ƒ Đi sâu tìm hiểu cách thức lập trình trên điện thoại thông minh Symbian Series 60 – dòng điện thoại di động Symbian được ưa chuộng và sử dụng rỗng rãi nhất hiện nay

ƒ Nghiên cứu, xây dựng cấu trúc dữ liệu từ điển giải quyết được những hạn chế của máy điện thoại về khả năng xử lý và lưu trữ dữ liệu

ƒ Xây dựng hoàn chỉnh ứng dụng từ điển trên điện thoại thông minh Symbian Series 60 với các chức năng tốt nhất có thể Bao gồm cả một ứng dụng cho phép chỉnh sửa dữ liệu trên máy tính

Hình 1.1 Nhu cầu từ điển di động

Trang 14

1.3 Nội dung khóa luận

Nội dung luận văn gồm 10 chương

Chương 1 Mở đầu: trình bày nhu cầu thực tế, lý do thực hiện đề tài và các

Chương 4 Kĩ thuật lập trình C++ trên Symbian: giới thiệu các kĩ thuật lập

trình cơ bản các điểm khác biệt, cần lưu ý khi phát triển ứng dụng bằng C++ trên Symbian

Chương 5 Các giải pháp chính cho việc xây dựng từ điển trên điện thoại di động Series 60: trình bày cách thức xây dựng cấu trúc dữ liệu từ điển sao cho hoạt

động hiệu quả trên điện thoại

Chương 6 Các kĩ thuật xử lý ứng dụng: trình bày những kĩ thuật lập trình

cho ứng dụng từ điển trên điện thoại

Chương 7 Phân tích thiết kế ứng dụng từ điển: trình bày hồ sơ phân tích thiết kế ứng dụng Mobile_Dict

Chương 8 Ứng dụng hỗ trợ quản lý dữ liệu trên Desktop: trình bày hồ sơ

phân tích thiết kế và cách thức hoạt động của ứng dụng DictionaryManager

Chương 9 Cài đặt và thử nghiệm: giới thiệu môi trường phát triển, cài đặt

ứng dụng Hướng dẫn sử dụng và một số kết quả thử nghiệm, so sánh

Chương 10 Tổng kết: trình bày những kết quả đạt được và hướng phát triển trong tương lai

Trang 15

Chương 2 Tổng quan về hệ điều hành Symbian và điện thoại thông minh Series 60

2.1 Giới thiệu hệ điều hành Symbian

2.1.1 Công ty Symbian và hệ điều hành Symbian

Symbian là một công ty phần mềm chuyên phát triển và cung cấp một hệ điều hành tiên tiến, mở, chuẩn mực dùng cho thiết bị di động – hệ điều hành Symbian Công ty được thành lập vào tháng 6 năm 1998 đặt trụ sở chính tại Anh Mục tiêu của công ty Symbian là phát triển hệ điều hành Symbian thành hệ điều hành chuẩn được sử dụng rộng rãi cho các hệ thống kỹ thuật số di động trên toàn thế giới Được sự hậu thuẫn của các nhà sản xuất điện thoại di động hàng đầu thế giới, công ty Symbian không ngừng phát triển:

Hình 2.1 Các cổ đông của công ty Symbian

Ban đầu công ty Psion xây dựng EPOC platform dùng để điều khiển các thiết bị nhỏ, đạt được một số kết quả nhất định Sau đó, các công ty điện thoại di động hàng đầu (Nokia, Siemens…) mua lại Psion, thành lập công ty Symbian và tiếp tục phát triển EPOC với tên gọi hệ điều hành Symbianan Ngày nay, hệ điều hành Symbian

Trang 16

là hệ điều hành được sử dụng rộng rãi trên các thiết bị di động Nhờ cam kết cung cấp một chuẩn mở và hỗ trợ những người sử dụng thiết bị di động mà Symbian trở thành sự lựa chọn hàng đầu trong ngành công nghiệp về thiết bị di động hiện nay Hệ điều hành Symbian là một chuẩn mở nên bất cứ nhà sản xuất nào cũng có thể được cấp bản quyền sử dụng trên thiết bị của mình

Hình 2.2 Các nhà sản xuất có giấy phép sử dụng hệ điều hành Symbian

Hiện nay, Symbian thiết lập sự thống trị trên thị trường thiết bị di động thông minh Với 10,7 triệu thiết bị đã được bán ra chiếm 61,4% thị phần (Theo báo EChip, số 207 ra ngày 06/05/2005)

Trang 17

2.1.2 Các mô hình thiết bị sử dụng hệ điều hành Symbian

Hệ điều hành Symbian được thiết kế cho hai loại thiết bị di dộng chiến lược là Communicator và Smartphone Communicator là các máy PDA với khả năng liên lạc vô tuyến của thiết bị di động Trong khi Smartphone là điện thoại di động với các tính năng PDA bổ sung Với hai loại thiết bị này, Symbian công bố một số mô hình thiết kế tham khảo cho các nhà sản xuất Hiện nay, tất cả các thiết bị di động thông minh trên thị trường đều có thể xác định dùng một trong ba mô hình sau:

Mô hình Crystal:

Mô hình Crystal định nghĩa một loại Communicator bỏ túi với hình dáng của một máy laptop Crystal sử dụng màn hình màu theo chuẩn ½ VGA và một bàn phí QWERTY, có thể hỗ trợ màn hình cảm ứng để nhập liệu với bút stylus Ngoài ra Crystal còn có bốn phím đặc biệt được đặt dọc theo phía phải bên ngoài màn hình, được thiết kế để sử dụng bằng hai tay hoặc đặt trên bàn

Các sản phẩm áp dụng mô hình Crystal trên thị trường: Nokia 9210i, Nokia 9300…

Hình 2.3 Communicator áp dụng mô hình Crystal Mô hình Quartz

Mô hình Quartz định nghĩa một loại Communicator với hình dáng của một máy Pocket PC Quartz sử dụng màn hình màu theo chuẩn ¼ VGA, là một thiết bị di động dùng bút stylus nhập liệu qua tương tác với một màn hình cảm ứng Vì vậy, không hề có một bàn phím vật lý nào trong mô hình Quartz, việc nhập liệu thông qua nhận chữ dạng viết tay hoặc một bàn phím ảo.Quartz cũng được thiết kế để sử dụng cả hai tay

Các sản phẩm áp dụng mô hình Crystal trên thị trường: SonyEcrisson P900, Motorola A920…

Trang 18

Mô hình Pearl

Mô hình Pearl định nghĩa một loại Smartphone với hình dáng kích thước của một điện thoại di động thông thường Pearl hỗ trợ màn hình màu với nhiều kích thước, tiêu chuẩn khác nhau, sử dụng bàn phím số của điện thoại để nhập liệu

Các sản phẩm áp dụng mô hình Pearl trên thị trường: Nokia N-Gage QD, Siemens SX1, Nokia 7610, Xendo X…

Hình 2.4Communicator áp dụng mô hình Quartz Hình 2.5 Smartphone áp dụng mô hình Pearl 2.1.3 Các thành phần phần cứng chính trong điện thoại Symbian

Hệ điều hành Symbian được xây dựng để chạy trên các thiết bị liên lạc không dây gọi chung là điện thoại Symbian Do đó các đặc tính phần cứng của điện thoại có tác động sâu sắc đến hệ điều hành Vì vậy để hiểu rõ Symbian, chúng ta cần tìm hiểu các thành phần quan trọng cấu thành điện thoại Symbian đó là CPU, ROM, RAM, các thiết bị nhập xuất (I/O) và nguồn năng lượng

CPU: hệ điều hành Symbian được thiết kế cho kiến trúc CPU 32 bit, chạy ở tốc độ

thấp hơn so với máy tính trên máy để bàn và server Các thiết bị Symbian hiện tại sử dụng CPU chỉ có tốc độ trên dưới 100MHz Trong tương lai tốc độ CPU có thể được cải thiện hơn

ROM: bộ nhớ chỉ đọc (ROM) chứa hệ điều hành và tất cả các ứng dụng và phần

mềm trung gian (middleware) có sẵn được nhà sản xuất đưa vào khi tạo thiết bị Điều này hoàn toàn khác với trên PC, nơi mà ROM chỉ chứa các phần nạp ban đầu

Trang 19

và BIOS, còn hệ điều hành và ứng dụng lưu trên đĩa cứng Bộ nhớ ROM trên điện thoại Symbian được gán nhãn là ổ đĩa Z Tất cả mọi thứ trong ROM đều có thể truy cập như là file trên ổ đĩa Z Vì vậy các chương trình được chạy trực tiếp trên ROM thay vì nạp vào RAM như trên PC Bộ nhớ ROM thường rất giới hạn, thường là 8MB đến 16MB

RAM: bộ nhớ truy xuất ngẫu nhiên (RAM) được sử dụng bởi các ứng dụng đang

thực thi và nhân hệ thống Một phần RAM được gán là ổ đĩa C dùng để chứa các chương trình, các tập tin hình ảnh, chương trình… gọi là bộ nhớ của điện thoại Vì vậy khi tắt máy, bộ nhớ này không bị xóa Dung lượng RAM trên thiết bị cũng rất hạn chế nên lỗi tràn bộ nhớ hoặc thiếu bộ nhớ là có thể xảy ra, nhất là khi thực thi nhiều ứng dụng cùng một lúc

Các thiết bị nhập xuất (I/O): bao gồm:

ƒ Màn hình có kích thước khác nhau tuỳ theo dòng điện thoại, có thể là màn hình cảm ứng với khả năng tương tác bằng bút stylus

ƒ Một bàn phím: có thể là bàn phím số hay QWERTY

ƒ Một khe cắm thêm thẻ nhớ (memory card): đây là bộ nhớ ngoài của điện thoại Symbian và được gán nhãn ổ đĩa E

ƒ Một cổng tuần tự RS232: để giao tiếp với PC

ƒ Một cổng hồng ngoại và Bluetooth cho các truyền thông vô tuyến giữa điện thoại Symbian và các thiết bị khác như laptop, Palm,…

Nguồn năng lượng: sử dụng pin đặc thù có thể sạc lại thông qua một thiết bị

adapter phù hợp Do nguồn năng lượng hạn hẹp, Symbian được thiết kế đặc biệt để có thể hoạt động tốt khi hết pin đột ngột hoặc khi đang sạc pin

Với các đặc trưng trên, hệ điều hành Symbian phải đáp ứng được các yêu cầu sau: ƒ Hoạt động tốn ít bộ nhớ và năng lượng nhất có thể

ƒ Các ứng dụng có thể hoạt động song song

ƒ Quản lý, cấp phát chặt chẽ bộ nhớ và giải phóng ngay khi không sử dụng nữa

ƒ Sử dụng công nghệ đã được chuẩn hóa, nhằm đảm bảo khả năng tương tác giữa điện thoại với các thiết bị khác (Desktop, Pocket PC…)

ƒ Cung cấp tốt những qui ước, kĩ thuật debug, quản lý lỗi, quản lý bộ nhớ cho lập trình viên khi phát triển ứng dụng

Trang 20

2.2 Điện thoại thông minh Symbian Series 60

2.2.1 Giới thiệu

Điện thoại thông minh Symbian Series 60 – xuất hiện lần đầu vào năm 2002 – trước hết là một điện thoại di động GSM hay CDMA thông thường Tuy nhiên đặc điểm nổi bật của điện thoại Series 60 là các phần mềm ứng dụng Người sử dụng có thể tải về, cài đặt và sử dụng ngay trên điện thoại di động của mình vô số các ứng dụng, tiện ích với những tính năng tuyệt vời như: chương trình nghe nhạc mp3, chương trình xem phim, chương trình xem, chỉnh sửa văn bản, xử lý ảnh… Cũng như các ứng dụng đặc thù cho điện thoại như bảo mật tin nhắn, chặn cuộc gọi…

Hiện nay các sản phẩm Series 60 với mẫu mã đa dạng (phần lớn do Nokia sản xuất) đang phát triển nhanh chóng, dần dần chiếm lĩnh thị trường điện thoại di động

Hình 2.6 Điện thoại thông minh Symbian Series 60

Trang 21

2.2.2 Các tiêu chuẩn phần cứng của sản phẩm Series 60

Màn hình hiển thị:

Độ phân giải tối thiểu 176 * 208 (Rộng 176 và cao 208 điểm ảnh) Các điểm ảnh hình vuông

Số màu hiển thị 4096 trở lên

Hình 2.7 Màn hình điện thoại Series 60

Bàn phím:

Gồm 12 phím (12-key numeric keypad), 2 phím để nghe và kết thúc cuộc gọi (“send” and “end” keys), 2 softkey, 4 phím di chuyển (4-way navigation key), 1 phím OK, 1 phím để vào giao diện ứng dụng (app launch key), 1 phím xóa (clear key) và 1 phím để chuyển qua lại giữa các chế

độ nhập liệu (alpha toggle key) Hình 2.8 Bàn phím điện thoại Series 60

Trang 22

Chương 3 Môi trường lập trình và vấn đề chính khi xây dựng ứng dụng từ điển trên Series 60

Các lập trình viên khi phát triển ứng dụng trên một thiết bị sử dụng hệ điều hành nào đó cần giải quyết hai vấn đề chính:

ƒ Tìm hiểu khả năng lập trình, ngôn ngữ phát triển ứng dụng trên thiết bị, hệ điểu hành đó

ƒ Chọn cấu trúc dữ liệu, thuật toán xử lý, giao diện ứng dụng thích hợp với thiết bị, hệ điều hành

3.1 Phát triển ứng dụng trên điện thoại Series 60

Sau khi quyết định phát triển ứng dụng từ điển trên điện thoại thông minh Symbian Series 60 Vấn đề đầu tiên cần giải quyết là môi trường lập trình và cấu trúc cơ bản của một ứng dụng trong hệ điều hành Symbian

3.1.1 Series 60 Developer Platform

Series60 Platform là một nền tảng phần mềm chạy trên điện thoại thông minh Symbian Series 60 Platform bao gồm hệ thống giao diện người dùng cho phép người sử dụng tìm và sử dụng các tập tin, phần mềm ứng dụng sẵn có (phần mềm in ảnh trực tiếp, phần mềm thu âm…) cũng như các chức năng của điện thoại (tin nhắn, lịch…) Ngoài ra, Series 60 Platform còn cho phép cài đặt bổ sung các ứng dụng khác Có thể nói, Series 60 Platform thực thi ở tầng trên cùng của hệ điều hành Symbian, đảm trách phần giao tiếp giữa người dùng với hệ điều hành

Việc xây dựng ứng dụng cho điện thoại Series 60 có thể thực hiện được do Symbian là một hệ điều hành mở Cũng như Windows, hệ điều hành Symbian cung cấp một tập thư viện hàm lập trình API Đồng thời, nhà sản xuất cũng cung cấp “Series 60 Developer Platform”, nhằm hỗ trợ các lập trình viên phát triển ứng dụng cho điện thoại thông minh trên máy tính

Hiện nay có hai phiên bản Series 60 Developer Platform ứng với hai phiên bản hệ điều hành Symbian trong các điện thoại thông minh đã có trên thị trường:

Trang 23

3.1.1.1 Series 60 Developer Platform 1.0 (Symbian 6.1)

ƒ XHTML browsing: duyệt WAP, lấy dữ liệu từ GPRS ƒ MMS messaging: tin nhắn đa phưong tiện

ƒ Symbian OS 6.1 native APIs: thư viện hàm API của hệ điều hành Symbian 6.1

3.1.1.2 Series 60 Developer Platform 2.0 (Symbian 7.0s)

Với các công nghệ:

ƒ J2ME Java APIs: thư viện lập trình Java cho điện thoại di động bản 2.0 với nhiều cải tiến so với phiên bản MIDP 1.0

o MIDP 2.0 o CLDC 1.0

ƒ Wireless Messaging API (JSR 120): tin nhắn không dây

ƒ Mobile Media API (JSR 135): thư viện hỗ trợ xây dựng các ứng dụng đa phương tiện (ghi âm, chụp ảnh, nghe nhạc, quay phim…) được tích hợp trên máy điện thoại

ƒ Bluetooth API (JSR 82): thư viện hỗ trợ lập trình các ứng dụng sử dụng công nghệ bluetooth để truyền dữ liệu

ƒ XHTML browsing over TCP/IP: trình duyệt WAP, hỗ trợ giao thức phổ biến TCP/IP

ƒ MMS messaging with Synchronized Multimedia Integration Language (SMIL): tin nhắn đa phương tiện với SMIL

Trang 24

ƒ OMA Digital Rights Management (DRM) (forward-lock): công cụ bảo vệ bản quyền ứng dụng trên điện thoại thông minh series 60 ƒ OMA Client Provisioning: cung cấp các ứng dụng

ƒ Symbian OS v7.0s native APIs: thư viện hàm API của hệ điều hành Symbian 7.0s, không thay đổi nhiều so với bản 6.1

3.1.2 Các ngôn ngữ lập trình trên Series 60 Developer Platform

Dựa vào các thông tin trên về Series 60 Developer Platform Dễ dàng nhận thấy có thể phát triển ứng dụng trên điện thoại di động series 60 bằng ngôn ngữ Java (công nghệ J2ME) hoặc bằng ngôn ngữ C++ (sử dụng thư viện hàm API do hệ điều hành Symbian cung cấp)

3.1.2.1 Java

Lập trình bằng ngôn ngữ Java độc lập với phần cứng vì ứng dụng sẽ hoạt động trên một máy ảo Java (Java virtual machine - JVM) Điều này cho phép lập trình viên chỉ cần phát triển ứng dụng mà không quan tâm tới thiết bị cụ thể Trong nền hệ thống series 60, máy ảo Java với ứng dụng của nó (MIDlets) chạy trên môi

trường điều khiển gọi là sandbox; vì vậy không thể sử dụng mọi chức năng của thiết

bị, ví dụ không thể truy cập hệ thống tập tin vốn là một thế mạnh của dòng điện thoại thông minh Tuy nhiên ứng dụng Java vẫn phù hợp với nhiều loại ứng dụng từ trò chơi tới phần mềm tính toán, đặc biệt trong thời điểm ngôn ngữ lập trình Java được sử dụng phổ biến như hiện nay

Hiện nay có nhiều công cụ, mội trường phát triển (IDE) để xây dựng ứng dụng cho điện thoại di động series 60 Xin giới thiệu một số IDE thông dụng: Borland JBuilder X Mobile Edition, Sun ONE Studio v6.0 Mobile Edition for Java Early Access, và Nokia Developer’s Suite for J2ME sử dụng SDK Series 60 MIDP for Symbian OS

3.1.2.2 C++

Series 60 Developer Platform dựa trên hệ điều hành Symbian, bồ sung một số chức năng khác như tin nhắn đa phương tiện, bluetooth… và cụ thể hóa các lớp giao diện cho dòng điện thoại di động series 60 Hệ điều hành Symbian được viết bằng

Trang 25

C++ nên một ứng dụng C++ có thể sử dụng tất cả các tài nguyên, chức năng của thiết bị thông qua các hàm API mà hệ điều hành cung cấp

Khi lập trình C++ cho điện thoại thông minh Symbian series 60, lập trình viên có nhiều lựa chọn IDE: Microsoft Visual C++ 6.0 HAY 7.0, CodeWarrior Wireless Development Kits for Symbian OS và C++Builder X

3.1.2.3 Lựa chọn ngôn ngữ lập trình cho đề tài

Như phần trên đã trình bày, các ứng dụng trên điện thoại di động có thể được viết bằng ngôn ngữ Java hoặc C++ Tuy nhiên, đối với dòng điện thoại thông minh series 60, ứng dụng viết bằng C++ có những ưu điểm vượt trội Có thể liệt kê một số ưu điểm nổi bật:

ƒ Ưu điểm lớn nhất là tận dụng các hàm API do hệ điều hành cung cấp Symbian là 1 hệ điều hành mở với thư viện hàm API rất phong phú liên quan tới tất cả các lĩnh vực trên điện thoại thông minh từ các control hiển thị thông tin đến lập trình đa phương tiện, bluetooth, hồng ngoại…

ƒ Các ứng dụng liên quan tới chức năng thoại như ngăn chặn cuộc gọi ngoài ý muốn, quản lý cuộc gọi, bảo mật tin nhắn SMS… chỉ có thể viết bằng ngôn ngữ C++

ƒ Symbian hỗ trợ nhiều lớp với nhiều mức độ thao tác trên tập tin từ việc tìm kiếm, đổi tên, xóa một hoặc nhiều tập tin cùng một lúc Điều này cho phép viết những ứng dụng quản lý tập tin tương tự như Window Explorer rất quen thuộc và tiện lợi cho người sử dụng điện thoại thông minh Điều này chắc chắn không thực hiện được với mô hình MIDP của Java

ƒ Việc hiển thị thông tin cũng được hỗ trợ tốt với nhiều loại control như label, listbox, textbox, checkbox… cho phép thay đổi nhiều thuộc tính như kích thước, màu sắc, font chữ… Ngoài ra ứng dụng giao diện người dùng viết bằng C++ trên Symbian có thể hoạt động theo mô

Trang 26

hình MultiView, cho phép người dùng chuyển đổi dễ dàng giữa các view với các control độc lập cho từng view

ƒ Ngoài ra một ưu điểm không thể không nhắc đến là lập trình đa phương tiện (muiltimedia) Với sự hỗ trợ của các hàm API, đã có nhiều ứng dụng nghe nhạc mp3, xem phim, xử lý ảnh chụp bằng máy ảnh kĩ thuật số tích hợp trong điện thoại di động… rất hiệu quả như Mp3Player, SmartMovie, ImageMagic…

ƒ Các trò chơi nhất là những game 3D đặc sắc trên điện thoại thông minh cũng được viết bằng C++ …

Như vậy có thể thấy, chính các ứng dụng viết bằng C++ đã tạo nên “bước ngoặt” trong thị trường điện thoại thông minh Symbian Series 60

Chúng em quyết định thực hiện ứng dụng từ điển trên điện thoại di động.cũng chính là nhờ khả năng lập trình C++ trên Symbian này

3.2 Series 60 Application Framework

Đối với các ứng dụng biết bằng C++, Series 60 thêm một tầng giao diện người sử dụng (tầng này còn gọi là Avkon) trên tầng Uikon của hệ điều hành Avkon cung cấp một tập các gói UI và một application framework, chúng được thiết kế đặc biệt cho Series 60

3.2.1 Series 60 Application Structure

Hình 3.1 Application Structure

Trang 27

Bốn application framework class chính là

ƒ Lớp ứng dụng (Application): Lớp ứng dụng định nghĩa các thuộc tính của ứng dụng, tạo ra tài liệu mới cho ứng dụng Trong trường hợp đơn giản nhất nó chỉ bao gồm định danh của ứng dụng UID Lớp này có nhiệm vụ tạo ra một đối tượng startup object Lớp cơ sở của lớp Application là CAknApplication

ƒ Lớp tài liệu (Document): Lớp tài liệu đại diện cho mô hình dữ liệu của ứng dụng Lớp này được sử dụng để lưu trữ peristent state của ứng dụng Nếu là ứng dụng file, các ứng dụng phục vụ chính cho việc tạo các file tài liệu, lớp tài liệu sẽ đảm nhận việc nạp và lưu trữ các file tài liệu cho ứng dụng Với các ứng dụng không phải là ứng dụng file, lớp tài liệu vần tồn tại với mục đích nạp phần giao diện ứng dụng Nói cách khác một ứng dụng phải có một thể nghiệm của lớp tài liệu Lớp cơ bản của lớp tài liệu là CAknDocument

ƒ Lớp giao diện ứng dụng (AppUI): Lớp giao diện ứng dụng chịu trách nhiệm cung cấp sự tương tác giữa người dùng và ứng dụng qua các đối tượng điều khiển như menu, listbox Đồng thời tạo ra các cửa sổ view cho ứng dụng Lớp cơ sở của lớp AppUI là CAknAppUi hoặc CAknViewAppUi

ƒ Lớp hiển thị (View): Lớp hiển thị thực chất là một điều khiển, chịu trách nhiệm hiển thị dữ liệu lên màn hình và cho phép người sử dụng tương tác với nó Một lớp View kế thừa từ CCoeControl hoặc CAknDialog hoặc nếu ứng dụng được thiết kế theo mô hình Application/View Architecture thì lớp mà nó phải kế thừa là CAknView

3.2.2 Các loại ứng dụng trên điện thoại Series 60 Ứng dụng dialog based: trong đó View

chính là một dialog Thuận lợi của ứng dụng loại này là cho phép quản lý sự kiện, trong đó có focusing Thường thường thì những ứng dụng loại này được sử dụng cho những ứng dụng có giao diện đơn giản hiển thị thông tin

Hình 3.2 Một ứng dụng dialog base

Trang 28

Ứng dụng sử dụng các control: đây là

dạng ứng dụng “truyền thống”, sử dụng phối hợp các control trong màn hình giao diện Tất cả các control của Symbian đều kế thừa từ lớp

trừu tượng: CCoeControl

Hình 3.3 Một ứng dụng controls

Ứng dụng Application / View architecture: thuận lợi của thiết kế này là cho

phép ứng dụng truy xuất đến một hay nhiều khung nhìn biểu diễn các thông tin liên quan với nhau Khi sử dụng ứng dụng loại này thì lớp AppUi phải được kế thừa từ lớp CAknViewAppUi và các lớp View phải được

kế thừa từ lớp CAknView

Hình 3.4 Một ứng dụng Application / View architecture

Ngoài ra, lập trình viên có thể phối hợp các mô hình giao diện trên khi xây dựng ứng dụng Ví dụ một dạng thiết kế được sử dụng rộng rãi là ứng dụng multiviews, trong đó mỗi view chứa các control phối hợp

3.3 Vấn đề chính khi xây dựng ứng dụng từ điển trên Series 60

Vấn đề chính khi xây dựng ứng dụng từ điển trên Series 60 là vấn dề chọn cấu trúc dữ liệu, thuật toán xử lý, giao diện ứng dụng thích hợp với thiết bị, hệ điều hành Tiêu chuẩn chọn phải đảm bảo ứng dụng đáp ứng được những yêu cầu cơ bản đối với một ứng dụng từ điển mà vẫn thỏa mãn những hạn chế phần cứng của điện thoại di động Serries 60 Ta sẽ lần lượt làm rõ: những hạn chế về phần cứng của điện thoại di động Series 60 và các yêu cầu cơ bản đối với một ứng dụng từ điển Điều này sẽ giúp chúng ta đưa ra các giải pháp phù hợp

Trang 29

3.3.1 Một số hạn chế phần cứng của điện thoại di động Series 60

3.3.1.1 Hạn chế về bộ vi xử lý

Giống như các thiết bị máy tính khác, thiết bị điện thoại di động Series 60 cũng có một bộ vi xử lý Các điện thoại di động Series 60 hiện tại sử dụng các bộ vi xử lý ARM-9 Khác với bộ vi xử lý của máy tính để bàn, bộ vi xử lý ARM-9 được thiết kế với kiến trúc 32 bit, chạy ở tốc độ thấp hơn so với máy tính để bàn Các bộ vi xử lý ARM-9 có tốc độ khác nhau tùy vào mục đích thiết kế và mục đích thương mại Tuy nhiên tốc độ trung bình của các bộ vi xử lý ARM-9 hiện nay là lớn hơn 100 MHz

3.3.1.2 Hạn chế về bộ nhớ và khả năng lưu trữ

Các thiết bị di động Series 60 không có đĩa cứng Các thiết bị này lưu trữ những chương trình thông dụng mà nhà sản xuất cung cấp (như sổ địa chỉ, lịch, hệ điều hành,…) trong chíp nhớ ROM, các chương trình này sẽ không mất đi khi ta tắt máy Bộ nhớ ROM rất giới hạn thường là lớn hơn 8 MB Còn bộ nhớ RAM của máy được sử dụng bởi các ứng dụng đang thực thi và nhân của hệ thống Một phần RAM được gán là ổ đĩa C dùng để chứa các chương trình, các tập tin tài liệu ứng dụng, … Dung lượng RAM rất hạn chế thường là lớn hơn 8 MB và ổ C thường chiếm 50% dung lượng RAM Một dạng lưu trữ khác nữa trên điện thoại di động là dùng thẻ nhớ để lưu trữ dữ liệu tuy nhiên dung lượng thẻ nhớ này cũng rất hạn chế

3.3.1.3 Hạn chế về kích thước màn hình

Các màn hình điện thoại di động của Series 60 được thiết kế với độ phân giải 176*208 pixel, từ 12 đến 18 bit màu khác nhau tùy mục đích thương mại Với kích thước như vậy rõ ràng là rất hạn chế so với một ứng dụng bất kỳ Ta có thể khắc phục bằng cách sử dụng tối đa các popupmenu và các phím tắt theo chuẩn của điện thoại di động

3.3.2 Các yêu cầu cơ bản của một ứng dụng từ điển

Một ứng dụng từ điển trước hết phải đáp ứng được những yêu cầu về dữ liệu và yêu cầu về xử lý Thứ nhất là dữ liệu lớn dể có thể lưu trữ được nhiều từ loại của

Trang 30

các từ điển khác nhau Kế đến là xử lý (bao gồm tra cứu và hiển thị kết quả) phải nhanh cho dù nguồn dữ liệu có kích thước lớn vì thao tác hết sức thường xuyên trên ứng dụng từ điển là tra cứu Ngoài ra yêu cầu dễ sử dụng cũng là một yêu cầu quan trọng

Thế nhưng với hạn chế về khả năng lưu trữ của điện thoại di động sẽ kéo theo hạn chế kích thước dữ liệu và với hạn chế về tốc độ xử lý của địên thoại di động sẽ kéo theo hạn chế về tốc độ xử lý của ứng dụng

3.3.3 Kết luận

Như vậy qua việc trình bày những hạn chế của điện thoại di động Series 60 và các yêu cầu cơ bản của một ứng dụng từ điển, ta thấy vấn đề có các mâu thuẫn như sau:

ƒ Mâu thuẫn giữa khả năng lưu trữ của điện thoại di động và yêu cầu về dữ liệu của từ điển

ƒ Mâu thuẫn giữa tốc độ xử lý của điện thoại di động và tốc độ xử lý của ứng dụng

Chương 5 sẽ trình bày các giải pháp khả thi để giải quyết các mâu thuẫn trên

Trang 31

Chương 4 Kĩ thuật lập trình C++ trên Symbian

Do các đặc trưng, hạn chế của điện thoại di động Việc lập trình ứng dụng bằng ngôn ngữ C++ cho điện thoại thông minh Symbian Series 60 có các điểm khác biệt so với lập trình ứng dụng cho máy tính Chương này trình bày những kĩ thuật lập trình Symbian C++ căn bản mà bất cứ một lâp trình viên nào cũng phải sử dụng

Nói đến lập trình C++ trên Symbian, vấn đề đầu tiên cần đề cập là các qui ước đặt tên cho lớp, biến, hàm… cũng như các kiểu dữ liệu cơ bản khi phát triển ứng dụng Tuy nhiên nội dung này đã được nhiều bài viết, luận văn khóa trước trình bày Vì vậy chúng em không trình bày lại phần này trong nội dung khóa luận mà đưa vào phụ lục để phục vụ như cầu tham khảo

4.1 Quản lý lỗi

4.1.1 Lỗi lập trình

Lỗi lập trình là lỗi phát sinh trong quá trình phát triển ứng dụng do truyền sai tham số, sai đường dẫn… Loại lỗi này thường gặp trong quá trình lập trình và có thể được lập trình viên khắc phục hoặc tránh bằng mã nguồn

Phần lớn các hàm API mà Symbian cung cấp đều trả về kết quả thực thi của hàm đó dưới dạng một mã lỗi hệ thống (System wide error codes) Dựa vào các mã này, lập trình viên có thể biết hàm được thực hiện thành công hay không và nguyên nhân gây lỗi Cụ thế các mã lỗi thông dụng: KErrNone (không có lỗi, hàm thưc hiện thành công), KErrCancel (giá trị trả về khi hàm bị hủy khi đang thực hiện), KErrNotSupported (nền hệ thống không hỗ trợ hàm được gọi), KErrBadName(tên tập tin không đúng cú pháp…)

Ngoài ra, hệ điều hành Symbian còn cung cấp một cơ chế dừng tiến trình ứng dụng ngay khi xảy ra lỗi và trả về các giá trị cần thiết để tìm và sửa lỗi gọi là panic Khi một panic xảy ra, có hai thành phần xác định nguyên nhân là loại lỗi (catagories) và mã lỗi của loại đó (reason codes) Ví dụ liên quan đến việc sử dụng font chữ và ảnh bitmap, có loại lỗi FBSERV (font & bitmap server) với 15 mã lỗi

Trang 32

khác nhau như 1: không kết nối được với dịch vụ quản lý font, 6: thông tin sử dụng font sai Trong quá trình thực thi ứng dụng trên máy ảo cũng như máy thực, khi xảy ra panic sẽ có một thông báo App Close! cung cấp thông tin về các thành phần trên trước khi đóng ứng dụng

Ngoài ra, lập trình viên có thể qui định thêm các panic cho ứng dụng bằng cách sử dụng tiện ích User::Panic(aCategory, aReason)để ngừng chương trình và thông báo lỗi

4.1.2 Lỗi thiếu tài nguyên

Lỗi thiếu tài nguyên là lỗi phát sinh trong quá trình thực thi ứng dụng khi ứng dụng đòi hỏi hệ thống cung cấp một tài nguyên nào đó mà hệ thống không đáp ứng được Một ứng dụng khi thực thi lần đầu hoạt động tốt, nhưng lần thứ hai có thể gặp lỗi thiếu tài nguyên Loại lỗi này thường chỉ gặp khi thực thi ứng dụng trên thiết bị thực, vì máy ảo chia sẻ tài nguyên với máy tính nên rất ít khi thiếu

Trong môi trường điện thoại thông minh Symbian Series 60, các nguồn tài nguyên như bộ nhớ, không gian lưu trữ… rất hạn chế Trong khi các ứng dụng được viết cho điện thoại di động phải đảm bảo chạy trong thời gian dài mà không khởi động hay nạp lại bộ nhớ

Vì vậy vấn đề quản lý tài nguyên khi lập trình, nhất là quản lý, thu hồi bộ nhớ khi lỗi xảy ra được Symbian cung cấp hỗ trợ rất kĩ, rất tốt; đây chính là một trong những điểm làm nên thành công của hệ điều hành Symbian

Cơ chế quản lý lỗi trong Symbian được chia làm nhiều cấp khác nhau như sau:

4.1.2.1 Bẫy lỗi, ngừng 1 hàm nếu xảy ra lỗi bộ nhớ

Cơ chế bắt lỗi cơ bản mà Symbian hỗ trợ gồm:

ƒ Hàm User::Leave() có tác dụng ngừng hàm đang thực hiện và trả về mã lỗi.

ƒ Macro TRAP và biến thể của nó TRAPD, cho phép đoạn mã chương

trình hoạt động dưới dạng bẫy lỗi

Cơ chế này hoạt động như thao tác bẫy lỗi khá quen thuộc try/catch và thrown

Trang 33

Tất cả các hàm có thể khả năng phát sinh lỗi tài nguyên trong ứng dụng (như cấp phát vùng nhớ cho một đối tượng nhưng đã hết bộ nhớ, truyền dữ liệu trong khi

dịch vụ chưa sẵn sàng…) gọi là “Leave function”, và có ký tự L cuối tên hàm (hàm

L) Lưu ý một hàm có thể ngừng (leave) 1 cách trực tiếp do đoạn mã phát sinh lỗi (leave directly) hoặc do 1 hàm này gọi 1 hàm L khác và hàm L được gọi này có thể gây ra lỗi (leave indirectly)

Ta có thể sử dụng tiện ích User::Leave() để ngừng ngay hàm đang thực hiện và trả về mã lỗi tương ứng (một dạng biệt lệ (exception) trong Symbian) Ví dụ dưới đây cho thấy hàm sẽ ngừng và trả về mã lỗi thiếu bộ nhớ nếu việc cấp phát

thông qua toán tử new không thành công:

void doExampleL() {

CExample* myExample = new CExample;

if (!myExample) User::Leave(KErrNoMemory);

// leave used in place of return to indicate an error // if leave, below code isn’t executed

// do something myExample->iInt = 5;

testConsole.Printf(_LIT("Value of iInt is %d.\n"), myExample->iInt); // delete

delete myExample; }

Tất cả những hàm leave, gồm cả những hàm gọi hàm leave khác đều hoạt động

dưới cơ chế bẫy lỗi Nếu hàm User::Leave() được gọi thì dòng điều khiển chương trình được trả về cho macro TRAP gần nhất Một biến được dùng đề nhận giá trị lỗi trả về của User::Leave() và nếu không có lỗi gì xảy ra thì biến này sẽ có giá trị KErrNone (Lưu ý biến trả về của macro TRAP không phải là giá trị hàm trả về)

Trang 34

Xét ví dụ cụ thể sau: TInt E32Main()

{

TInt r; // The leave variable

// Perform example function If it leaves, // the leave code is put in r

TRAP(r,doExampleL());

if (r) // Test the leave variable

testConsole.Printf(_LIT("Failed: leave code=%d"), r); }

Macro TRAP có 1 biến thể khác cho phép rút gọn code chương trình đó là TRAPD, khi sử dụng TRAPD ta không cần khai báo biến lỗi một cách tường minh:

TRAPD(leaveCode,value=GetSomethingL()); // get a value

Ngoài ra Symbian còn cung cấp 1 dạng toán tử new mới, sử dụng cơ chế leave trong 1 dòng lệnh, đó là: new (ELeave)… Khi sử dụng new (ELeave)… nghĩa là nếu

việc cấp phát vùng nhớ cho 1 đối tượng không thành công thì hàm thực thi toán tử

new này sẽ ngừng ngay lập tức:

void doExampleL() {

// attempt to allocate, leave if could not CExample* myExample = new (ELeave) CExample; // new (ELeave) replaces new followed by check // do something

myExample->iInt = 5; // delete

delete myExample; }

Trong ví dụ trên, nếu việc cấp phát myExample không thành công hàm doExampleL() sẽ ngừng ngay và trả về giá trị lỗi cho macro TRAP hay TRAPD gọi hàm này (nếu có)

Trang 35

4.1.2.2 Cleanup stack

Khi một hàm leave, dòng diều khiển được chuyển cho macro TRAP và dòng lệnh dưới TRAP được thực thi Điều này nghĩa là những đối tượng được tạo ra hoặc truyền vào trước khi hàm ngừng sẽ trở nên “mồ côi’, việc hủy chúng không được thực hiện và tài nguyên (bộ nhớ) mà chúng chiếm giữ sẽ không được giải phóng

Hệ điều hành Symbian cung cấp một cơ chế quản lý những đối tượng này gọi là Cleanup stack Như đã trình bày ở phần qui ước đặt tên, chỉ có các lớp bắt đầu bằng ký tự C là cần và bắt buộc phải hủy khi sử dụng xong

Như vậy nguy cơ đối tượng mồ côi xuất phát từ lớp C, xét ví dụ cụ thể sau: void doExampleL()

CExample* myExample = new (ELeave) CExample;

// do something that cannot leave: no protection needed myExample->iInt = 5;

// PROBLEM: do something that can leave !!! myExample->DoSomethingL();

// delete

delete myExample; }

Nếu lúc này hàm myExample->DoSomethingL(); bị lỗi và ngừng lại thì dòng lệnh delete myExample sẽ không được thực thi, nghĩa là vùng nhớ cấp cho

nó không được giải phóng Ta giải quyết vần đề này bằng kĩ thuật Cleanup stack mà Symbian hỗ trợ như sau: dùng hàm CleanupStack::PushL()để đưa con trỏ đối tượng vào Cleanup stack trước khi gọi bất kì hàm leave nào; sau đó nếu những hàm leave đã hoàn thành mà không có lỗi xảy ra, ta gọi hàm CleanupStack::Pop() để lấy con trỏ đối tượng ra khỏi Cleanup stack

Trang 36

Minh họa lại ví dụ trên: void doExampleL() {

// allocate with checking

CExample* myExample = new (ELeave) CExample; // do something that cannot leave

myExample->iInt = 5; // cannot leave: no protection needed // do something that can leave: use cleanup stack

CleanupStack::PushL(myExample); // pointer on cleanup stack myExample->DoSomethingL(); // something that might leave CleanupStack::Pop(); // it didn't leave: pop the pointer // delete

delete myExample; }

Lưu ý: hàm CleanupStack::PushL() có thể leave, tuy nhiên nếu hàm này leave thì đối tượng đưa vào stack bởi hàm này cũng sẽ bị hủy

Cần lưu ý hàm CleanupStack::Pop() tự nó không có ý nghĩa gì, nó chỉ đẩy 1 đối tượng ra khỏi Cleanupstack và ta có thể hủy hoặc sử dụng đối tượng nhận

được từ stack này sau khi hàm bị ngừng (leave) đảm bảo không có đối tượng mồ côi

CleanupStack::PopAndDestroy() để hủy đối tượng sau khi hoàn thành hàm leave:

void doExampleL() {

// pop from cleanup stack, and destroy, in one operation CleanupStack::PopAndDestroy(); //don’t need call delete }

Để rút gọn mã nguồn chương trình, việc cấp phát và đưa đối tượng vào Cleanp

stack thường được thực hiện trong 1 hàm kết thúc bằng ký tự C Ví dụ hàm TAny* User::AllocLC() gồm việc gọi hàm User::Alloc() để cấp phát vùng nhớ sau đó leave nếu cấp phát không thành công, ngược lại tự động đưa đối tượng vào Cleanup stack Nếu gọi hàm _C để cấp phát đối tượng vẫn phải lấy đối tượng ra khỏi Cleanup stack sau khi sử dụng xong

Trang 37

4.1.2.3 Hàm dựng 2 pha

Trong khi khởi tạo các đối tượng phức tạp (đối tượng lớp C chứa một hoặc nhiều đối tượng lớp C khác cần được khởi tạo) có thể dẫn tới tình trạng leave mà việc quản lý bằng Cleanup stack một cách tường minh gặp khó khăn do ta không biết đối tượng nào đã được khởi tạo và đối tượng nào chưa Lúc này Symbian tiếp tục cung cấp cơ chế quản lý lỗi khi khởi tạo đối tượng gọi là hàm dựng 2 pha (2 phase constructor) hoạt động với cơ chế như sau:

ƒ Cấp phát vùng nhớ cho đối tượng (và leave nếu không đủ bộ nhớ)

ƒ Khởi tạo các thành phần an toàn (không thể leave)

ƒ Đưa con trỏ đối tượng vào Cleanup stack

ƒ Dùng hàm dựng thứ 2 (2nd phase constructor) để khởi tạo các thành phần có thể leave

private:

TInt iVal; };

Lớp CCompound chứa đối tượng CSimple như là biến thành viên class CCompound : public CBase

{

public:

void Display(); ~CCompound();

static CCompound* NewL(TInt aVal); static CCompound* NewLC(TInt aVal);

Trang 38

protected:

CCompound(TInt aVal); void ConstructL(); private:

TInt iVal;

CSimple* iChild; };

Minh họa nguy cơ từ việc khởi tạo đối tượng CCompound theo cách thông thường:

CCompound::CCompound(TInt aVal) {

được cấp phát, tuy nhiên không thể truy cập đến vùng nhớ này vì hàm dựng không

thành công Như vậy đã có một đối tượng mồ côi được tạo ra trong vùng nhớ mà ta

không thể quản lý được

Để khắc phục CCompound sử dụng hàm dựng 2 pha, có thể tạo ra một đối tượng CCompound một cách an toàn thông qua hai hàm tĩnh NewL() và NewLC() như sau:

// NewLC with two stage construction CCompound* CCompound::NewLC(TInt aVal) {

// get new, leave if can't

CCompound* self=new (ELeave) CCompound(aVal);

// push onto cleanup stack in case self->ConstructL leaves CleanupStack::PushL(self);

// complete construction with second phase constructor self->ConstructL();

return self; }

Trang 39

void CCompound::ConstructL() {

// function may leave, as creating a new CSimple object // may leave

iChild = new (ELeave) CSimple (iVal); }

CCompound* CCompound::NewL(TInt aVal) {

CCompound* self=NewLC(aVal); CleanupStack::Pop();

return self; }

Ta sử dụng hàm NewL(), NewLC() để khởi tạo đối tượng CCompound an toàn như sau:

void doExampleL() {

// allocate and push to cleanup stack - leave if failed CCompound* myExample = CExample::NewLC(5);

// do something that might leave myExample->DoSomethingL();

// pop from cleanup stack and destroy CleanupStack::PopAndDestroy();

}

Lúc này nếu hàm doExampleL() không thành công do không cấp phát được đối tượng CSimple ( biết được bằng bẫy lỗi TRAPD(errcode, doExampleL())với errcode != KErrNone), ta chỉ cần gọi CleanupStack::PopAndDestroy() để “làm sạch” vùng nhớ

Ngoài ra, đối với các lớp T, R Cleanup stack cũng hỗ trợ thao tác push và pop thông qua các hàm overload:

static void PushL(TAny* aPtr);

static void PushL(TCleanupItem anItem);

Trang 40

4.2 Chuỗi

4.2.1 Khái niệm

Hệ điều hành Symbian biểu diễn chuỗi và dữ liệu nhị phân bằng đặc ngữ

(idiom) “descriptor” Descriptor cung cấp một cơ chế an toàn, chặt chẽ để truy cập

và quản lý chuỗi cũng như vùng nhớ chứa dữ liệu nhị phân

Một đối tượng descriptor chứa kích thước và con trỏ tới vùng dữ liệu(chuỗi hoặc dữ liệu nhị phân) Tất cả thao tác trên dữ liệu thực hiện thông qua đối tượng descriptor này

Descriptor không phân biệt kiểu dữ liệu mà nó đang quản lý, nghĩa là chuỗi và dữ liệu nhị phân được hiểu như nhau Vì vậy vài phương thức dùng để xử lý chuỗi có thể hoạt động tốt trên dữ liệu nhị phân

Descriptor có các dạng:

ƒ Dạng 16 bit dùng cho chuỗi Unicode và các dữ liệu 2 bytes Chiều dài (length) của 16 bit descriptor là số ký tự trong chuỗi Unicode (hoặc là số dữ liệu 2 bytes) Æ kích thước của 16 bit descriptor = length * 2

ƒ Dạng 8 bit dùng cho chuỗi non-Unicode và dữ liệu 1 byte (dữ liệu nhị phân) Chiều dài của 8 bit descriptor cũng là kích thước và chính là số byte được cấp trong vùng nhớ mà descriptor trỏ tới

Lưu ý: chiều dài 1 descriptor không thể vượt quá 228

Descriptor còn hỗ trợ build independent type (có thể gọi là descriptor dạng độc lập) Khi sử dụng build independent type để biểu diễn chuỗi, tùy macro _UNICODE được xác định hay không mà trình biên dịch sẽ chọn kiểu descriptor 8 bit hay 16 bit cho phù hợp

Có thể hiểu rõ vấn đề thông qua đoạn code sau: #if defined(_UNICODE)

typedef TPtr16 TPtr; #else

typedef TPtr8 TPtr; #endif

Trong đó, TPtr là một lớp descriptor và macro _UNICODE sẽ được định nghĩa mặc định cho ứng dụng

Ngày đăng: 23/11/2012, 08:09

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Nhu cầu từ điển di động - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 1.1 Nhu cầu từ điển di động (Trang 13)
Hình  2.1 Các cổ đông của công ty Symbian - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 2.1 Các cổ đông của công ty Symbian (Trang 15)
Hình  2.2 Các nhà sản xuất có giấy phép sử dụng hệ điều hành Symbian - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 2.2 Các nhà sản xuất có giấy phép sử dụng hệ điều hành Symbian (Trang 16)
Mô hình Pearl - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
h ình Pearl (Trang 18)
Hình  2.4Communicator áp dụng mô hình Quartz  Hình  2.5 Smartphone áp dụng mô hình Pearl - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 2.4Communicator áp dụng mô hình Quartz Hình 2.5 Smartphone áp dụng mô hình Pearl (Trang 18)
Hình 2.6 Điện thoại thông minh Symbian Series60 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 2.6 Điện thoại thông minh Symbian Series60 (Trang 20)
Hình 3.3 Một ứng dụng controls - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 3.3 Một ứng dụng controls (Trang 28)
Hình  3.3 Một ứng dụng controls - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 3.3 Một ứng dụng controls (Trang 28)
Hình 4.1 Chuỗi không thể thay đổi - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 4.1 Chuỗi không thể thay đổi (Trang 42)
Hình 4.6 Cây kế thừa các lớp descriptor - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 4.6 Cây kế thừa các lớp descriptor (Trang 44)
Hình 4.10 Mảng khác kích thước, liên tục - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 4.10 Mảng khác kích thước, liên tục (Trang 48)
Hình 4.14 Mảng cont rỏ chuỗi - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 4.14 Mảng cont rỏ chuỗi (Trang 51)
Hình  4.14 Mảng con trỏ chuỗi - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 4.14 Mảng con trỏ chuỗi (Trang 51)
Bảng 5.1 Bảng mô tả các trường dữ liệu - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Bảng 5.1 Bảng mô tả các trường dữ liệu (Trang 52)
Hình  5.2 Ý tưởng cấu trúc lưu trữ chuẩn Dictzip# - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 5.2 Ý tưởng cấu trúc lưu trữ chuẩn Dictzip# (Trang 58)
Bảng 5.7 Tốc độ truy xuất từ điển Anh-Việt khi sử dụng Dictzip# - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Bảng 5.7 Tốc độ truy xuất từ điển Anh-Việt khi sử dụng Dictzip# (Trang 60)
Hình 5.3 Tổ chức tập tin nghĩa - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 5.3 Tổ chức tập tin nghĩa (Trang 61)
Bảng  5.8 Các trường dữ liệu trong mẫu tin chỉ mục - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
ng 5.8 Các trường dữ liệu trong mẫu tin chỉ mục (Trang 62)
Bảng 6.2 Biên trên và biên dưới của ký tự có dấu tiếng Việt - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Bảng 6.2 Biên trên và biên dưới của ký tự có dấu tiếng Việt (Trang 78)
Hình 6.6 Minh họa sử dụng biên trên - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 6.6 Minh họa sử dụng biên trên (Trang 79)
Hình  6.7 Nạp từ vào listbox - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 6.7 Nạp từ vào listbox (Trang 80)
7.2 Mô hình Use-Case - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
7.2 Mô hình Use-Case (Trang 84)
Hình  7.1 Use-Case diagram - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.1 Use-Case diagram (Trang 84)
Hình 7.2 Class diagram - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.2 Class diagram (Trang 90)
Hình  7.2 Class diagram - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.2 Class diagram (Trang 90)
21 CWav_hash Control Lớp xử lý bảng băm dữ liệu âm thanh  - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
21 CWav_hash Control Lớp xử lý bảng băm dữ liệu âm thanh (Trang 91)
Hình 7.4 Sơ đồ tuần tự Khởi động ứng dụng 2 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.4 Sơ đồ tuần tự Khởi động ứng dụng 2 (Trang 94)
Hình 7.5 Sơ đồ tuần tự Chọn từ điển mới - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.5 Sơ đồ tuần tự Chọn từ điển mới (Trang 95)
Hình  7.5 Sơ đồ tuần tự Chọn từ điển mới - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.5 Sơ đồ tuần tự Chọn từ điển mới (Trang 95)
Hình 7.6 Sơ đồ tuần tự Tìm kiếm từ 1 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.6 Sơ đồ tuần tự Tìm kiếm từ 1 (Trang 96)
Hình  7.6 Sơ đồ tuần tự Tìm kiếm từ 1 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.6 Sơ đồ tuần tự Tìm kiếm từ 1 (Trang 96)
Hình 7.8 Sơ đồ tuần tự Hiển thị nghĩa từ - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.8 Sơ đồ tuần tự Hiển thị nghĩa từ (Trang 97)
Hình  7.8 Sơ đồ tuần tự Hiển thị nghĩa từ - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.8 Sơ đồ tuần tự Hiển thị nghĩa từ (Trang 97)
Hình  7.9 Sequence diagram Xem nghĩa từ khác trong màn hình nghĩa 1 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.9 Sequence diagram Xem nghĩa từ khác trong màn hình nghĩa 1 (Trang 98)
Hình  7.11 Sequence diagram Nghe phát âm từ 1 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.11 Sequence diagram Nghe phát âm từ 1 (Trang 99)
Hình 7.12 Sơ đồ tuần tự Nghe phát âm từ 2 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.12 Sơ đồ tuần tự Nghe phát âm từ 2 (Trang 100)
Hình  7.12 Sơ đồ tuần tự Nghe phát âm từ 2 - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.12 Sơ đồ tuần tự Nghe phát âm từ 2 (Trang 100)
Hình  7.13 Màn hình tra từ - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.13 Màn hình tra từ (Trang 101)
Hình 7.15 Submenu Dictionaries Hình 7.16 Submenu About - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 7.15 Submenu Dictionaries Hình 7.16 Submenu About (Trang 102)
Hình  7.15 Submenu Dictionaries  Hình  7.16 Submenu About - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 7.15 Submenu Dictionaries Hình 7.16 Submenu About (Trang 102)
8.2 Mô hình Use-Case - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
8.2 Mô hình Use-Case (Trang 103)
Hình  8.1 Mô hình Use-Case Dictionary Manager - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 8.1 Mô hình Use-Case Dictionary Manager (Trang 103)
Bảng 8.1 Danh sách các Actor - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Bảng 8.1 Danh sách các Actor (Trang 104)
Bảng  8.4 Các xử lý chính - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
ng 8.4 Các xử lý chính (Trang 110)
Hình  8.4 Sơ đồ tuần tự cho xử lý Export - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 8.4 Sơ đồ tuần tự cho xử lý Export (Trang 111)
Hình  8.6 Sơ đồ tuần tự cho xử lý UpdateWord - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 8.6 Sơ đồ tuần tự cho xử lý UpdateWord (Trang 112)
8.5.2 Mô tả các màn hình giao diện - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
8.5.2 Mô tả các màn hình giao diện (Trang 113)
Hình  8.7 Màn hình chính của ứng dụng Dictionary Manager - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 8.7 Màn hình chính của ứng dụng Dictionary Manager (Trang 113)
Hình  8.8 Màn hình biên sọan từ - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 8.8 Màn hình biên sọan từ (Trang 114)
Hình  9.1 Mô hình cài đặt đề tài - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 9.1 Mô hình cài đặt đề tài (Trang 116)
Hình 9.2 Cài đặt thành công Mobile_Dict Hình 9.3 Cài đặt thành công Dữ liệu - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
Hình 9.2 Cài đặt thành công Mobile_Dict Hình 9.3 Cài đặt thành công Dữ liệu (Trang 118)
Hình  9.5 Chọn từ điển cần dùng - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 9.5 Chọn từ điển cần dùng (Trang 119)
Hình  9.8 Màn hình chính của ứng dụng Dictionary Manager - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 9.8 Màn hình chính của ứng dụng Dictionary Manager (Trang 120)
Hình  9.11 Màn hình biên soạn từ - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh 9.11 Màn hình biên soạn từ (Trang 122)
Hình A. 2 Build Solution HelloworldBasic - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh A. 2 Build Solution HelloworldBasic (Trang 131)
Hình A .4 HelloWorld trên máy giả lập - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh A .4 HelloWorld trên máy giả lập (Trang 132)
Hình A. 4 HelloWorld trên máy giả lập - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
nh A. 4 HelloWorld trên máy giả lập (Trang 132)
Bảng B .4 Kiểu số nguyên B.2.2  Kiểu số thự c:  - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
ng B .4 Kiểu số nguyên B.2.2 Kiểu số thự c: (Trang 138)
Bảng B .6 Các kiểu cơ bản khác - Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động
ng B .6 Các kiểu cơ bản khác (Trang 139)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w