Tải bản đầy đủ (.pdf) (21 trang)

Báo Cáo Bài Tập Lớn Xây Dựng Chƣơng Trình Chat Trên Điện Thoại Di Động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (695.49 KB, 21 trang )

Trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội

BÁO CÁO BÀI TẬP LỚN
XÂY DỰNG CHƢƠNG TRÌNH CHAT TRÊN ĐIỆN THOẠI DI ĐỘNG

Ngƣời thực hiện: Đoàn Ngọc Phƣơng
Nguyễn Thị Thu Hằng
Lớp cao học CNTT K17


Lời nói đầu
Hệ thống chat là một hệ thống đa ngƣời dùng và thực hiện chức năng truyền thông
điệp giữa các ngƣời dùng trong hệ thống, với tính chất là thông điệp đƣợc gửi từ ngƣời
dùng A đến ngƣời dùng B (đang online – hay đang sử dụng hệ thống) phải đƣợc thực hiện
ngay với thời gian trễ rất nhỏ, đủ để thể hiện một cuộc trò chuyện thông thƣờng.
Với đặc điểm nhƣ vậy hệ thống chat cũng có điểm tƣơng đồng với hệ thống mail,
đó là khả năng truyền thông điệp: nếu ngƣời nhận không online – hay đang không sử dụng
hệ thống thì hệ thống chat cũng giống nhƣ hệ thống mail, các thông điệp chỉ đƣợc tải về
máy ngƣời nhận khi ngƣời nhận đăng nhập và tiến hành xem thông điệp. Nhƣng nếu
ngƣời nhận online, thì thông điệp trong chƣơng trình chat phải đƣợc tải về ngay và hiển thị
trên cửa sổ chat của ngƣời nhận. Nhƣ vậy có thể nói điểm khác biệt chủ yếu của hai hệ
thống là thời gian truyền thông điệp.
Qua phân tích, và dựa trên những công cụ hiện có là J2ME để lập trình trên điện
thoại di động, một ngôn ngữ lập trình luôn hỗ trợ giao thức http trên mọi dòng máy, nhóm
em đã quyết định xây dựng hệ thống chat trên điện thoại di động trên mô hình client –
server. Nhƣ vậy, mọi ngƣời dùng trong hệ thống sẽ đƣợc coi là các client, trong hệ thống
sẽ tồn tại một máy chủ để tiến hành lƣu các thông điệp gửi đi và tải các thông điệp về máy
điện thoại di động của ngƣời nhận khi ngƣời nhận, hay máy client có yêu cầu nhận thông
điệp.
Việc nhận thông điệp trong mắt ngƣời sử dụng là một quá trình tự nhiên, không
phải qua khâu kết nối hay yêu cầu (request) tới máy chủ, cho nên việc làm này phải đƣợc


chƣơng trình tiến hành tự động, và cứ sau một khoảng thời gian trễ đủ nhỏ (cỡ giây), hành
động này lại đƣợc tiến hành lại để nhằm mục đích cập nhập thông điệp, khiến cho thông
điệp nhƣ đƣợc gửi ngay và trực tiếp đến ngƣời dùng.
Dựa trên những ý tƣởng nhƣ vậy, nhóm em đã tiến hành xây dựng một hệ thống
chat trên điện thoại di động với nhiệm vụ chính là truyền thông điệp dạng văn bản không
dấu, bỏ qua các chức năng truyền file đính kèm, biểu tƣợng,…
Với hạn chế và chuyên môn và thời gian nên chƣơng trình còn nhiều sai sót, kính
mong sự góp ý của cô giáo cùng các anh chị học viên.
Báo cáo bao gồm các nội dung sau:
- Phân tích thiết kế hệ thống
- Giới thiệu về chƣơng trình và các công cụ dùng để xây dựng chƣơng trình

1


