Skip to Content
CoursesCSC102คลาสจำลองระบบเงินเดือนลูกจ้าง

คลาสจำลองระบบเงินเดือนลูกจ้าง

โจทย์

สร้างคลาสชื่อ Employee เพื่อแสดงการคำนวณเงินเดือนประจำปีของพนักงาน คลาสควรประกอบด้วยสิ่งต่อไปนี้:

  • แอตทริบิวต์ (หรือฟิลด์ข้อมูล)
    • แอตทริบิวต์ private ประเภท string ชื่อ “firstName” สำหรับชื่อของพนักงาน
    • แอตทริบิวต์ private ประเภท string ชื่อ “lastName” สำหรับนามสกุลของพนักงาน
    • แอตทริบิวต์ private ประเภท double ชื่อ “monthlySalary” ที่เก็บเงินเดือนรายเดือนของพนักงาน
  • คอนสตรักเตอร์
    • จัดเตรียมคอนสตรักเตอร์ที่กำหนดค่าเริ่มต้นให้กับตัวแปรอินสแตนซ์ทั้งสาม: firstName, lastName, และ monthlySalary
  • เมธอด
    • จัดเตรียมเมธอด set และ get สำหรับตัวแปรอินสแตนซ์แต่ละตัว
    • ข้อจำกัด: หากค่า monthlySalary ไม่เป็นบวก อย่าตั้งค่าให้กับมัน

นอกจากนี้ ให้เขียนคลาสไดรเวอร์ชื่อ EmployeeDriver ที่แสดงความสามารถของคลาส Employee:

  • แสดงเงินเดือนประจำปีของพนักงานแต่ละคน
  • ให้การขึ้นเงินเดือน 10% แก่พนักงานแต่ละคน
  • แสดงเงินเดือนประจำปีของพนักงานแต่ละคนอีกครั้งหลังจากขึ้นเงินเดือน
InputOutput
Thanatat
Wongabut
20000
Employee: Thanatat Wongabut
Yearly salary: 240000.00
Yearly salary after raise: 264000.00

โค้ด

import java.util.Scanner; public class EmployeeDriver { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String firstName = scanner.nextLine(); String lastName = scanner.nextLine(); double salary = scanner.nextDouble(); Employee employee = new Employee(firstName, lastName, salary); System.out.printf("Employee: %s %s\n", firstName, lastName); System.out.printf("Yearly salary: %.2f\n", employee.getYearlySalary()); System.out.printf("Yearly salary after raise: %.2f\n", employee.getYearlySalary() + employee.getRaiseSalary()); } } class Employee { private String firstName; private String lastName; private double monthlySalary; public Employee(String firstName, String lastName, double monthlySalary) { this.firstName = firstName; this.lastName = lastName; this.monthlySalary = Math.max(0, monthlySalary); } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public double getMonthlySalary() { return monthlySalary; } public double getYearlySalary() { return monthlySalary * 12; } public double getRaiseSalary() { return getYearlySalary() * 0.1; } public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public void setMonthlySalary(double monthlySalary) { this.monthlySalary = monthlySalary; } }

คำอธิบาย

1. คลาส EmployeeDriver

คลาส EmployeeDriver เป็นคลาสหลักที่ใช้ในการรันโปรแกรม มีส่วนประกอบดังนี้:

1.1 เมธอด main

  • เมธอด main เป็นจุดเริ่มต้นของโปรแกรม
  • ใช้ Scanner เพื่อรับข้อมูลจากผู้ใช้
  • รับชื่อ นามสกุล และเงินเดือนของพนักงาน
  • สร้างวัตถุ Employee จากข้อมูลที่รับมา
  • แสดงข้อมูลพนักงาน เงินเดือนรายปี และเงินเดือนรายปีหลังขึ้นเงินเดือน

2. คลาส Employee

คลาส Employee เป็นคลาสที่ใช้จัดการข้อมูลของพนักงาน มีส่วนประกอบดังนี้:

2.1 ตัวแปร

  • firstName: เก็บชื่อของพนักงาน
  • lastName: เก็บนามสกุลของพนักงาน
  • monthlySalary: เก็บเงินเดือนรายเดือนของพนักงาน

ทั้งหมดเป็นตัวแปรแบบ private ซึ่งหมายความว่าไม่สามารถเข้าถึงได้โดยตรงจากภายนอกคลาส

2.2 คอนสตรักเตอร์ (วิธีสร้างวัตถุ)

Employee(String firstName, String lastName, double monthlySalary):

  • สร้างวัตถุ Employee โดยรับชื่อ นามสกุล และเงินเดือนรายเดือน
  • ใช้ Math.max(0, monthlySalary) เพื่อให้แน่ใจว่าเงินเดือนไม่ติดลบ

2.3 เมธอด getter

  • getFirstName(): ส่งคืนชื่อของพนักงาน
  • getLastName(): ส่งคืนนามสกุลของพนักงาน
  • getMonthlySalary(): ส่งคืนเงินเดือนรายเดือนของพนักงาน
  • getYearlySalary(): คำนวณและส่งคืนเงินเดือนรายปีของพนักงาน (เงินเดือนรายเดือน * 12)
  • getRaiseSalary(): คำนวณและส่งคืนจำนวนเงินที่เพิ่มขึ้นหลังขึ้นเงินเดือน 10% (เงินเดือนรายปี * 0.1)

2.4 เมธอด setter

  • setFirstName(String firstName): กำหนดชื่อใหม่ให้กับพนักงาน
  • setLastName(String lastName): กำหนดนามสกุลใหม่ให้กับพนักงาน
  • setMonthlySalary(double monthlySalary): กำหนดเงินเดือนรายเดือนใหม่ให้กับพนักงาน
ปรับปรุงล่าสุด