[LT HĐT với Java] Bài tập lớp trừu tượng, phương thức trừu tượng trong Java [311016]

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
 */


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);
    }
 
}

Lập trình Java - ĐH FPT

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]


----------