Mục lục
Lời nói đầu................................................................................................................................... 0
Mục lục .................................................................................................................................... 2
PHÂN TÍCH, THIẾT KẾ ............................................................................................................ 3
1. Phân tích và thiết kế tổng quát............................................................................................. 3
1.2. Lựa chọn kiểu kết nối ................................................................................................... 3
1.3. Kiểu dữ liệu phía server................................................................................................ 3
1.4. Kiểu dữ liệu phía client ................................................................................................ 4
2. Phân tích và thiết kế chi tiết ................................................................................................ 5
2.1. Các chức năng cần xây dựng của chƣơng trình, biểu đồ user case .............................. 5
2.2. Biểu đồ trình tự của một số chức năng chính ............................................................... 6
2.3. Các servlet phía server ................................................................................................ 14
2.4. Biểu đồ lớp ................................................................................................................. 15
GIỚI THIỆU VỀ CHƢƠNG TRÌNH VÀ CÁC CÔNG CỤ XÂY DỰNG CHƢƠNG TRÌNH . 17
1. Các công cụ xây dựng chƣơng trình .................................................................................. 17

2. Giới thiệu chƣơng trình ..................................................................................................... 17
3. Các chức năng của chƣơng trình ....................................................................................... 18

2


PHÂN TÍCH, THIẾT KẾ
1. Phân tích và thiết kế tổng quát
1.1. Lựa chọn kiểu kết nối
Hệ thống đƣợc xây dựng trên mô hình Client – Server và sử dụng giao thức Http.
Kết nối Http là kết nối phi trạng thái, khó để quản lý phiên làm việc của từng ngƣời
dùng, nhất là đối với ngƣời dùng sử dụng một chƣơng trình, chứ không phải một trang
web trên một thiết bị di động. Do đó để luôn cập nhập đƣợc các thông điệp và trạng thái
nhập/xuất của các thành viên, thì chƣơng trình phía client dùng cách theo định kỳ gửi
yêu cầu về phía server để luôn luôn cập nhật đƣợc mọi thông tin. Chi tiết cụ thể đƣợc
nêu dƣới đây.
1.2. Kiểu dữ liệu phía server
Một ngƣời dùng khi muốn sử dụng chƣơng trình chat thì cần phải có tài khoản.
Tài khoản của ngƣời dùng trong chƣơng trình chat còn có thêm một giá trị trạng thái để
xác định việc ngƣời đó đang online hay offline.
Một ngƣời có thể có rất nhiều bạn bè là các tài khoản khác sử trong hệ thống và
cũng có rất nhiều tin nhắn từ những ngƣời dùng khác, các tin nhắn này có thể giống hệt
nhau cả về ngƣời nhận, ngƣời gửi, và nội dung thông điệp. Ngoài ra một thông điệp của
một chƣơng trình chat cũng ngắn, nên có thể lƣu thành một trƣờng của cơ sở dữ liệu.
Trên cơ sở những phân tích đó, phía server dữ liệu đƣợc lƣu thành ba bảng:

Hình 1:
Cơ sở dữ liệu
3



Bảng user để lƣu thông tin của ngƣời dùng hay còn gọi là tài khoản của ngƣời
dùng, mỗi ngƣời dùng sẽ sở hữu riêng một username, password và trạng thái nhập/xuất.
Một ngƣời dùng có nhiều bạn bè đƣợc lƣu trong bảng friends. Tƣơng tự mỗi
ngƣời dùng cũng có nhiều thông điệp đƣợc gửi tới đƣợc lƣu trong bảng message.
Khi có bất cứ thay đổi gì: thêm danh sách bạn bè, thêm thông điệp mới, thay đổi
trạng thái, thì server sẽ thực hiện cập nhập lại cơ sở dữ liệu.
Còn khi server phải phản hồi lại yêu cầu của client, kết quả sẽ đƣợc gửi về client
dƣới dạng một chuỗi, trong đó các bản ghi của bảng sẽ đƣợc phân biệt bởi dấu “;”. Riêng
với các thông tin trong từng hàng sẽ đƣợc phân tách bởi dấu “:”. Danh sách bạn bè sẽ kết
thúc bằng chuỗi “offm”, tiếp sau đó là danh sách các thông điệp. Client sẽ dựa vào
những dấu hiệu này để bóc tách ra những thông tin cần thiết.
1.3. Kiểu dữ liệu phía client
Phía client có hai loại thông tin cần xử lý, đó là thông tin gửi đi và thông tin nhận
lại đƣợc từ phía server.
Thông tin gửi đi sẽ là các tham số để yêu cầu server phục vụ. Client ở đây sẽ yêu
cầu server cho login/logoff, yêu cầu đƣợc gửi thông điệp đến một ngƣời dùng khác và
yêu cầu đƣợc cập nhật trạng thái của các ngƣời dùng có trong danh sách bạn bè của họ,
cũng nhƣ các thông điệp đã đƣợc gửi đến cho họ.Phần lớn các thông tin này đều đƣợc
nhập vào các textfield.
Thông tin nhận về bao gồm: thông điệp offline-các thông điệp đƣợc gửi đến khi
ngƣời dùng chƣa đăng nhập, thông điệp online là các thông điệp mà ngƣời dùng trao đổi
khi trò chuyện với những ngƣời dùng khác. Danh sách bạn bè và trạng thái nhập/xuất
kèm theo.
Vì bộ nhớ tạm thời có hạn và tốc độ xử lý kém, ngoài ra nếu lƣu trữ theo dạng
mảng thì khó truy xuất, cập nhật. Cho nên chƣơng trình dùng các bản ghi RMS của j2me
để lƣu lại các thông điệp. Dùng các bản ghi thì ta luôn đƣợc hỗ trợ sẵn các phƣơng thức
sắp xếp, tìm kiếm, thêm xóa, sửa mà không cần mất công cài đặt, lại có thể tiết kiệm
vùng nhớ tạm thời.
Còn danh sách bạn bè và trạng thái kèm theo thì chƣơng trình dùng hai mảng để

