You are on page 1of 7

NỘI DUNG THI CUỐI KỲ

Lập trình HĐT và Phương pháp Lập trình HĐT

I. Cấu trúc đề thi: gồm 2 phần


 Câu 1: Lý thuyết 2 điểm.
 Trình bày lý thuyết: 1.0 điểm
 Ví dụ minh họa: 1.0 điểm
 Câu 2: Bài tập 08 điểm.
II. Nội dung đề thi
 Phần lý thuyết: Các nội dung có trong slide bài giảng chương Lớp đối tượng, Kế
thừa và đa hình.
 Phần bài tập: gồm nhiều nội dung:
 Vẽ sơ đồ thiết cho một bài cụ thể: (1.0 điểm)
 Khai báo lớp, phương thức get/set, phương thức khởi tạo, phương thức tính toán,
static, phương thức trừu tượng, phương thức nhập/xuất (4.0 điểm)
 Lớp con kế thừa, override method (2.0 điểm)
 Interface (1.0 điểm)
NỘI DUNG ĐỀ ÔN TẬP

Câu 1: Trình bày đặc điểm của phương thức khởi tạo? Có mấy loại phương thức khởi
tạo? Đó là loại nào? Cho ví dụ các về phương thức khởi tạo trong cùng một lớp.
Câu 2: Để tổ chức sự kiện nhằm quản bá sản phẩm và tạo thương hiệu cho công ty sản
xuất kinh doanh. Các đơn vị tổ chức thường phải mời một số ca sĩ nổi tiếng về biểu diễn
và giao lưu với khán giả. Để mời được ca sĩ những đơn vị này phải làm các hợp đồng biểu
diễn với các thông tin như sau:

 Mã hợp đồng
 Tên ca sĩ được mời
 Số tiết muc biểu diễn
 Ngày biểu diễn
 Đơn giá
 Phụ phí
1. Hãy xây dựng lớp Hợp đồng ca sĩ với các thông tin được mô tả như trên.
2. Xây dựng phương thức get/set cho thuộc tính Mã hợp đồng và đơn giá. Biết rằng Mã
hợp đồng có 6 ký tự có 2 ký tự đầu là “HD” và 4 ký tự sau là các số thể hiện thứ tự của
hợp đồng của công ty. Đơn giá là một số dương
3. Xây dựng phương thức khởi tạo mặc định tạo ra một hợp đồng có số thứ tự là 3418 để
mời ca sĩ “Lý Không Hay” và biểu diễn 3 tiết mục vào ngày 24/10/2020 với đơn giá là
4000000 kèm theo phụ phí di chuyển là 2000000
4. Xây dựng phương thức khởi tạo với các tham số Mã hợp đồng, tên ca sĩ và đơn giá để
tạo ra một hợp đồng với các thông tin như đã truyền vào biểu diễn 2 tiết mục với phụ
phí là 0 và biểu diễn vào ngày 24/12/2020.
5. Xây dựng phương thức tính thành tiền của hợp đồng biết rằng Thành tiền = Đơn giá
* Số tiết mục + phụ phí + Phí quảng cáo. Biết rằng phí quảng cáo được tính tùy vào
hình thức biểu diễn.
 Biểu diễn tại nhà: Có thêm thông tin về khoảng cách di chuyển bẳng ô tô. Nếu
khoảng cách di chuyển nhỏ hơn 20Km thì phí quảng cáo là 400000 trên mỗi Km di
chuyển. Ngược lại là 300000 nhưng không vượt quá 15000000
 Biểu diễn tại rạp nhỏ: Sẽ có thêm thông tin về qui mô là một số nguyên có giá trị
từ 1 tới 5. Biểu diễn ở rạp nhỏ, phí quảng cáo là 10000000 + 2000000 *số tiết mục
 Biểu diễn tại rạp lớn: Tùy thuộc vào lượng khán giả tham gia. Nếu số lượng khán
giả dưới 1 triệu thì phí quảng cáo là 30 triệu, ngược lại là 50 triệu
6. Xây dựng số tiền phải đóng thuế của hợp đồng. Biết rằng Thuế = tỉ lệ thuế * thành
tiền. Biết rằng tỉ lệ thuế là áp dụng chung cho tất cả hợp đồng và do nhà nước qui định
hiện tại là 15%.

