J'ai une petite tâche sur l'ajout et l'affichage de différents types d'employés (départements différents) au travail et différents avantages salariaux &, en utilisant l'approche POO. Je ne suis pas sûr si mon code est correct en termes de réutilisation du code & si j'ai vraiment rencontré l'approche de codage OOP ... Jusqu'à présent, j'ai affiché 1 employé chaque type/département, je les ai fait comme un nom de classe. code ci-dessous). Ma question est si j'ajoute un nouvel employé je vais déclarer un autre objet de type Employé encore. Et s'il y a beaucoup d'employés, je vais avoir beaucoup d'objets. Comment puis-je diminuer cela et puis-je savoir si mon approche de codage OOP est correcte jusqu'à présent? Merci beaucoup! Voici mon code:Comment ajouter un nouvel employé sans déclarer beaucoup de noms d'objets
//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());
}
}
J'ai encore 2 classes qui sont BA & classe Manager mais j'inclure coutume ici parce qu'il est tout simplement avoir le même contenu à l'autre classe dérivée.
//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();
}
}
}
Comment faire ajouter un autre employé w/o déclarant beaucoup d'objets et peut-je savoir si mon approche de codage OOP est correcte jusqu'à présent, je pense qu'il ya beaucoup de codes redondants ici, comment l'atténuer? THX!
"... ajouter un autre employé sans déclarer beaucoup d'objets ..." Comment définissez-vous "beaucoup"? Et qu'est-ce que vous pensez en avoir trop? –
Qu'y a-t-il de si différent entre un développeur et un QA que vous avez besoin d'une classe différente pour le gérer? Aimeriez-vous la nécessité de mettre en œuvre une nouvelle classe si vous avez besoin de gérer un concierge? ou un PDG? que se passe-t-il lorsque votre développeur rejoint l'équipe QA (peut-être juste une ou deux semaines)? le "type" d'employé est plus probablement un champ de votre classe d'employés que d'une hiérarchie de classes (peut-être le nom "rôle" ou "position") – spi
peut-être vous voulez réduire vos lignes de code avec quelque chose comme 'ls.add (nouveau développeur ("Janel", "Logrono", "M", "Alabang", 491)); ' – fantaghirocco