lƣu lại, và thƣờng xuyên đƣợc cập nhập. Hai mảng này chỉ là tạm thời để xử lý, nội dung
chính đƣợc lƣu trong một list, một kiểu cửa sổ có dạng danh sách, mỗi một thành viên
của danh sách lại có biểu tƣợng kèm theo thể hiện trạng thái nhập/xuất.

4


2. Phân tích và thiết kế chi tiết
2.1. Các chức năng cần xây dựng của chƣơng trình, biểu đồ user case
Hệ thống gồm có hai tác nhân chính là ngƣời dùng và server.

Hình 2:
Biểu đồ user case cho tác nhân người dùng
Những thông tin mà ngƣời dùng yêu cầu luôn luôn thay đổi, ngƣời dùng đăng
nhập hay đăng xuất thì trạng thái của ngƣời dùng sẽ thay đổi, nên chức năng show friend
list cần cập nhập trạng thái của những tài khoản có mặt trong danh sách…Vì lý do đó mà
chƣơng trình cần cung cấp chức năng update để liên tục cập nhập những thông tin cần
thiết.login, logout là chức năng đăng nhập và đăng xuất, show friend list là chức năng
hiển thị danh sách bạn bè với trạng thái nhập/xuất kèm theo, show offline message là
chức năng hiển thị tin nhắn offline, chức năng add new friend để thêm bạn bè vào danh
sách friend list, multi talking là chức năng trò chuyện với nhiều ngƣời, save in to a file là
chức năng ghi lại đoạn hội thoại mà ngƣời dùng mong muốn.

5


Hình 3:
Biểu đồ user case cho tác nhân server
Mọi việc server thực hiện đều phải tiến hành cập nhập lại cơ sở dữ liệu, vì vậy
mọi user case của server đều cần phải sử dụng các chức năng và thuộc tính của user case

cập nhập cơ sở dữ liệu.
2.2. Biểu đồ trình tự của một số chức năng chính

2.2.1. Chức năng chính-update
Nhƣ đã đƣợc phân tích ở phần đầu của chƣơng, chƣơng trình chat phải theo định
kỳ gửi yêu cần lên server để cập nhập thông tin. Để làm đƣợc việc đó chƣơng trình phải
có một tiến trình riêng, tiến trình này làm công việc chính là kết nối với server và nhận
thông tin phản hồi về để xử lý. Cứ sau một khoảng thời gian định kỳ tiến trình lại quay
lại thực hiện công việc nhƣ trên. Giữa khoảng thời gian của hai lần cập nhật, các tiến
trình khác có thể hoạt động để đón bắt và xử lý tƣơng tác của ngƣời dùng. Những tƣơng
tác này cuối cùng cũng chỉ đƣợc xử lý để làm thay đổi tham số mà tiến trình chính gửi
lên server mà thôi.
Chi tiết những trình tự sẽ xảy ra trong hệ thống để phục vụ cho chức năng update
đƣợc mô tả trong biểu đồ trình tự dƣới đây. Tiến trình này sẽ đƣợc lặp đi lặp lại để cập
6


