1. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
HỆ CHÍNH QUI
MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
GVLT: TS. ĐINH BÁ TIẾN
HƯỚNG DẪN THỰC HÀNH
TUẦN 08
THÀNH PHẦN TĨNH – CƠ CHẾ XỬ LÝ LỖI
TRẦN THANH HẢI
HỒ TUẤN THANH
TP.HCM, ngày 14 tháng 11 năm 2012
2. tthai/htthanh@fit.hcmus.edu.vn
Trang 2
MỤC LỤC
1 Thành phần tĩnh ............................................................................................................3
1.1 Giới thiệu ...............................................................................................................3
1.2 Lưu ý......................................................................................................................3
1.3 Bài tập ....................................................................................................................3
2 Cơ chế xử lý lỗi.............................................................................................................5
2.1 Bài tập ....................................................................................................................5
3 Kế thừa..........................................................................................................................6
3. tthai/htthanh@fit.hcmus.edu.vn
Trang 3
1 Thành phần tĩnh
1.1 Giới thiệu
Một lớp sẽ có 2 thành phần:
Các thuộc tính của lớp đó
Các phương thức của lớp đó
Khái niệm thuộc tính tĩnh (static attribute) dùng để thay thế khái niệm biến toàn cục
(global variable) trong lập trình thủ tục thông thường.
Dĩ nhiên, khi lập trình hướng đối tượng trong ngôn ngữ C++, ta vẫn có quyền khai báo
biến toàn cục. Tuy nhiên, xét trường hợp ta muốn khai báo một biến toàn cục, nhưng chỉ
có ý nghĩa trong class A. Nếu ta khai báo biến đó là biến toàn cục thì rõ ràng, bất kì hàm
nào trong class A cũng có thể thay đổi giá trị của biến đó. Không những thế, bất kì hàm
nào không thuộc class A cũng có thể thay đổi giá trị của biến toàn cục đó, làm cho biến
đó bị sai. Do đó, ta có thể khai báo biến đó là thuộc tính tĩnh của class A.
Ngoài thuộc tính tĩnh, trong một lớp ta cũng có thể khai báo thuộc tính tĩnh.
1.2 Lưu ý
Trong các ngôn ngữ lập trình thuần hướng đối tượng như C++, Java, tất cả các biến mà ta
muốn khai báo đều phải nằm trong một hàm nào đó (biến cục bộ) hoặc nằm trong một
class nào đó (thuộc tính). Do đó, nếu muốn khai báo biến toàn cục, hãy nghĩ đến việc
khai báo thuộc tính tĩnh trong class nào đó
Trong một class, nếu một phương thức không hề thao tác với thuộc tính không tĩnh nào
của class đó, ta có thể để phương thức đó là phương thức tĩnh của class
Trong phương thức tĩnh, ta không thể truy xuất đến các thuộc tính không tĩnh trong class
đó.
1.3 Bài tập
1. Hãy khai báo lớp Random cung cấp các hàm sau:
Phát sinh số nguyên ngẫu nhiên đoạn [0, n) với n là số nguyên
Phát sinh số nguyên ngẫu nhiên trong đoạn [a, b] với a, b là số nguyên và a<=b
Yêu cầu: sử dụng phương thức tĩnh
2. Hãy khai báo lớp Math cung cấp các hàm sau:
4. tthai/htthanh@fit.hcmus.edu.vn
Trang 4
Tính sin
Tính cos
Tính tan
Tính cotan
Tính trị tuyệt đối
Tính căn bậc 2
Tính căn bậc 3
Tính căn bậc n
Tính x^n
Yêu cầu: sử dụng phương thức tĩnh
3. Hãy khai báo lớp Utility cung cấp hàm sau:
Tìm ước chung lớn nhất 2 số nguyên dương
Tìm bội chung nhỏ nhất 2 số nguyên dương
Kiểm tra số nguyên dương x có phải là số nguyên tố không
Kiểm tra số nguyên dương x có phải là số chính phương không
Kiểm tra số nguyên dương x có phải là số hoàn thiện không
Đổi một số từ độ sang radian
Đổi một số từ radian sang độ
Đổi từ m sang mm
Đổi từ mm ra m
Đổi từ km ra m
Đổi từ m ra km
Đổi từ kg ra g
Đổi từ g ra kg
Đổi từ m ra foot
Đổi từ foot ra m
Đổi từ inch ra mm
Đổi từ mm ra inch
Đổi từ gallon ra lít
Đổi từ lít ra gallon
Đổi từ dặm ra km
Đổi từ km ra dặm
Đổi từ yard ra m
Đổi từ m ra yard
Đổi từ km/h ra m/s
Đổi từ m/s ra km/h
5. tthai/htthanh@fit.hcmus.edu.vn
Trang 5
4. Thông tin nhân viên gồm: số cmnd, họ tên, địa chỉ, năm sinh. Viết 2 hàm nhập và xuất
thông tin nhân viên. Biết rằng công ty chỉ nhận nhân viên từ 18 tuổi đến 35 tuổi. Hãy
sử dụng thuộc tính tĩnh lưu tuổi tối thiểu và tuổi tối đa.
5. Thông tin của một sinh viên gồm: mssv, họ tên, điểm thực hành, điểm lí thuyết. Viết 5
hàm: nhập, xuất, tính điểm môn học, xét đậu rớt và xếp loại sinh viên đó. Biết rằng:
Điểm môn học = 60% lí thuyết và 40% thực hành
Xếp loại sinh viên (xuất sắc, giỏi, khá, trung bình khá, trung bình, yếu): dựa vào
thang điểm mà trường ta đang áp dụng.
Yêu cầu: sử dụng thuộc tính tĩnh lưu tỉ lệ thang điểm (60%, 40%, …), lưu mức điểm ứng
với mức xếp loại (8.0 cho loại giỏi, …)
2 Cơ chế xử lý lỗi
2.1 Bài tập
Trong các bài tập 1, 2, 3, 4, với mỗi exception, sinh viên hãy xây dựng một class kế thừa
class exception trong thư viện chuẩn của C++
1. Trong lớp PhanSo có các hàm:
Nhập
Xuất
Cập nhật tử
Cập nhật mẫu
Chia 2 phân số
Đọc từ file
Ghi xuống file
Hãy áp dụng cơ chế xử lý lỗi vào các hàm này
2. Trong lớp Ngay có các hàm sau:
Nhập
Xuất
Cập nhật ngày
Cập nhật tháng
Cập nhật năm
Đọc từ file
Ghi xuống file
6. tthai/htthanh@fit.hcmus.edu.vn
Trang 6
Hãy áp dụng cơ chế xử lý lỗi vào các hàm này
3. Trong lớp mảng số nguyên có các hàm sau:
Nhập
Xuất
Thêm phần tử x vào vị trí k
Xóa phần tử tại k
Trả về phần tử vị trí k
Cập nhật phần tử vị trí k
Hãy áp dụng cơ chế xử lý lỗi vào các hàm này
4. Hãy áp dụng cơ chế xử lý lỗi vào bài tập đọc thông tin từ file svg và vẽ hình sử dụng
GDI+
5. Nếu trong constructor của một lớp xảy ra exception thì destructor của class đó có
được gọi hay không? Viết một đoạn code minh họa.
6. Cho biết cơ chế two-stage construction là gì? Viết một đoạn code minh họa.
7. Cho biết kết quả thực hiện đoạn chương trình sau:
3 Kế thừa
Thông tin của một giáo viên gồm: họ tên, địa chỉ, hệ số lương, số tiết dạy
Giáo viên chủ nhiệm làm công việc của một giáo viên và ngoài ra còn phải làm chủ
nhiệm một lớp.
Biết rằng:
7. tthai/htthanh@fit.hcmus.edu.vn
Trang 7
Lương giáo viên = hệ số lương * lương cơ bản + số tiết dạy * 60.000
Lương giáo viên chủ nhiệm = hệ số lương * lương cơ bản + số tiết dạy * 60.000 +
500.000 (tiền chủ nhiệm một lớp)
Hãy viết các hàm sau:
Lớp giáo viên:
o Hàm dựng mặc định
o Hàm dựng đầy đủ tham số
o Hàm dựng sao chép
o Toán tử gán bằng
o Hàm hủy
o Nhập
o Xuất
o Tính lương
Lớp giáo viên chủ nhiệm:
o Hàm dựng mặc định
o Hàm dựng đầy đủ tham số
o Hàm dựng sao chép
o Toán tử gán bằng
o Hàm hủy
o Nhập
o Xuất
o Tính lương
Yêu cầu:
Sử dụng kiểu dữ liệu char * để lưu chuỗi
Sử dụng thuộc tính tĩnh/phương thức tĩnh