我有一项小小的任务,使用面向对象方法在工作中添加和显示不同类型的员工(差异部门)和不同的工资。我很不确定我的代码在代码重用方面是否正确&如果我真的符合OOP编码方法......到目前为止,我已经为每个类型/部门显示了1名员工,我将它们作为类名称。代码如下)。我的问题是如果我添加一个新员工,我将再次声明另一个Employee类型的对象。如果会有很多员工,我会有很多的对象。我如何减少这一点,并且我可以知道我的OOP编码方法到目前为止是否正确?非常感谢!这里是我的代码:如何在不声明大量对象名称的情况下添加新员工
//this is my parent class which implements an interface...
public abstract class Employees implements ICompensation{
private String fname;
private String lname;
private char gender;
private String address;
private double salary;
public String getfname(){
return this.fname;
}
public void setfname(String fname){
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
// this is a Developer type of employee
public class Developer extends Employees{
public Developer(String fname,String lname, char gender,String address, double salary){
setfname(fname);
setLname(lname);
setGender(gender);
setAddress(address);
setSalary(salary);
}
@Override
public double calculateSalary() {
double salary = getSalary();
salary += 10;
return salary;
}
@Override
public void print() {
System.out.println(this.getClass());
System.out.println(this.getfname());
System.out.println(this.getLname());
System.out.println(this.getGender());
System.out.println(this.getAddress());
System.out.println(this.calculateSalary());}}
//this is QA type of employee
public class QA extends Employees{
public QA(String fname,String lname,char gender,String address,double salary) {
setfname(fname);
setLname(lname);
setGender(gender);
setAddress(address);
setSalary(salary);
}
@Override
public double calculateSalary() {
double salary = getSalary();
salary = salary + 20;
return salary;
}
@Override
public void print() {
System.out.println(this.getClass());
System.out.println(this.getfname());
System.out.println(this.getLname());
System.out.println(this.getGender());
System.out.println(this.getAddress());
System.out.println(this.calculateSalary());
}
}
我还有一个2班它们BA &经理类,但我不会在这里包括,因为它只是具有相同的内容到其他派生类。
//so here is my Interface
public interface ICompensation {
double calculateSalary();
void print();
}
//and here is my main method.
import java.util.*;
public class main {
public static void main(String[] args){
Employees dev = new Developer("Janel","Logrono",'M',"Alabang",491);
Employees qa = new QA("juan","Sir",'M',"Taguig",1240);
Employees ba = new BA("pedro","Lyn",'F',"Taguig",1150);
Employees manager = new Manager("sebastian","rods",'M',"USA",555399);
ArrayList<Employees> ls = new ArrayList<>();
ls.add(dev);
ls.add(qa);
ls.add(ba);
ls.add(manager);
for(Employees e : ls){
e.print();
System.out.println();
}
}
}
如何添加其他员工W/O宣布大量的对象,我知道如果我的OOP编码的做法是正确的,到目前为止,我认为在这里有很多的冗余代码,如何减少呢?谢谢!
“...添加另一名员工,但没有声明很多对象......”您如何定义“很多”?你觉得你有多少? –
开发者和质量保证部门之间有什么不同,您需要一个不同的类来处理它?如果您需要处理看门人,您是否会喜欢实施新班级的需要?还是首席执行官?当您的开发人员加入QA团队(可能只是一两个星期)会发生什么?雇员的“类型”更可能是你的雇员类中的一个领域,而不是类的层次结构(可能将其命名为“角色”或“职位”) – spi
也许你想用'ls.add之类的东西来减少你的代码行(新开发人员(“Janel”,“Logrono”,'M',“Alabang”,491));' – fantaghirocco