nhập thông tin cho đến khi ngƣời dùng đăng xuất, khi đó chƣơng trình không cần cập
nhập bất kỳ thông tin nào nữa:

Hình 4:
Biểu đồ trình tự của user case update
Nhƣ vậy lớp chính cần đƣợc cài đặt giao tiếp runnable để có thể sử dụng các tiến
trình. Mọi hoạt động của lớp chính đều nằm trong phƣơng thức run(), phƣơng thức hoạt
động của tiến trình, trong phƣơng thức này có một vòng lặp không xác định, vòng lặp chỉ
7


kết thúc khi ngƣời dùng có yêu cầu đăng xuất, sau mỗi lần thực hiện kết nối và cập nhập
thông tin, lệnh cuối cùng của vòng lặp này là sleep(), lệnh cho tiến trình tạm nghỉ, trong

khi đó các tiến trình khác có thể hoạt động.
Trong phƣơng thức run() có nhiều đoạn mã khác nhau dành cho những yêu cầu
khác nhau của ngƣời dùng. Việc bắt đầu đoạn mà nào phụ thuộc vào một số biến
boolean hay còn gọi là cờ trạng thái. Nếu ngƣời dùng chọn chức năng nào thì cờ tƣơng
ứng với chức năng ấy cũng đƣợc bật, và đoạn mã xử lý chức năng đó sẽ đƣợc thực thi
trong lần hoạt động tiếp theo của tiến trình. Khi ngƣời dùng nhấn back để thoát khỏi
chức năng nào đó, cờ trạng thái tƣơng ứng cũng bị tắt và đoạn mã tƣơng ứng sẽ không
đƣợc xử lý cho đến khi cờ trạng thái lại đƣợc bật lại.
Mặt khác do đặc thù của chƣơng trình chat, cần có nhiều cửa sổ để giao lƣu với
nhiều ngƣời, cho nên toàn bộ chƣơng trình sẽ đƣợc phân rã thành các cửa sổ, mỗi chức
năng ngƣời dùng sử dụng sẽ đƣợc cung cấp bằng một cửa sổ. Do đó lớp chính sẽ có
thuộc tính là các cửa sổ này. Ngƣời dùng yêu cầu chức năng nào thì sẽ cho hiển thị cửa
sổ tƣơng ứng.

2.2.2. Chức năng đăng nhập và đăng xuất
Nếu ngƣời dùng nhấn nút login đƣợc gắn với form, thì một sự kiện sẽ phát sinh,
cờ login sẽ đƣợc bật, tham số đƣợc xác định và thread mới đƣợc tạo ra để bắt đầu phục
vụ ngƣời dùng, trong phƣơng thức run của lớp chính, chuỗi url login sẽ đƣợc dùng để
kết nối với server, nếu thành công, midlet sẽ hiện cửa sổ chính của chƣơng trình, ngƣợc
lại nếu tài khoản không hợp lệ, cờ login sẽ bị tắt, chƣơng trình sẽ không thực hiện kết
nối, và một thông báo yêu cầu nhập lại sẽ đƣợc hiện ra trên form login.
Trong đoạn mã thực hiện nhiệm vụ login của lớp chính, kết quả sẽ chia ra làm
hai nửa: phần thể hiện danh sách bạn bè đƣợc cắt ra dựa vào dấu hiệu “offm” để đƣa
vào lớp friendList, lớp hiển thị danh sách bạn bè của ngƣời dùng, tên và trạng thái của
ngƣời dùng sẽ đƣợc bóc tách ra, một hình ảnh tƣơng ứng sẽ đƣợc gắn vào tên để hiển
thị trạng thái nhập xuất. Phần còn lại đƣợc đƣa vào lớp offlineMessage-lớp hiển thị tin
nhắn offline, lớp này là một form, nó nhận dữ liệu, xử lý và gắn tin nhắn vào cửa sổ
của nó, khi có yêu cầu xem tin offline form này sẽ đƣợc gọi hiển thị và không cần xử lý gì
thêm, trạng thái của ngƣời dùng khi đó sẽ đƣợc server cập nhật lại thành trạng thái online.


8


Hình 5:
Biểu đồ trình tự của user case login

9


Hình 6:
Biểu đồ trình tự của user case logout

