{
Console.OutputEncoding = Encoding.UTF8;
NhanVien NV; //Dùng ĐA HÌNH
while (true)
{
Console.WriteLine("**************Nhập 0 để thoát\n***************Nhập B để thêm nhân viên Biên Chế, H Nhân viên Hợp Đồng");
string nhap = Console.ReadLine().ToUpper();
if (nhap == "0") break;
if (nhap == "B")
{
Console.WriteLine("--------------------------- Nhập thông tin Nhân viên Biên Chế ------");
//NV = new NhanVienBC(); //Dùng ĐA HÌNH
//NV.Nhap();
NhanVienBC nv = new NhanVienBC(); //ko dùng đa hình
nv.Nhap();
danhsach.Add(nv.MaNhanVien, nv);
}
if (nhap == "H")
{
Console.WriteLine("--------------------------- Nhập thông tin Nhân viên Hợp Đồng ------");
//NV = new NhanVienHD(); //Dùng ĐA HÌNH
//NV.Nhap();
NhanVienHD nv = new NhanVienHD(); //ko dùng đa hình
nv.Nhap();
danhsach.Add(nv.MaNhanVien, nv);
}
//danhsach.Add(NV.MaNhanVien, NV); // ĐA HÌNH
//danhsach.Add(nv.MaNhanVien, nv); // Không đa hình // Lỗi vì chưa biết có nhập nv vô hay chưa
}
}
public double TinhTongLuong()
{
double tongLuong = 0;
foreach (NhanVien nv in danhsach.Values)
if (nv is NhanVienBC)
{
foreach (NhanVienBC NV in danhsach.Values) //Nếu ko dùng đa hình
tongLuong = tongLuong + NV.TinhLuong();
//tongLuong = tongLuong + ((NhanVienBC)nv).TinhLuong(); //DÙNG ĐA HÌNH
}
// Trường hợp chưa có abstract và override thì -> Đa hình, phải Dowcasting // vì bản chất nv lúc này vẫn là NhanVien chứ ko phải NhanVienBC
else
foreach (NhanVienHD NV in danhsach.Values) //Nếu ko dùng đa hình
tongLuong = tongLuong + NV.TinhLuong();
//tongLuong = tongLuong + ((NhanVienHD)nv).TinhLuong //DÙNG ĐA HÌNH
return tongLuong;
}
» Tin mới nhất:
» Các tin khác: