Classe Entreprise

Résolu/Fermé
NoNo - Modifié le 5 déc. 2017 à 20:05
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 7 déc. 2017 à 00:45
Bonjour,

je bloque sur une question concernant un rapport que j'ai à faire. J'ai deja fait une bonne partie de ce qui est demandé mais la classe Entreprise qui est demandé de faire me pose beaucoup de problème. J'ai envie d'utiliser la méthode Scanner pour la partie "suppression à partir du nom" mais je sais pas comment m'y prendre. Je viens donc vers vous si jamais quelqu'un peut m'éclairer !

VOICI LES CONSIGNES.
3- La classe Entreprise On souhaite stocker des informations sur l’ensemble des employés d’une entreprise. Proposer une classe Entreprise dont chaque instance contient une liste d’employés. On programmera les méthodes suivantes :
(a) ajout d’un employé;
(b) suppression d’un employé désigné par son nom
(c) calcul du nombre d’employés d’un type donné ;
(d) calcul de la liste des employés occupant un bureau donné ;
(e) calcul du salaire moyen des différentes catégories d’employés

Merci d'avance !

VOICI MON CODE.

//IMPORT
import java.util.* ;

//CLASSE EMPLOYE
abstract class Employe {

 String nom ;
 String prenom ;
 int age ;
 String dateService ;
 int bureau ;

 public Employe(String prenom, String nom, int age, String dateService, int bureau) {

  this.nom = nom ;
  this.prenom = prenom ;
  this.age = age ;
  this.dateService = dateService ;
  this.bureau = bureau ;
 }

 public abstract double calculerSalaire() ;

 public String getString() {

  return "L'employé" ;
 }

 public String getNom() {

  return getString() + prenom + " " + nom ;
 }
}

//CLASSE SERVICEVENTE
abstract class ServiceVente extends Employe {

 double chiffreAffaire ;

 public ServiceVente(String prenom, String nom, int age, String dateService, int bureau, double chiffreAffaire) {
  
  super(prenom, nom, age, dateService, bureau) ;
  this.chiffreAffaire = chiffreAffaire ;
 }

 public double getChiffreA() {

  return chiffreAffaire ;
 }
}

//CLASSE VENTE
class Vente extends ServiceVente {

 final static double PourcentageV = 0.2 ;
 final static int PrimeV = 400 ;

 public Vente(String prenom, String nom, int age, String dateService, int bureau, double chiffreAffaire) {

  super(prenom, nom, age, dateService, bureau, chiffreAffaire) ;
 }
 
 public double calculerSalaire() {

  return PourcentageV * getChiffreA() + PrimeV ;
 }

 public String getString() {

  return "L'employé dans la vente " ;
 }
}

//CLASSE REPRESENTANT
class Representant extends ServiceVente {

 final static double PourcentageR = 0.2 ;
 final static int PrimeR = 800 ;

 public Representant(String prenom, String nom, int age, String dateService, int bureau, double chiffreAffaire) {
  super(prenom, nom, age, dateService, bureau, chiffreAffaire) ;
 }

 public double calculerSalaire() {

  return PourcentageR * getChiffreA() + PrimeR ;
 }

 public String getString() {

  return "Le représentant des ventes " ;
 }
}

//CLASSE PRODUCTION
class Production extends Employe {

 final static int Facteurx = 5 ;
 static int nombreUnite ;

 public Production(String prenom, String nom, int age, String dateService, int bureau, int nombreUnite) {

  super(prenom, nom, age, dateService, bureau) ;
  this.nombreUnite = nombreUnite ;
 }

 public double calculerSalaire() {

  return Facteurx * nombreUnite ;
 }

 public String getString() {

  return "L'employé de production " ;
 }
}

//CLASSE MANUTENTION
class Manutention extends Employe {

 final static int Facteury = 50 ;
 static double nombreHeure ;

 public Manutention(String prenom, String nom, int age, String dateService, int bureau, int nombreHeure) {

  super(prenom, nom, age, dateService, bureau) ;
  this.nombreHeure = nombreHeure ;
 }

 public double calculerSalaire() {

  return Facteury * nombreHeure ;
 }

 public String getString() {

  return "Le manutentionnaire " ;
 }
}

//CLASSE ENTREPRISE
class Entreprise {

 Employe[] personnel ;
 int nombreEmploye ;
 int max = 1000 ;

 public Entreprise() {

  personnel = new Employe[max] ;
  nombreEmploye = 0 ;
 }

 public void ajoutEmploye(Employe e) {

  ++nombreEmploye ;
  
  if(nombreEmploye <= max) {

   personnel[nombreEmploye-1] = e ;
  }
  else {

   System.out.println("L'entreprise a trop d'employé.") ;
  }
 }

 public void supprimerEmploye(Employe e) {

  nombreEmploye = nombreEmploye - 1 ;

  if(nombreEmploye != 0) {

   personnel[nombreEmploye-1] = e ;
  }
  else {
   System.out.println("Il n'y a plus d'employé dans l'entreprise.") ;
  }
 }

 public double salaireMoyen () {

  double sum= 0 ;

  for(int i = 0 ; i < nombreEmploye ; i++) {

   sum += personnel[i].calculerSalaire() ;
  }

  return sum / nombreEmploye ;
 }
}

//CLASSE SALAIRE
class Salaires {
 public static void main(String[] args) {
  
  Entreprise a = new Entreprise() ;
  a.ajoutEmploye(new Vente("X", "X", 23, "11/01/1994", 3, 20000)) ;
  a.ajoutEmploye(new Representant("X", "X", 38, "28/11/2000", 4, 30000)) ;
  a.ajoutEmploye(new Production("X", "X", 21, "22/11/1995", 5, 1000)) ;
  a.ajoutEmploye(new Manutention("X", "X", 22, "29/11/1994", 6 , 156)) ;
//  a.supprimerEmploye(new Vente("X", "X", 23, "11/01/1994", 3, 20000)) ;
  System.out.println("Le salaire moyen dans l'entreprise est de " + a.salaireMoyen() + " euros.") ;
 }
}


Capitaine Kirk, j'ai ajouté les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
6 déc. 2017 à 02:05
Bonjour,

Premièrement, la méthode doit prendre le nom comme paramètre *, ça sera plus correcte à mon avis.

Deuxièmement, il faut localiser l'employé à supprimer, c'est à dire, parcourir le tableau jusqu'à l'employé qui porte le même nom, ensuite il faut décaler tous les employés qui viennent après par une position en moins. Du genre :

     for(int i = position; i < nbrEmployes - 1; i++)
          employes[i] = employes[i + 1];


Troisièmement, si c'est possible, utilisez le ArrayList, ça sera beaucoup plus simple. Mais, si l'objectif de l'exercice est la manipulation des tableaux, alors il faut le faire en tableaux bien sûre.

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

Bon Courage.
0
Bonjour,

merci pour votre réponse rapide ! j'ai modifié mon code et ca à l'air de plutot bien marché.

	public void supprimerEmploye(String nom) {

if(nombreEmploye != 0) {

nombreEmploye = nombreEmploye - 1 ;
int position = 0 ;

for(int i = position; i < nombreEmploye - 1; i++)
personnel[i] = personnel[i + 1];

}
else {
System.out.println("Il n'y a plus d'employé dans l'entreprise.") ;
}
}


J'ai une autre question, pour les 3 (c, d, e). Faut il que je créais un tableau pour chaque type de métier afin de pouvoir compter le nombre de personnel pour chaque type ou il y a un moyen de faire cela à partir de mon tableau personnel [] ?
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
7 déc. 2017 à 00:45
Vous pouvez utiliser l'opérateur "instanceof" pour déterminer la classe de l'Employé sans avoir à créer plusieurs tableaux.

https://www.javatpoint.com/downcasting-with-instanceof-operator

Vous devez utiliser une structure if ... else if ... else if ... else.
0