2.2.3. Chức năng hiển thị tin nhắn offline
Tin nhắn offline sẽ đƣợc hiển thị trong một form riêng, các thành phần của form là
các StringItem, nội dung của nó chính là các thông điệp, còn lable của nó là tên của ngƣời
gửi. Những thông tin này đƣợc lấy ra từ chuỗi thông tin offline có đƣợc từ kết quả kết nối
khi đăng nhập. Mỗi thông điệp đƣợc chích ra nhờ vào kí tự phân cách “;”, phần lable đƣợc
lấy ra nhờ kí tự “:”. Form này còn đƣa ra cho ngƣời dùng thông tin về số tin nhắn offline
đƣợc gửi đến, thông tin này là một dòng thông báo đƣợc đặt phía trên cùng của cửa sổ, để
có đƣợc thông tin này thì chỉ cần dùng một biến đếm, mỗi lần tách ra đƣợc một tin nhắn
trong chuỗi offline lấy về từ server, biến đếm sẽ tăng lên một đơn vị. Do đó nếu không có
tin nhắn cửa sổ hiện ra sẽ không phải là một cửa sổ trống, không có thông tin.

10


Hình 7:
Biểu đồ trình tự của user case show offline message
Khi ngƣời dùng nhấn back cửa sổ này sẽ không đƣợc hiển thị nữa để nhƣờng chỗ
cho cửa sổ chính. Việc xác định có hiển thị hay không cũng dựa vào việc bật tắt cờ trạng

thái để thực hiện đoạn mã tƣơng ứng trong hàm run().

2.2.4. Chức năng thêm bạn bè
Tƣơng tự, chức năng này cũng là một form, và tƣơng tự nó cũng có cờ trạng thái
nhƣ các chức năng khác. Chỉ có điều nó có các thuộc tính khác mà thôi. Form này gồm
một textfield để nhập tên ngƣời cần thêm vào danh sách bạn bè, và hai nút nhấn, một để
thay đổi tham số, gửi yêu cầu đến server để thêm bạn bè. Một để quay lại chƣơng trình
chính. Nếu chuỗi nhập vào không đúng quy cách là một tên tài khoản, chƣơng trình sẽ
xử lý ngay và không cho phép gửi lên server. Sau khi đã thêm thành công thì vấn đề cần
xử lý là update lại danh sách bạn bè, do đó lớp chính phải gọi phƣơng thức update của
form chứa danh sách này.
11


Hình 8:
Biểu đồ trình tự của user case add new friend

2.2.5. Chức năng trò chuyện
Đây là chức năng quan trọng và phức tạp nhất của chƣơng trình, tại một thời
điểm sẽ có nhiều thông điệp đƣợc gửi lên server, sự tranh chấp tài nguyên có thể khiến

12


thông điệp không đƣợc gửi đi, làm mất tính an toàn và ổn định của chƣơng trình, do đó
phía server cần phải có những xử lý cho vấn đề tranh chấp tài nguyên.

Hình 9:
Biểu đồ trình tự của user case multi talking
13



