Lập trình hướng đối tượng với NET & c# chuong7 bai tap
Trang 1BÀI TẬP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NET
Trình độ đào tạo
Hệ đào tạo
: :
Đại học
Chính quy
MỤC LỤC
BÀI THỰC HÀNH 1 Lớp và đối tượng 2
BÀI THỰC HÀNH 2 Lớp và đối tượng(tiếp) 4
BÀI THỰC HÀNH 3 Kế thừa và đa hình 6
BÀI THỰC HÀNH 4 Kế thừa và đa hình(tiếp) 7
BÀI THỰC HÀNH 5 Kế thừa và đa hình(tiếp) 11
BÀI THỰC HÀNH 6 Giao diện 13
Trang 2BÀI THỰC HÀNH 1 Lớp và đối tượng
* Mục tiêu
- Khai báo lớp và đối tượng
- Sử dựng các từ khóa đặc tả truy cập public, private, protetecd …
- Xây dựng phương thức khởi tạo
- Sử dụng đối tượng this
Bài 1: Cho thiết kế lớp Employee (nhân viên) như sau:
Các thành phần dữ liệu:
id: Định danh, kiểu int Định danh này được sinh tự động và tăng dần bắt đầu từ 1 name: Họ tên nhân viên, kiểu String
yearOfBirth: Năm sinh nhân viên, kiểu int
salaryLevel: Bậc lương, kiểu double
basicSalary: Lương cơ bản, kiểu double (Chú ý lương cơ bản là thuộc tính được sử dụng
chung cho mọi đối tượng của lớp Employee)
Các phương thức:
GetId( ): trả lại định danh của nhân viên
GetName( ): trả lại tên của nhân viên
GetYearOfBirth( ): trả lại năm sinh của nhân viên
GetIncome( ): trả lại thu nhập của nhân viên Thu nhập được tính bằng bậc lương nhân
lương cơ bản (salaryLevel * basicSalary)
Input(): nhập thông tin nhân viên
Display( ): hiển thị thông tin về nhân viên Bao gồm các thông tin: định danh, tên, năm
sinh, lương cơ bản, thu nhập
SetSalaryLevel( ): thiết lập bậc lương cho nhân viên
SetBasicSalary( ): thiết lập lương cơ bản
Hãy viết chương trình cài đặt lớp Employee và lớp sử dụng Employee
Bài 2: Xây dựng lớp Stack để mô phỏng một stack bao gồm
- Phương thức khởi tạo không tham số với việc khởi tạo stack ngầm định có 20 phần tử và stack rỗng
- Phương thức khởi tạo một tham số với việc khởi tạo số phần tử của stack được truyền vào thông qua đối số của phương thức và stack rỗng
- Phương thức IsEmpty kiểm tra xem stack có rỗng không
- Phương thức IsFull kiểm tra xem stack có đầy không
- Phương thức Push và Pop để thêm vào, lấy ra một phần tử
Hãy viết chương trình cài đặt lớp Stack và lớp sử dụng Stack
Bài 3: Xây dựng lớp ComplexNumber biểu diễn số phức với các yêu cầu sau:
- Thuộc tính:
+ Phần thực
+ Phần ảo
Trang 3- Phương thức:
- Phương thức thiết lập 2 tham số tương ứng với phần thực và phần ảo
- Hiển thị một số phức ra màn hình
- Thực hiện các phép toán cộng số phức
- Thực hiện các phép trừ hai số phức
Hướng dẫn:
Trong lớp ComplexNumber khi xây dựng phương thức cộng, trừ hai số phức cần chú ý
các vấn đề như sau:
- Mỗi số phức z đều được biểu diễn duy nhất dưới dạng:
z = a + b.i
trong đó a, b là các số thực và a gọi là phần thực, b gọi là phần ảo Dạng biểu diễn này được gọi
là dạng đại số của số phức z
- Với cách biểu diễn dưới dạng đại số, phép cộng và nhân các số phức được thực hiện như
phép cộng và nhân các nhị thức bậc nhất với lưu ý rằng i 2 = –1 Như vậy, ta có:
(a + b.i) + (c + d.i) = (a + c) + (b + d).i (a + b.i)(c + d.i) = (a.c - b.d) + (b.c + a.d).i
Bài 4: Viết chương trình chuyển một số từ hệ cơ số 10 sang hệ cơ đếm cơ số 16 bằng cách sử
dụng phép toán chia liên tiếp
Hướng dẫn:
- Xây dựng một lớp stack
- Xây dựng lớp Hexa lớp này gồm
+ Các thành phần dữ liệu:
n: một số nguyên ở hệ đếm cơ số 10 s: một đối tương stack
+ Các phương thức: Nhập dữ liệu, chuyển cơ số, hiện thị kết quả
Bài 5: Xây dựng lớp Phân Số biểu diễn một phân số bao gồm:
+ Các thuộc tính
- Tử số
- Mẫu số
+ Các phương thức sau cho lớp
- Phương thức khởi tạo không có tham số, tạo phân số có tử = 0, mẫu =1
- Phương thức khởi tạo có tham số
- Phương thức khởi tạo sao chép
- Phương thức cộng, trừ, nhân, chia phân số này với một phân số khác
- Phương thức kiểm tra hai phân số có bằng nhau không
- Phương thức rút gọn phân số: làm cho phân số tối giản
- Phương thức in phân số ra màn hình dạng ts/ms
Hãy viết chương trình cài đặt và sử dụng lớp Phân Số
Trang 4BÀI THỰC HÀNH 2 Lớp và đối tượng(tiếp)
* Mục tiêu
- Nạp chồng phương thức
- Thuộc tính và thủ tục thuộc tính
- Thành phần tĩnh và cách sử dụng
Bài 1: Xây dựng lớp Phanso và thao tác lớp với các phương thức bao gồm:
- Phương thức khởi tạo phân số có tử bằng 0 và mẫu bằng 1
- Phương thức khởi tạo (int ts, int ms) để khởi tạo phân số có tử số bằng ts và mẫu số bằng
ms
- Phương thức nhập thông tin cho phân số
- Phương thức cộng hai phân số
- Phương thức cộng phân số với một số
- Phương thức trừ hai phân số
- Phương thức trừ 1 phân số cho một số
- Phương thức in kết quả ra màn hình
Hướng dẫn:
Thuộc tính của lớp: int ts,ms: tử số và mẫu số của phân số
Các phương thức của lớp:
- Khởi tạo không tham số: pulic phanso() và gán giá trị của tử =0, mẫu số=1
- Khởi tạo hai tham số: public phanso(int tu,int mau)
- Cộng phân số với phân số
- Cộng phân số với một số
- Trừ phân số cho phân số
- Trừ phân số cho một số
- Phương thức hiện kết quả lên màn hình
Vì trong Bài tập này có nhiều phương thức chồng nhau (sự chồng phương thức) nên các bạn chú
ý cách gọi các phương thức
Bài 2: Xây dựng một chương trình thực hiện yêu cầu sau:
- Nhập vào thông tin của các học sinh với số lượng học sinh ∈[2,30] Thông tin của học sinh bao gồm: Họ tên, điểm toán, điểm lí, điểm hóa
- Hiển thị danh sách các sinh viên phải thi lại (điểm trung bình <5) Nếu không có sinh viên nào thi lại thì đưa ra thông báo “Không có học sinh nào phải thi lại”
Hướng dẫn:
- Xây dựng một lớp có tên HocSinh, trong lớp HocSinh chúng ta phải xây dựng các thuộc tính đối với các thành phần dữ liệu điểm toán, điểm lí, điểm hóa để sau này cho phép các lớp khác can thiệp tới các thành phần dữ liệu này
- Xây dựng là lớp QuanLy dùng để quản lý danh sách các học sinh
Bài 3: Xây dựng chương trình quản lý lương cho công ty ABC Thông tin để tính lương cho mỗi
Nhân viên trong công ty bao gồm: Họ tên, quê quán, hệ số lương, lương cơ bản Hãy nhập vào một danh sách các Nhân viên của công ty sau đó thực hiện các yêu cầu sau:
- Tính và hiển thị lương của các Nhân viên có trong danh sách
Trang 5- Liệt kê những nhân viên có hệ số lương cao nhất
- Sắp xếp danh sách theo thứ tự tăng dần của trường hệ số lương
Hướng dẫn:
- Xây dựng lớp có tên NhanVien với các thành phần
o Dữ liệu: Họ tên, quê quán, hệ số lương, lương cơ bản(là thành phần dữ liệu tĩnh)
o Phương thức: Các thuộc tính để truy xuất tới các thành phần dữ liệu họ tên, hệ số lương, phương thức nhập, hiển thị, tính lương,…
- Xây dựng lớp QuanLy nhân viên bao gồm
o Dữ liệu: ds là một mảng các nhân viên
o Phương thức: Phương thức nhập, hiển thị, sắp xếp,…
Bài 4: Xây dựng lớp Học viên để quản lý họ tên, năm sinh, các môn học của học viên của lớp
học Cho biết bao nhiêu học viên trong lớp được phép làm luận văn tốt nghiệp, bao nhiêu học viên thi tốt nghiệp, bao nhiêu người phải thi lại và tên môn thi lại Tiêu chuẩn để xét:
- Làm luận văn phải có điểm trung bình các môn lớn hơn 7 trong đó không có môn nào dưới 5
- Thi tốt nghiệp khi điểm trung bình các môn lớn hơn 5 và điểm các môn không dưới 5
- Thi lại có môn dưới 5
Hướng dẫn:
- Xây dựng lớp có tên Môn học với các thành phần
o Dữ liệu: Tên môn học, tỷ lệ kiểm tra, điểm kiểm tra, điểm thi
o Phương thức: phương thức nhập, hiển thị, tính trung bình môn theo tỷ lệ kiểm tra
- Xây dựng lớp có tên HocVien với các thành phần
o Dữ liệu: Họ tên, năm sinh, mảng môn học
o Phương thức: phương thức nhập, hiển thị, tính trung bình các môn
- Xây dựng lớp QuanLy học viên bao gồm
o Dữ liệu: ds là một mảng các học viên
o Phương thức: Phương thức nhập, hiển thị danh sách học viên làm luận văn, danh sách thi tốt nghiệp, danh sách thi lại
Bài 5: Xây dựng lớp NGUOI nhằm thể hiện một người bất kỳ Các thông tin về một người bao
gồm; họ tên, năm sinh, chiều cao(tính bằng m-có số lẻ), trọng lượng(tính bằng kg-có số lẻ) Yêu cầu:
- Các vùng dữ liệu phải được khai báo là private
- Viết một số hàm khởi tạo: Hàm khởi tạo mặc định, hàm khởi tạo sao chép, hàm khởi tạo nhận 4 tham số cho biết họ tên, năm sinh, chiều cao, cân nặng của một người
- Thiết kế phương thức trả về một số nguyên cho biết tình trạng sức khỏe người đó Biết cách tính chỉ số sức khỏe như sau:
K=Trọng lượng/(Chiều cao)2
Nếu K trong phạm vi từ 19 đến 25: Sức khỏe tốt và phương thức trả về giá trị là 0
Nếu K trong phạm vi nhỏ hơn 19: Gầy ốm và phương thức trả về giá trị là -1
Nếu K trong phạm vi lớn hơn 25: Béo phì và phương thức trả về giá trị là +1
Trang 6- Thiết kế phương thức ToString()-override Phương thức này trả về 1 chuỗi thể hiện đầy
đủ thông tin của một người( Họ tên, năm sinh, cân nặng, chiều cao cùng với tình trạng sức khỏe của họ)
- Thiết kế các thuộc tính cho phép lấy/gán các thông tin về trọng lượng và chiều cao của một người Lưu ý là chiều cao một người phải nằm trong phạm vi từ 1m2 đến 1m8, trọng lượng phải nằm trong phạm vi từ 35kg đến 150kg, các thuộc tính lấy ra họ và tên của một người
- Thiết kế phép toán "cộng" giữa 2 người với ý nghĩa: Tổng trong lượng 2 người là bao nhiêu?
- Thiết kế phép toán "cộng" giữa 1 người và 1 số thực f với ý nghĩa: Tổng trọng lượng người này với f kg là bao nhiêu?
Viết một lớp thử nghiệm(có chứa hàm Main) nhằm thực hiện các yêu cầu sau:
- Khai báo 1 mảng có 5 người với dữ liệu tùy ý
- In ra thông tin của từng người trong danh sách
- In ra thông tin của những người trong danh sách có chiều cao >=1m7 và trọng lượng
>=70kg
- Với chỉ số tối thiểu là 19 để đạt yêu cầu tình trạng sức khỏe tốt, anh chị hãy in ra họ tên từng người(hiện có thể trạng gầy ốm trong danh sách) với số kg trọng lượng mà mỗi người cần phải tăng thêm để họ đạt thể trạng tốt(mà vẫn giữ nguyên chiều cao)
* Mục tiêu
- Xây dựng lớp dẫn xuất
- Gọi phương thức khởi tạo của lớp cơ sở
- Truy xuất các thành phần của lớp cơ sở
Bài 1: Xây dựng lớp có tên là TienDien với các thông tin bao gồm:
+ Dữ liệu:
- Họ tên chủ hộ
- Địa chỉ
- Số công tơ tháng trước
- Số công tơ tháng này
+ Phương thức
- Phương thức thiết lập không tham số và 4 tham số
- Phương thức nhập dữ liệu
- Phương thức hiển thị dữ liệu
- Thuộc tính tính số công tơ điện đã dùng(=Số công tơ tháng này- Số công tơ tháng trước)
- Phương thức tính tiền điện được tính theo công thức: Số điện đã dùng*1240
Sau đó xây dựng lớp TienDienMoi bằng việc kế thừa lớp TienDien để tính tiền điện theo một quy định mới Việc tính tiền điện lúc này căn cứ vào định mức quy định Nếu trong định mức là 1240, ngoài định mức là 1600
Hướng dẫn:
- Xây dựng lớp TienDien theo như đã mô tả
Trang 7- Xây dựng lớp TienDienMoi kế thừa từ lớp TienDien bằng việc bổ sung thêm thành phần
dữ liệu định mức, điều chỉnh lại phương thức nhập, hiện, và tính tiền điện
Bài 2: Cho sơ đồ thừa kế sau
Chú thích:
Person:
- name:tên
- age:tuổi
- nationality:quốc tịch
+ display():hiện thị thông tin
Player:
- number: số áo
- position: vị trí thi đấu
- team: đội thi đấu
Coach:
- year: số năm đã làm huấn luyện viên
Team:
- name: tên đội
- listOfPlayer: danh sách các cầu thủ
- coach: huấn luyện viên
+ display():hiện thị thông tin đội bóng
Hãy cài đặt sơ đồ thừa kế trên, class sử dụng các class của sơ đồ trên
* Mục tiêu
- Tính đa hình
- Phương thức đa hình
- Từ khoá new và override
Bài 1: Viết chương trình quản lí nhân sự và tính lương cho nhân viên trong công ty
+ Quản lí thông tin nhân viên (Họ tên, ngày sinh, địa chỉ)
+ Tính lương cho nhân viên Biết trong công ty có ba loại nhân viên và cách tính lương như sau:
Nhân viên sản xuất: số sản phẩm*20 000 đ
Trang 8Nhân viên công nhật: số ngày công*90 000 đ
Nhân viên quản lí : hệ số lương * lương cơ bản
Hướng dẫn
Bài toán được chia thành 5 đối tượng: Class nhanvien, Class NVSX, Class NVCN, Class NVQL, Class DSNV
Các thuộc tính và phương thức của Class Nhanvien
+ Họ tên, địa chỉ, ngày sinh
+ Nhap(), xuat(), tinhluong()
Các thuộc tinh và phương thức của Class NVSX
+ Kế thừa thuộc tính của Class nhanvien
+ sosanpham
+ Phương thức Nhap(), xuat(), tinhluong()
Các thuộc tính và phương thức của Class NVCN
+Kế thừa thuộc tính của Class nhanvien + songaycong
+ Phương thức Nhap(), xuat(), tinhluong() Các thuộc tính và phương thức của Class NVQL
+Kế thừa thuộc tính của Class nhanvien + hesoluong, luongcoban
+ Phương thức Nhap(), xuat(), tinhluong() Các thuộc tính và phương thức của Class DSNV
+ soluongnv, Nhan vien*[] ds + Phương thức: Nhap ds(), xuat ds(), xuatluong()
khác nhau Do vậy ta nên xây dựng phương thức tính lương ở lớp cơ sở (Class nhanvien) là phương thức ảo, sau đó ở các lớp dẫn xuất ta kế thừa lại bằng cách ghi đè phương thức đó
Bài 2: Xây dựng lớp Person gồm có dữ liệu thành phần sau:
- Họ và Tên
- Ngày tháng năm sinh
- Quê quán
Và các phương thức:
- Phương thức khởi tạo không có tham số
- Phương thức khởi tạo có 3 tham số
- Phương thức Nhập cho phép nhập các thông tin về Họ tên, ngày sinh, Quê quán của người đó
- Phương thức HienThi() cho phép hiển thị các thông tin của người đó ra màn hình
Xây dựng lớp SinhVien kế thừa từ lớp Person gồm có các thuộc tính sau:
- Các thuộc tính của lớp Person
- Mã sinh viên
- Lớp
Và các phương thức:
- Phương thức khởi tạo không có tham số
- Phương thức khởi tạo có 5 tham số
Trang 9- Phương thức Nhập cho phép nhập các thông tin về Họ tên, ngày sinh, Quê quán, Mã Sinh viên, Lớp của sinh viên đó
- Phương thức HienThi cho phép hiển thị các thông tin của sinh viên đó ra màn hình
Bài 3:Xây dựng chương trình quản lý lương cho một trường học Biết rằng trong trường có hai đối tượng cán bộ đó là: Giáo viên và nhân viên hành chính Mỗi cán bộ nói chung đều có những thông tin cơ bản sau: Họ tên, quê quán, hệ số lương, lương cơ bản Ngoài ra nếu cán bộ là giáo viên thì được hưởng thêm hệ số phục cấp là 40%, cán bộ hành chính được cộng thêm 300.000 VNĐ trong lương hàng tháng
Vậy công thức tính lương hàng tháng của cán bộ giáo viên là:
* Lương=Hệ số lương* Lương cơ bản*1.4 Công thức tính lương của cán bộ hành chính là:
* Lương=Hệ số lương* Lương cơ bản+300.000 Hãy nhập vào một danh sách các cán bộ và tính lương cho họ Sau đó in danh sách các cán bộ ra màn hình mỗi cán bộ trên một dòng, các thông tin của một cán bộ (Họ tên, quê quán, hệ số lương, lương cơ bản, Lương) cách nhau bởi một dấu Tab
Bài 4: Phân tích, thiết kế và hiện thực theo hướng đối tượng chương trình tình tiền hóa đơn sử
dụng các dịch vụ tại một khách sạn, thông tin Hóa đơn: makh(mã khách hàng), tenkh(họ tên khách hàng), và các dịch vụ mà khách hàng đã sử dụng, trigia(trị giá hóa đơn) Hiện giờ khách sạn chỉ có hai dịch vụ: Giặt tẩy và Thuê xe Mỗi dịch vụ có cách tính tiền khác nhau
+ Dịch vụ giặt tẩy: tiền giặt tẩy tính theo số kilogam quần áo, đơn giá/kg Nếu số kg trên 10kg thì giảm 5%
+ Dịch vụ thuê xe: tiền thuê xe được tính theo số giờ, đơn giá/giờ Nếu thuê quá 7giờ giảm 10%
Viết chương trình nhập thông tin hóa đơn và xuất ra giá trị của hóa đơn
Bài 5: Một khách sạn 5 sao có ba loại phòng sau:
- Phòng loại A, đơn giá 200 USD/ngày
- Phòng loại B, đơn giá 160 USD/ngày
- Phòng loại C, đơn giá 120 USD/ngày
Tiền thuê phòng được tính theo công thức: đơn giá loại phòng* số ngày thuê Khách hàng loại A được sử dụng một số dịch vụ của khách sạn và tiền sử dụng dịch vụ sẽ được cộng vào tiền thuê phòng của khách hàng Đặc biệt khách sạn có chính sách giảm giá 10% cho các khách hàng ở phòng loại A, B với số ngày ở từ 5 ngày trở lên
Xây dựng chương trình tính tiền thuê phòng cho khách hàng.Chương trình cho phép nhân viên khách sạn nhập vào thông tin phòng mà khách hàng đã thuê Chương trình sẽ tính xem số tiền
mà khách hàng phải trả là bao nhiêu Biết rằng thông tin thuê phòng bao gồm: Loại phòng, số ngày thuê, tiền dịch vụ (đối với phòng loại A)
Trang 10Bài 6: Một gia đình làm dịch vụ cho thuê xe ô tô cần quản lý việc cho thuê xe Gia đình có 2 loại
xe: Xe du lịch và xe tải Thông tin thuê xe bao gồm: Họ tên người thuê, số giờ thuê Tiền thuê xe
du lịch được tính như sau: 250.000đ cho giờ đầu và 70.000đ cho các giờ tiếp theo Tiền thuê xe tải được tính như sau: 220.000đ cho giờ đầu và 85.000đ cho các giờ tiếp theo
Viết chương trình giúp gia đình trên thực hiện các yêu cầu sau:
a Nhập vào danh sách thông tin thuê xe (bao gồm cả xe du lịch và xe tải)
b In ra màn hình tất cả thông tin thuê xe bao gồm: họ tên người thuê, số giờ thuê, thành tiền mỗi trường cách nhau một dấu tab và mỗi người thuê trên một dòng
Hướng dẫn:
- Xây dựng lớp Xe với các thành phần sau:
o Phương thức: Ba phương thức trừu tượng nhập, hiện, tính tiền với tham số đầu vào là số giờ thuê
- Xây dựng lớp XeTai,XeKhach kế thừa từ lớp Xe với với việc triển khai các phương thức trong lớp Xe
- Xây dựng lớp Khach với các thông tin
o Dữ liệu: Họ tên khách, số giờ thuê, loại xe thuê
o Phương thức: Nhập thông tin khách hàng, hiện thông tin khách hàng, tính tiền khách hàng
- Xây dựng lớp QuanLy để quản lý các loại xe của gia đình mà khách hàng thuê gồm các thành phần sau:
o Dữ liệu: Mảng một chiều chứa các khách hàng thuê xe
o Phương thức: Nhập, hiện, tính tổng tiền …
Bài 7: Để xây dựng hệ thống quản lý các thiết bị gia dụng như máy lạnh, máy giặt, tivi của 1 cửa
hàng người ta cẩn quản lý:
* Nhà sản xuất, model, giá thành, mã lực: đối với máy lạnh
* Nhà sản xuất, model, giá thành, trọng lượng tối đa khối quần áo có thể giặt: đối với máy giặt
* Nhà sản xuất, model, giá thành, kích cỡ màn hình: đối với tivi
Trong hệ thống này có các chức năng như:
* Nhập dữ liệu
* Xuất danh sách toàn bộ thiết bị bao gồm các thông tin liên quan đến thiết bị đó
* Xuất danh sách theo từng loại thiết bị với các thông tin liên quan về thiết bị đó
* Xuất danh sách thiết bị có cùng một nhà sản xuất với các thông tin liên quan đến thiết bị
đó
Hãy hiện thực các lớp được nêu ở trên và viết chương trình chính để thử nghiệm
Bài 8: Xây dựng chương trình quản lý nhân viên, người quản lý trong 1 công ty
* Lớp nhân viên cần quản lý họ tên, thuộc phòng nào lương cơ bản
* Lớp người quản lý cần họ tên, chức danh, lương cơ bản, phụ cấp trách nhiệm
Chương trình cho phép thực hiện các chức năng :
* Nhập dữ liệu
* Tính thu nhập:
o Nếu là nhân viên thì thu nhập bằng lương cơ bản nhân với 2.5