Các đối tượng có trạng thái và hành vi. Hành vi tồn tại trong các lớp, còn trạng thái tồn tại trong mỗi đối tượng cụ thể. Trong nhiều trường hợp chúng ta cần phải lưu lại
75
trạng thái của một đối tượng để đến một lúc nào đó ta khôi phục lại. Ví dụ khi ta đang chơi game, ta có thể lưu lại trạng thái của các nhân vật. Sau đó, khi ta quay lại chơi tiếp game đó thì các trạng thái của nhân vật được lấy lại như lúc trước khi lưu. Trong Java cung cấp hai cách để lưu các đối tượng:
- Cách thứ nhất là chúng ta sẽ lưu giá trị của các trạng thái vào một file theo định dạng quy định. Khi khôi phục lại trạng thái đối tượng, ta sẽ đọc ra các giá trị đó và gán tương ứng vào các biến của đối tượng. Với cách này, ta sẽ dùng một file dạng text với cú pháp được quy định để lưu các giá trị trạng thái và như vậy các chương trình khác ngoài Java cũng có thể đọc được các giá trị của trạng thái. Ví dụ :
Với cách này, khi đọc dữ liệu dễ mắc phải lỗi đọc nhầm giữa các trường hoặc các dòng. Khi đó, chương trình dễ bị lỗi hoặc trạng thái của đối tượng không được khôi phục lại như ban đầu. Vì vậy, cách này ít được dùng để ghi/đọc trạng thái của đối tượng.
- Cách thứ hai là chúng ta ‘‘nén’’ đối tượng đó lại và ‘‘giải nén’’ đối tượng khi cần sử dụng trở lại. Với cách này, các chương trình khác ngoài Java khó có thể đọc được nội dung của file. Cách này được gọi là chuỗi hóa (serialization) đối tượng. Ví dụ :
Tuy nhiên không phải đối tượng nào cũng có thể chuỗi hóa được. Để đối tượng thuộc một lớp nào đó có thể chuỗi hóa được, ta phải cho lớp đó triển khai lớp giao diện Serializable. Lớp Serializable không có phương thức nào để cài đè. Mục đích của lớp này là để khai báo rằng lớp triển khai nó có thể chuỗi hóa được. Nếu một lớp chuỗi hóa được thì các lớp con của nó đều tự động chuỗi hóa được mà không cần phải khai báo lại.
76
78
BÀI TẬP CHƯƠNG 4
Bài 1: Viết giao diện cho phép người dùng nhập họ tên, mã sv, tuổi sinh, lớp sinh viên.
- Ghi danh sách sv ra file sinhvien.dat
- Cho phép người dùng tìm theo tên của sinh viên
Bài 2: Viết một ứng dụng quản lý sinh viên có giao diện như sau:
Ứng dụng có các chức năng:
- Cho phép người dùng nhập tên và tuổi sinh viên. Sau đó lưu ra file “sinhvien.txt”
khi người dùng chọn nút “Save”.
- Người dùng có thể xem danh sách sinh viên vừa nhập bằng cách chọn nút “Open”.
- Người dùng có thể tìm sinh viên bằng cách nhập tên sinh viên. Chương trình in ra tên và tuổi của sinh viên được tìm thấy.
79
CHƯƠNG 5. XỬ LÝ NGOẠI LỆ TRONG JAVA