Bài tập lớp trừu tượng, phương thức trừu tượng trong Java:
Xây dựng project tính lương cho nhân viên công ty ABC. Trong công ty có các loại đối tượng cần tính lương sau:
1. Lập trình viên:
Lương = Lương cơ bản + Thưởng tháng
( trong đó, thưởng tháng = 1,5 lương cơ bản nếu số ngày công >= 23; ngược lại thưởng tháng = 1 lương cơ bản).
2. Nhân viên văn phòng:
Lương = Hệ số lương * Lương cơ bản
( trong đó, hệ số lương khởi điểm =2.34, cứ sau 3 năm hệ số lương tăng thêm 0.33)
3. Cán bộ quản lý:
Lương = Hệ số lương * Lương cơ bản + Phụ cấp chức vụ
( trong đó, hệ số lương tính tương tự NV văn phòng; Phụ cấp chức vụ = 2,000,000đ nếu chức vụ là trưởng phòng, 1,500,000đ nếu chức vụ là phò phòng)
*Yêu cầu:
+ Sử dụng mô hình lớp kế thừa
+ Sử dụng phương thức khởi tạo trong mỗi lớp
+ Nhập thông tin, và in thông tin nhân viên.
--------
[Sử dụng Netbean]
Xây dựng project như hình vẽ
Trong đó, lớp NV là lớp trừu tượng; lớp LapTrinhVien kế thừa lớp NV; lớp NVVP kế thừa lớp NV; lớp CanBoQL kế thừa lớp NVVP.
//
/*
lớp trừu tượng (abstract class) - lớp NV
*/
//
/* Lớp chính ( LTHDT_Bai2_311016) */
----------
Xây dựng project tính lương cho nhân viên công ty ABC. Trong công ty có các loại đối tượng cần tính lương sau:
1. Lập trình viên:
Lương = Lương cơ bản + Thưởng tháng
( trong đó, thưởng tháng = 1,5 lương cơ bản nếu số ngày công >= 23; ngược lại thưởng tháng = 1 lương cơ bản).
2. Nhân viên văn phòng:
Lương = Hệ số lương * Lương cơ bản
( trong đó, hệ số lương khởi điểm =2.34, cứ sau 3 năm hệ số lương tăng thêm 0.33)
3. Cán bộ quản lý:
Lương = Hệ số lương * Lương cơ bản + Phụ cấp chức vụ
( trong đó, hệ số lương tính tương tự NV văn phòng; Phụ cấp chức vụ = 2,000,000đ nếu chức vụ là trưởng phòng, 1,500,000đ nếu chức vụ là phò phòng)
*Yêu cầu:
+ Sử dụng mô hình lớp kế thừa
+ Sử dụng phương thức khởi tạo trong mỗi lớp
+ Nhập thông tin, và in thông tin nhân viên.
--------
[Sử dụng Netbean]
Xây dựng project như hình vẽ
//
/*
lớp trừu tượng (abstract class) - lớp NV
*/
package lthdt_bai2_311016;
import java.util.Scanner;
/**
*
* @author tailieucntt.org
*/
public abstract class NV {
String hoTen, loaiNV;
final float LCB=1050000, HeSoLuongKhoiDiem=2.34f;
// Khởi tạo (constructor)
public NV(String hoTen, String loaiNV){
this.hoTen=hoTen;
this.loaiNV=loaiNV;
}
// Nhập thông tin
void NhapTT(){
Scanner inp=new Scanner(System.in);
System.out.print("\n + Nhap thong tin nhan vien: ");
System.out.print("\n - Ho va ten: ");
hoTen=inp.nextLine();
}
// Phương thức trừu tượng, tính lương
abstract float TinhLuong();
// In thong tin
void InTT(){
System.out.print("\n + In thong tin NV: ");
System.out.print("\n - Ho va ten: "+ hoTen);
System.out.print("\n - Loai nhan vien: "+loaiNV);
System.out.print("\n - Luong thang: "+TinhLuong());
}
}
//
/*
Lớp LapTrinhVien
*/
package lthdt_bai2_311016;
import java.util.Scanner;
/**
*
* @author tailieucntt.org
*/
class LapTrinhVien extends NV{
int soNgayLV;
// phương thức khởi tạo
public LapTrinhVien(String hoTen, String loaiNV,int soNgayLV){
super(hoTen,loaiNV);
this.soNgayLV=soNgayLV;
}
// Nhâp thông tin
void NhapTT(){
super.NhapTT();
loaiNV="Lap trinh vien";
Scanner inp=new Scanner(System.in);
System.out.print("\n - So ngay cong: ");
soNgayLV=inp.nextInt();
}
// Tính lương
float TinhLuong(){
float thuongThang=0;
if(soNgayLV>=23) thuongThang=1.5f*LCB;
else thuongThang=LCB;
return LCB+thuongThang;
}
}
//
/*
Lớp Nhân viên VP
*/
package lthdt_bai2_311016;
import java.util.Scanner;
/**
*
* @author tailieucntt.org
*/
public class NVVP extends NV{
int soNamCT;
// Phương thức khởi tạo
public NVVP(String hoTen, String loaiNV, int soNamCT){
super(hoTen,loaiNV);
this.soNamCT=soNamCT;
}
// Nhập thông tin
void NhapTT(){
super.NhapTT();
loaiNV="Nhan vien van phong";
Scanner inp=new Scanner(System.in);
System.out.print("\n - So nam cong tac: ");
soNamCT=inp.nextInt();
}
// Tính lương
float TinhLuong(){
int soLanTangLuong=soNamCT/3;
float heSoLuong=soLanTangLuong*0.33f+HeSoLuongKhoiDiem;
return heSoLuong*LCB;
}
}
//
/*
Lớp cán bộ quản lý
*/
package lthdt_bai2_311016;
import java.util.Scanner;
/**
*
* @author tailieucntt.org
*/
public class CanBoQL extends NVVP {
String chucVu;
// Phương thức khởi tạo
public CanBoQL(String hoTen, String loaiNV, int soNamCT, String chucVu){
super(hoTen,loaiNV,soNamCT);
this.chucVu=chucVu;
}
// Nhâp thông tin
void NhapTT(){
super.NhapTT();
loaiNV="Can bo quan ly";
Scanner inp=new Scanner(System.in);
System.out.print("\n - Chuc vu: ");
chucVu=inp.nextLine();
}
// Tính lương
float TinhLuong(){
int soLanTangLuong=soNamCT/3;
float heSoLuong=soLanTangLuong*0.33f+HeSoLuongKhoiDiem;
float phuCapChucVu=0;
if(chucVu.equals("Truong Phong")) phuCapChucVu=2000000;
if(chucVu.equals("Pho Phong")) phuCapChucVu=1500000;
return heSoLuong*LCB+phuCapChucVu;
}
}
/* Lớp chính ( LTHDT_Bai2_311016) */
package lthdt_bai2_311016;
import java.util.Scanner;
/**
*
* @author tailieucntt.org
*/
public class LTHDT_Bai2_311016 {
public static void main(String[] args) {
int so=0;
Scanner inp=new Scanner(System.in);
do{
System.out.print("\n \n * Ban vui long lua chon: ");
System.out.print("\n 1- Lap trinh vien ");
System.out.print("\n 2- Nhan vien van phong");
System.out.print("\n 3- Can bo quan ly ");
System.out.print("\n 4- Thoat khoi chuong trinh");
System.out.print("\n \n Chon doi tuong nhan vien: ");
so=inp.nextInt();
if(so<1||so>4)
System.out.print("\n * Nhap sai, lua chon lai");
else{
if(so==1){
LapTrinhVien nv1 =new LapTrinhVien("Nguyen Van A","Lap Trinh Vien",1);
nv1.NhapTT();
nv1.InTT();
}
if (so==2){
NVVP nv2=new NVVP("Nguyen Van A","Lap Trinh Vien",1) ;
nv2.NhapTT();
nv2.InTT();
}
if (so==3){
CanBoQL nv3=new CanBoQL("Nguyen Van A","Lap Trinh Vien",1,"Truong phong") ;
nv3.NhapTT();
nv3.InTT();
}
}
}while(so!=4);
}
}
Một số tài liệu và khoá học bổ ích dành cho bạn:
# Tài liệu: Lập trình hướng đối tượng JAVA core dành cho người mới bắt đầu học lập trình [Click để xem]
# Khoá học online: Lập trình Java trong 4 tuần [Click để xem]
----------