Khi ngƣời dùng di chuyển trên danh sách bạn bè và dừng lại ở một ngƣời cần nói
chuyện, rồi nhấn talk trong menu. Một cửa sổ tƣơng ứng sẽ đƣợc mở. Cửa sổ này là một
trong nhiều cửa sổ talk của lớp chính, tên của cửa sổ là tên của ngƣời đƣợc chọn trên
danh mục, form này chứa một textfield để nhập nội dung thông tin cần trao đổi, khi
ngƣời dùng nhấn gửi thông điệp này sẽ đƣợc append ngay vào form và chuỗi url đƣợc
thay đổi cùng với cờ trạng thái đƣợc bật. Địa chỉ url đó là địa chỉ trỏ đến trang servlet
phục vụ nhu cầu gửi thông điệp từ client lên server. Nếu thông điệp là hợp lệ, nội dung
thông điệp sẽ đƣợc lƣu vào bảng message trong CSDL, cho đến khi ngƣời đƣợc nhận nó
đăng nhập và truy xuất nó.
Lớp chính của chƣơng trình sở hữu một mảng các cửa sổ này, và một biến đếm,
nếu một cửa sổ trò chuyện mới đƣợc tạo ra thì biến đếm sẽ tăng lên. Còn nếu không
chƣơng trình sẽ so sánh giữa tên ngƣời đƣợc chọn trong danh sách, với tên của các form
đã đƣợc tạo ra, kết quả là vị trí của form tƣơng ứng trong mảng, giá trị đó đƣợc lƣu vào
một biến kiểu int, dùng để hiển thị chính xác form trò chuyện mà ngƣời dùng cần.
Việc dùng form làm cửa sổ trò chuyện rất có lợi, vì khi form chƣa bị hủy nó sẽ
luôn lƣu lại các item đã đƣợc append vào đó. Do vậy dù chƣơng trình luôn thay đổi form
hiển thị, khi quay trở lại nội dung cuộc trò chuyện vẫn không bị mất đi.
2.3. Các servlet phía server
Đầu tiên, server cần một lớp chung để xử lý việc kết nối và truy xuất đến cơ sở
dữ liệu. Việc cài đặt sẵn lớp này sẽ khiến việc cài đặt các servlet trở nên tƣờng minh.
Lớp này cũng rất đơn giản, nó cần có chức năng kết nối, cập nhật, sửa đổi, thêm, xóa
các bản ghi trong các bảng trong CSDL, ngoài ra cần phải có các chức năng so sánh để
phục vụ cho mục đích khẳng định tính đúng đắn của dữ liệu mà client gửi lên server.
Các servlet nói chung đều gần giống nhau, đầu tiên là phải có một đối tƣợng
truy xuất CSDL nhƣ trên. Trong hàm doGet() là hàm xử lý các yêu cầu phía client, lúc
nào cũng là những dòng lệnh kiểm tra tính đúng đắn của các tham số truyền lên, sau đó
mới thực hiện phục vụ client.
Servlet login: nhận yêu cầu đăng nhập từ client. Tham số truyền lên là username

và password. Nếu so sánh thấy đúng thì tiếp tục thực hiện, còn sai phải thông báo lại
client. Tiếp đó là kiểm tra xem trạng thái của tài khoản đó, nếu đã login rồi thì không
đƣợc phép login nữa và trả về thông báo. Nếu hoàn toàn thỏa mãn điều kiện thì tiến
hành sửa đổi lại trạng thái cho tài khoản đó là “on” thay vì “off”. Thông tin phản hồi là
danh sách bạn bè của tài khoản này lấy từ bảng friend và các tin nhắn offline lấy từ
14


bảng message. Các record sẽ đƣợc nối lại với nhau trƣớc khi truyền theo đúng quy cách
đã đƣợc giới thiệu ở trên.
Servlet logoff cũng tƣơng tự nhƣ vậy, cũng chỉ gồm hai tham số nhƣ servlet
logoff. Mọi công việc tƣơng tự chỉ có điều là bây giờ phải đổi từ “on” sang “off”.
Không có thông tin gì để trả lại cho client trong servlet này cả, trừ thông báo lỗi.
Servlet getFriends để lấy lại các thông tin phàn hồi tƣơng tự nhƣ servlet login,
nó hoàn toàn tƣơng tự login, chỉ khác là lúc này tài khoản đã đăng nhập rồi và client
đang yêu cầu thông tin để cập nhập chứ không phải để login.
Các servlet khác cũng có các kiểm tra tham số ban đầu tƣơng tự nhƣ servlet
login, ngoài ra còn bao gồm những kiểm tra dữ liệu riêng.
Nhƣ servlet add, để thêm bạn, tên ngƣời cần thêm phải có trong bảng user, cho
nên cần phải có thêm dòng mã kiểm tra tham số tƣơng ứng, nếu hợp lệ thì mới đƣợc
thêm vào, ngƣợc lại sẽ trả lại cảnh báo.
Còn servlet recieveMe, là servlet để nhận thông điệp đƣợc gửi giữa các server,
servlet sẽ lƣu lại trong CSDL cho đến khi đƣợc lấy ra, nó sẽ bị xóa. Servlet này cần thêm
thông điệp vào bảng message, và kiểm tra ngƣời gửi ngƣời nhận có hợp lệ hay không.
Vì mục tiêu của bài toán không đƣợc đặt vào servlet, cho nên server đƣợc thiết
kế an toàn, nhƣng sự thành công của nó có sức ảnh hƣởng lớn đến bài toán, nên dù đơn
giản nhƣng vẫn đảm bảo tính tiện dụng và an toàn.
2.4. Biểu đồ lớp
Dựa vào các biểu đồ trình tự ta có thể nhìn thấy đƣợc phần lớn các lớp cần
xây dựng của chƣơng trình, một lớp chính là một ứng dụng midlet, các lớp form

