Tài liệu thực hành Lập trình hướng đối tượng - Lab 14: Thao tác với tập tin

Lập trình hướng đối tượng  
Thao tác với tập tin  
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG  
HƯỚNG DẪN THỰC HÀNH  
Luyện tập với file – getter – đa hình  
Giáo viên lý thuyết:  
ThS Lê Xuân Định  
Giáo viên thực hành:  
ThS Lê Xuân Định  
ThS Trần Huy Quang  
ThS Trần Duy Quang  
Trần Minh Khoa  
1/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
1 Mục tiêu  
- Làm quen với các luồng nhập xuất tập tin văn bản.  
- Viết lớp đơn giản nhất có construct và getter.  
- Ứng dụng tính đa hình để quản lý chung các đối tượng thuộc các lớp khác nhau.  
2 Tập tin trong C++  
C++ xem tập tin là một chuỗi tuần tự các byte (còn được gọi là dòng dữ liệu – stream). Một tập tin sẽ  
kết thúc với một kí tự đánh dấu end-of-file hoặc tùy thuộc vào cấu trúc dữ liệu của hệ điều hành biểu  
diễn tập tin.  
Hình 1 – Góc nhìn của C++ đối với một tập tin n byte [1]  
Hình 2 – Một phần cấu trúc phân cấp của cây kế thừa theo mẫu nhập xuất [1]  
2/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
Tutorial 1: Làm quen với việc ghi dữ liệu ra tập tin text.  
Yêu cầu: Viết chương trình nhập vào thông tin ngân hàng của 5 khách hàng, lưu vào tập tin clients.txt.  
Thông tin của mỗi khách hàng được lưu trên từng dòng.  
Mô tả định dạng của tập tin clients.txt cần tạo ra  
5
Có 5 khách hàng trong tập  
tin này  
100  
15000000  
–
Đỗ Nguyên Kha  
Đặng Hoàng Hải  
Trương Phước Lộc  
–
–
–
Thông tin khách hàng thứ  
nhất  
200  
75950000  
–
300  
–
90000000  
400 – Bùi Tấn Lộc – 78000000  
500 Trần Minh Triết  
–
-
300000000  
Biết rằng thứ tự lưu trữ là:  
+ Mã khách hàng: chuỗi có độ dài cố định 3 kí tự.  
+ Tên khách hàng: chuỗi có độ dài tối đa 25 kí tự.  
+
Số tiền đang có: số nguyên. Có thể âm, dương hoặc  
=
0
3/10  
Lập trình hướng đối tượng  
Chi tiết mã nguồn như sau  
Thao tác với tập tin  
Mã nguồn hàm main  
4/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
Lớp Client lúc này có thể cài đặt như sau:  
5/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
Những điểm cần chú ý của mã nguồn trên:  
1. Duyệt qua danh sách đối tượng  
Trong hàm main dòng 55 là kĩ thu ật duyệt đối tượng có từ C++11. Sử dụng từ khóa auto để cho trình  
biên dịch tự động suy ra kiểu của đối tượng, sử dụng & để lấy tham chiếu đến nhằm tránh tạo bản sao  
khi duyệt qua đối tượng.  
2. Chuyển đối tượng sang chuỗi  
Sử dụng stringstream có điểm đặc biệt là giống với cout, dùng chung toán tử, nhưng viết biến ra một  
stream riêng, khi cần xuất ra tập tin thì chuyển sang chuỗi với hàm str() (mã nguồn lớp client dòng 27).  
Tutorial 2: Làm quen với việc đọc tập tin text.  
Yêu cầu: Viết chương trình đ ọc thông tin ngân hàng của các khách hàng trong tập tin và hiển  
thị ra màn hình.  
Mô tả cách thức tổ chức của tập tin clients.txt cần đọc  
5
Có 5 khách hàng trong  
tập tin này  
100 – Đỗ Nguyên Kha –  
15000000  
Thông tin khách hàng thứ  
nhất  
200 – Đặng Hoàng Hải – -  
75950000  
Khách hàng này có số  
tiền âm!!!  
300 – Trương Phước Lộc –  
90000000  
400 – Bùi Tấn Lộc – 0.0  
Khách hàng này ko có  
tiền  
500 – Trần Minh Triết - -  
300000000  
Khách hàng này có số  
6/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
tiền âm!!!  
Mã nguồn chi tiết của chương trình như sau  
+ Mã nguồn hàm main  
7/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
+ Lớp Client cần bổ sung hàm Parse như sau:  
Một số vấn đề cần chú ý từ mã nguồn trên  
Cách tách chuỗi  
Sử dụng hàm find của std::string để tìm vị trí chuỗi con xuất hiện đầu tiên, sau đó tạo ra chuỗi  
con từ các thông tin có được và đưa vào một vector tokens.  
8/10  
Lập trình hướng đối tượng  
Thao tác với tập tin  
Tiếp theo, cập nhật vị trí cần tìm ban đầu và lần lượt cho các chuỗi con tìm thấy vào vector  
tokens.  
Cần chú ý là chuỗi con cuối cùng cần phải được xử lí riêng.  
Chuyển chuỗi sang số  
Hai hàm chuyển cơ bản là stoi – chuyển chuỗi sang số nguyên và stod – chuyển chuỗi sang số  
thực.  
3 Bài tập cá nhân  
Năm 2030, loài người đã có những bước tiến đáng kể trong việc chinh phục không gian.  
Nối tiếp sau sự kiện đưa tàu thăm dò Curiosity lên sao H ỏa vào năm 2014, con người  
phái tiếp tàu mẹ Mothership tới nơi này với mục đích xây dựng căn cứ và tạo môi trường  
thích hợp cho loài người sinh sống ở đây vào năm 2040.  
Hàng ngày, sử dụng công nghệ in 3D, tàu mẹ nhận lệnh từ căn cứ ở Trái Đất và tạo ra các  
robot phục vụ những công việc nhất định tại sao Hỏa. Có 3 loại robot được sử dụng chủ  
yếu.  
• Alpha: Robot công phá, sử dụng năng lượng mặt trời để di chuyển, mỗi 1km sử  
dụng 100 W năng lượng, dùng năng lượng nhiệt hạch để phá đá. Để tạo ra cần  
5000 J năng lượng, 4 kg vàng, 2 kg sắt, chế tạo trong 2h.  
• Beta: Robot vận chuyển, sử dụng năng lượng mặt trời để di chuyển, mỗi 1km sử  
dụng 200 W năng lượng. Mỗi robot beta có thể vận chuyển tối đa 50kg đất đá. Để  
tạo ra cần 4000 J năng lượng, 6 kg vàng, không cần sắt, chế tạo trong 3h.  
• Omega: Robot xây dựng, không có khả năng di chuyển, mỗi khi di chuyển phải  
nhờ tới robot Beta. Mỗi h làm việc tốn 300 W năng lượng. Để tạo ra cần 6000 J  
năng lượng, 10 kg sắt, không cần vàng, chế tạo trong 15h.  
Cuối mỗi ngày, Mothership sẽ gởi thông tin tiêu tốn các tài nguyên của mình dùng trong  
chế tạo robot về căn cứ ở Trái Đất để Bộ chỉ huy quyết định phương án tiếp tế tài nguyên.  
Sử dụng phương pháp lập trình hướng đối tượng, hãy viết chương trình trợ giúp  
tàu mẹ Mothership làm các việc như sau:  
9/10  
Lập trình hướng đối tượng  
Hướng dẫn thực hành  
1. Đọc danh sách các robot cần phải chế tạo từ tập tin (xem bên dưới) và tạo ra các  
robot tương ứng.  
2. Thống kê đã tạo ra tổng cộng bao nhiêu robot, và bao nhiêu con mỗi loại.  
3. Thống kê tổng năng lượng đã tiêu thụ, tổng thời gian đã sử dụng để chế tạo toàn  
bộ các robot.  
4. Ứng với mỗi loại tài nguyên vàng, sắt, thống kê tổng khối lượng đã sử dụng tương  
ứng.  
5. Cho tất cả những robot Alpha và robot Beta di chuyển 10 km. Thống kê tổng năng  
lượng các robot đã tiêu thụ cho việc di chuyển.  
Lưu ý:  
• Vì lí do hỏng hóc của bộ xử lí trung tâm trong quá trình hạ cánh, tàu mẹ  
Mothership không thể thực hiện được phép tính nhân. (Chỉ sử dụng phép cộng  
và phép đóng gói đối tượng.)  
• Tuy mỗi loại robot có cấu trúc dữ liệu và hành động khác nhau, nhưng tàu mẹ chỉ  
được quyền tạo ra một danh sách robot mà thôi.  
• Để kiểm tra loại robot, C++ dùng toán tử typeid để kiểm tra kiểu (lớp), VD  
“typeid(*robot)==typeid(Alpha)”. Để sử dụng 1 robot với giao diện cụ  
thể, C++ dùng toán tử ép kiểu từ giao diện tổng quát, VD “Alpha* a =  
dynamic_cast <Alpha*>(robot)”  
Tập tin input mẫu: Dòng đầu cho biết tổng số robot, các dòng còn lại lần lượt là loại  
robot phải tạo ra.  
7
Beta  
Omega  
Alpha  
Beta  
Beta  
Omega  
Alpha  
10  
pdf 10 trang myanh 24120 Free
Bạn đang xem tài liệu "Tài liệu thực hành Lập trình hướng đối tượng - Lab 14: Thao tác với tập tin", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_thuc_hanh_lap_trinh_huong_doi_tuong_lab_14_thao_tac.pdf