Để hỗ trợ các sự kiện các rạp biểu diễn lớn và nhỏ có chính sách hỗ trợ một phần cho
các hợp đồng biểu diễn như sau:
 Biểu diễn tại rạp nhỏ: Nếu qui mô từ 1 - 3 hỗ trợ 1 triệu
 Biểu diễn tại rạp lớn: cứ 100000 khán giả thì được hỗ trợ 1 triệu nhưng tối đa chỉ
hỗ trợ 20 triệu.
Giả sử bạn là một lập trình viên được phân công giải quyết bài toán được mô tả ở trên.
Hãy:
1. Vẽ sơ đồ lớp cho bài toán
2. Cài đặt theo yêu cầu
ĐÁP ÁN ĐỀ ÔN TẬP PHÂN BÀI TẬP

1. Vẽ sơ đồ lớp

HDCaSi
<<abstract class>>
- maHD : String
- tenHD : String
# soTM : int
- ngayBD : DateTiem
- donGia : double
- phuPhi : double
- Static TiLeThue: double
+ DonGia (get/set) :double
+ Ma (get/set) :String IHoTro
+ HDCaSi() <<interface>>
+ HDCaSi(String, String, double) tinhTienHT(): double
+ tinhTT() :double
+ tinhThue() :double
+ abstract tinhQC() :double

DHTaiNha RapLon RapNho


<<class>> <<class>> <<class>>
- khoangCach:int - luongKG:int - quiMo:int
+ tinhQC() :double + tinhQC() :double + tinhQC() :double
+ tinhTienHT(): double + tinhTienHT(): double

Chú ý:

 Trước thuộc tính/phương thức static phải ghi thêm từ khóa static
 Dùng ký hiệu +, -, # để thay thế cho public, private, protected
 Dùng từ khóa abstract để mô tả thương thức trừu tượng
 Phương thức get/set được giải thích bằng (get/set) sau tên phương thức
 Sử dùng các ký hiệu <abstract class>>, <<class>>, <<interface>> để biểu thị
các lớp trừu tượng, lớp thông thường và interface
2. Cài đặt và thiết kế lớp

Lớp HDCaSi

abstract public class HDCaSi


{
protected String ma, ten;

public String Ma
{
get { return ma; }
set
{
ma = value;
if (!(ma.Length == 6 && ma.StartsWith("HD") == true
&& && s.All(char.IsDigit)==true))
throw new Exception("loi roi");
}
}
protected int soTM;
protected DateTime ngayBD;
protected double donGia, phuPhi;
public double DonGia
{
get { return donGia; }
set {
donGia = value;
if (donGia <= 0)
throw new Exception("loi don gia");
}
}
public static double TiLeThue = 0.15;
public HDCaSi()
{
ma="HD3418";
ten="Ly Khong Hay";
soTM=3;
ngayBD = new DateTime(2020,10,24);
donGia=4000000;
phuPhi=2000000;
}
public HDCaSi(String ma, String ten, double dg)
{
this.ma=ma;
this.ten=ten;
this.donGia=dg;
this.soTM = 2;
phuPhi=0;
ngayBD=new DateTime(2020,12,24);
public HDCaSi(String ma, String ten, double dg)
{
this.ma=ma;
this.ten=ten;
this.donGia=dg;
this.soTM = 2;
phuPhi=0;
ngayBD=new DateTime(2020,12,24);
}

public double tinhTT()


{
return soTM * donGia + phuPhi + tinhQC();
}
public abstract double tinhQC();
public double tinhThue()
{
return tinhTT() * TiLeThue;
}
}

Interface

public interface IHoTro


{
double tinhTienHT();
}

Lớp HDTaiNha

public class HDTaiNha:HDCaSi


{
int khoangCach;
public override double tinhQC()
{
if (khoangCach <= 20)
return 400000 * khoangCach;
else
{
return Math.Min(khoangCach * 300000, 15000000);
}
}
}
Lop RapNho

public class RapNho:HDCaSi,IHoTro


{
int quiMo;
public override double tinhQC()
{
return 10000000 + 2000000 * soTM;
}

public double tinhTienHT()


{
if (quiMo >= 1 && quiMo <= 3)
return 1000000;
return 0;
}
}

Lop RapLon

public class RapLon:HDCaSi,IHoTro


{
int luongKG;
public override double tinhQC()
{
if (luongKG < 1000000)
return 30000000;
else
return 50000000;
}

public double tinhTienHT()


{
return Math.Min(luongKG / 100000 * 1000000, 20000000);
}
}

You might also like