để phục vụ các chức năng khác nhau của ngƣời dùng, login, logout, talk, show
friend list…Và một vài lớp phụ phục vụ cho các phƣơng thức của lớp chính nhƣ:
kết nối với server, lƣu trữ dữ liệu, xử lý dữ liệu và chuẩn hóa xâu.
Các lớp của chƣơng trình đƣợc mô tả trong biểu đồ lớp dƣới đây, biểu đồ
này chỉ tập trung vào các lớp chính quan trọng, các hàm và thuộc tính của lớp
cũng là các thuộc tính và phƣơng thức trọng tâm, còn trên thực tế để chƣơng trình
có thể hoạt động đƣợc, cần có rất nhiều xử lý phụ, các biến tạm để phục vụ cho
những hàm chính của lớp có thể đáp ứng tốt các nhu cầu của ngƣời dùng mà
không vấp phải những lỗi thông thƣờng về dữ liệu, về những thao tác không chính
xác của ngƣời sử dụng.

15


Hình 10:
Biểu đồ lớp
Lớp main là lớp chính, nơi xử lý mọi hoạt động, mọi sự thay đổi của chƣơng
trình, nơi quyết định form nào sẽ đƣợc hiển thị, chuỗi url nào sẽ đƣợc gửi đi, đây cũng là
lớp sẽ tiến hành định cập nhập lại các thông tin cần thiết, nên cần phải có đối tƣợng
connect để kết nối, sau đó sẽ lấy lại kết quả, lƣu trữ và xử lý kết quả này bằng đối tƣợng
record. Hệ thống đƣợc thiết kế là một tập hợp các form tƣơng ứng với các yêu cầu của
ngƣời dùng, do đó nhƣ trên biểu đồ lớp, thuộc tính của lớp chính là các lớp con của lớp
form, khi ngƣời dùng yêu cầu chức năng gì thì lớp chính sẽ cho hiển thị form tƣơng ứng
với yêu cầu đó. Các lớp form này đều có thuộc tính là một midlet, tức là lớp chính, sở dĩ
cần thuộc tính này là vì các lớp form cần trao đổi thông điệp với nhau, gọi đến thuộc tính
của nhau trong khi chúng lại cùng là thuộc tính của lớp chính, hơn nữa lớp chính cần
phải cập nhập đƣợc thông tin thay đổi từ các lớp form để xử lý. Các lớp này cũng đều
chứa thuộc tính chuỗi url nhƣ lớp chính, khi ngƣời dùng hoạt động với form nào thì
chuỗi url của form đó sẽ đƣợc phát sinh, cờ tƣơng ứng của form cũng đƣợc bật, sự thay
đổi này sẽ đƣợc truyền cho lớp chính nhờ thuộc tính midlet. Từ đó các yêu cầu sẽ đƣợc

đáp ứng nhờ việc kết nối với server theo chuỗi url của lớp chính.
16


GIỚI THIỆU VỀ CHƢƠNG TRÌNH VÀ CÁC CÔNG CỤ XÂY
DỰNG CHƢƠNG TRÌNH
1. Các công cụ xây dựng chƣơng trình
Để xây dựng chƣơng trình các công cụ sau đƣợc sử dụng:
- Chƣơng trình trên Client (trên điện thoại di động) đƣợc xây dựng bằng J2ME:
J2ME là một phiên bản của JAVA, đƣợc xây dựng để đƣa sức mạnh lập trình của JAVA
đến với các thiết bị cầm tay, hiện nay J2ME là một ngôn ngữ rất phổ biến để lập trình
trên điện thoại di động.
- Chƣơng trình trên Server đƣợc xây dựng bằng Servlet của JAVA: Servlets là tập
mã lệnh java đƣợc chạy trên ứng dụng web (do đó tên Servlets, tƣơng tự nhƣ Applets
phía client) để trả lời những yêu cầu từ phía client. Servlets sử dụng các chuẩn mở rộng
của java nhƣ class trong gói javax.servlet và javax.servlet.http.
- Server chạy trên trình chủ Tomcat: Tomcat là trình chủ mã nguồn mở
Webserver hỗ trợ Java rất nổi tiếng. Có thể download miễn phí tại mã nguồn và bộ cài
TomCat tại địa chỉ .
- Cơ sở dữ liệu đƣợc dùng là hệ quản trị SQL SERVER 2000

