2017-10-06 4 views
-2

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!

+0

"... 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? –

+0

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

+0

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

Répondre

-1

Tout d'abord, vous ne devez pas implémenter ICompensation dans la classe du bean. La classe Bean contiendra uniquement des getters, des constructeurs &. Vous devez créer une autre classe qui implémentera l'ICompensation. Là, vous allez écrire le code pour les calculs et d'autres méthodes.

Dans la base de données, vous pouvez ajouter une autre colonne "Rôle" qui définira le rôle de l'employé. Par cette approche, vous n'avez pas besoin de créer des méthodes supplémentaires telles que QA, Developer, Manager.

veuillez regarder dans le lien suivant. Ici, ils ont essayé de développer une page de connexion en utilisant le modèle MVC. Vous pouvez simplement ignorer les pages jsp et vous concentrer sur les contrôleurs et les beans. https://krazytech.com/programs/a-login-application-in-java-using-model-view-controllermvc-design-pattern

+0

Merci! mal regarder dans ce lien. Mais quelle est la classe de bean btw, je ne sais pas encore, pourquoi il ne devrait pas implémenter une interface? – LogronJ

+0

Bonjour, je suis désolé d'être en retard. Tout d'abord, laissez-moi vous parler de la classe de haricots. C'est un composant logiciel réutilisable. Un bean encapsule de nombreux objets dans un objet, nous pouvons donc accéder à cet objet à partir de plusieurs endroits. En outre, il fournit la maintenance facile. Une classe de bean peut implémenter une interface. Mais pas dans votre cas. vous n'en avez pas besoin ici. S'il vous plaît regarder dans le formulaire de détails google. –