2. Giới thiệu chƣơng trình
Các chức năng chính của chƣơng trình chat:
 Đăng nhập
 Đăng xuất
 Hiển thị danh sách bạn bè với trạng thái nhập/xuất
 Hiển thị tin nhắn offline
 Thêm bạn bè vào danh sách
 Chat với nhiều ngƣời
Mặc dù chƣơng trình còn nhiều hạn chế, tuy nhiên đã hoàn thành căn bản những

yêu cầu của đề tài đặt ra, các chức năng và giao diện khá giống với các chƣơng trình chat
đang phổ biến nhƣ yahoo, với một danh sách bạn bè luôn đƣợc cập nhật trạng thái
nhập/xuất, ngƣời dùng có thể chọn bất cứ thành viên vào trong danh sách để trò chuyện,
mỗi một ngƣời mà ngƣời dùng trò chuyện sẽ có một cửa sổ riêng để có thể giao lƣu với
nhiều ngƣời trong cùng một lần đăng nhập. Những thông điệp gửi tới các thành viên
đang offline sẽ đƣợc lƣu vào danh sách tin nhắn offline của ngƣời đó. Từ các cửa sổ
17


khác nhau ngƣời dùng hoàn toàn có thể quay lại và chuyển sang cửa sổ khác một cách
rất dễ dàng và tiện dụng. Chi tiết về các chức năng và giao diện của chƣơng trình sẽ
đƣợc mô tả chi tiết trong các mục sau.

3. Các chức năng của chƣơng trình
Ngay sau khi khởi động chƣơng trình giao diện nhƣ hình 1 sẽ hiện lên, ngƣời
dùng nhập thông tin là username và password vào ô văn bản tƣơng ứng và nhấn nút
login để đăng nhập:

Hình 11:
Giao diện ban đầu của chương trình
Sau đó, nếu ngƣời dùng nhập sai username hay password hoặc tài khoản đó đã có
ngƣời đang sử dụng rồi, thì chƣơng trình sẽ hiện cảnh báo và yêu cầu ngƣời dùng nhập
lại cho đến khi tài khoản nhập vào là hợp lệ: đúng username, password và chƣa có ngƣời
đang sử dụng tài khoản đó (hình 2). Nếu tài khoản hợp lệ, chƣơng trình sẽ cho phép
ngƣời dùng login và hiện ra một cửa sổ, nơi hiển thị danh sách bạn bè với trạng thái
nhập/xuất kèm theo và các chức năng của chƣơng trình (hình 3).

18



Hình 12:
Tài khoản không hợp lệ
Giao diện chính của chƣơng trình - cửa sổ hiện danh sách bạn bè với trạng thái
nhập/xuất và một menu chứa các chức năng của chƣơng trình:

Hình 13:
Giao diện chính của chương trình

19


Nhấn vào nút menu trên giao diện chính, ngƣời dùng có thể thấy danh sách các
chức năng của chƣơng trình:
 Offline message: nhấn vào đây để xem các tin nhắn offline
 Addfriend: thêm bạn mới
 Talk: chọn một ngƣời trong danh sách sau đó nhấn tùy chọn này để bắt đầu
trò chuyện.
 Tùy chọn logoff bên trái cho phép ngƣời dùng đăng xuất khỏi chƣơng trình.
Trong đó mỗi khi ngƣời dùng chọn một mục trên menu, chƣơng trình sẽ cho hiển
thị một cửa sổ riêng thực thi chức năng đã đƣợc chọn đó. Các chức năng đều có
thiết kế tƣơng tự nhau, đều gồm hai nút nhấn, một để thực hiện công việc và một
để quay lại giao diện chính.

Hình 14:
Các cửa sổ chức năng
Chức năng talk: ngƣời dùng có thể dùng nút back để quay lại và chọn một ngƣời
khác để trò chuyện, khi ngƣời dùng quay lại nói chuyện với những ngƣời trƣớc
đó, nội dung cuộc trò chuyện vẫn đƣợc giữ nguyên, những tin nhắn vẫn luôn
đƣợc cập nhật trong lúc ngƣời dùng rời khỏi cửa sổ đó.


20



×