25 Jan2016
Hiérarchie de type Personne
Objectif :
- Implémentation correcte de l’évolution des objets dans le temps (héritage, classe abstraite)
Énoncé :
Le directeur des systèmes d’information de la société TOUBKAL-IT souhaite développer un module pour la gestion des utilisateurs de son service, pour cela il vous a fait appel pour réaliser cette tâche.
Le diagramme de classe a été établi par un analyste afin de mettre en place une base de données sous ORACLE ou MySQL :
- Créer la classe abstraite « Personne» dans le package « ma.projet ».
- Créer les classes «Developpeur» et «Manager» dans le package «ma.projet.bean ».
Qu’est-ce que vous remarquez ?
- Redéfinir la méthode calculerSalaire().
Sachant que :
- Le développeur aura une augmentation de 20% par rapport à son salaire normal.
- Le manager aura une augmentation de 35% par rapport à son salaire normal.
- Créer deux développeurs et deux managers.
- Afficher les informations des objets crées.
Sous la forme :
Le salaire du manager LACHGAR Mohamed est : 30 000 dh, son service : Informatique
Le salaire du développeur SALIM karim est : 10 000 dh, sa spécialité : PHP
- Créer un objet de type Personne. Qu’est-ce que vous remarquez ?
Architecture du projet :
La classe Personne :
package ma.projet; public abstract class Personne { protected int id; protected String nom; protected String prenom; protected String mail; protected String telephone; protected double salaire; private static int cmp; public Personne(String nom, String prenom, String mail, String telephone, double salaire) { this.id = ++cmp; this.nom = nom; this.prenom = prenom; this.mail = mail; this.telephone = telephone; this.salaire = salaire; } public abstract double calculerSalaire(); }
La classe Développeur :
package ma.projet.beans; import ma.projet.Personne; public class Developpeur extends Personne { private String specialite; public Developpeur(String nom, String prenom, String mail, String telephone, double salaire, String specialite) { super(nom, prenom, mail, telephone, salaire); this.specialite = specialite; } @Override public double calculerSalaire() { return 1.2 * this.salaire; } public String affiche() { return "Le salaire du Developpeur " + this.nom + " " + this.prenom + " est : " + this.calculerSalaire() + " sa specialite : " + this.specialite; } }
La classe Manager :
package ma.projet.beans; import ma.projet.Personne; public class Manager extends Personne { private String service; public Manager(String nom, String prenom, String mail, String telephone, double salaire, String service) { super(nom, prenom, mail, telephone, salaire); this.service = service; } @Override public double calculerSalaire() { // TODO Auto-generated method stub return 1.35 * this.salaire; } public void affiche() { System.out.println("Le salaire du Manager " + this.nom + " " + this.prenom + " est " + this.calculerSalaire() + " son service est " + this.service); } }
La classe de Test :
package ma.projet.test; import ma.projet.beans.Developpeur; import ma.projet.beans.Manager; public class Test { public static void main(String[] args) { Manager managers[] = new Manager[2]; managers[0] = new Manager("RAMI", "Amal", "rami [AT] gmail [DOT] com", "0563424", 2000, "Informatique"); managers[1] = new Manager("ALAMI", "Said", "rami [AT] gmail [DOT] com", "0563424", 4000, "Comptabilité"); for (Manager m : managers) m.affiche(); Developpeur devs[] = new Developpeur[2]; devs[0] = new Developpeur("SENHADJI", "Samir", "samir [AT] gmail [DOT] com", "0634435", 4000, "JAVA"); devs[1] = new Developpeur("ALAOUI", "Karim", "samir [AT] gmail [DOT] com", "0634435", 6000, "C++"); for (Developpeur dev : devs) { System.out.println(dev.affiche()); } } }
Remarques :
- Impossible d'instancier la classe Personne puisque c'est une classe Abstraite.
- Une classe abstraite ne peut pas être instanciée.
- Une classe dérivée d'une classe abstraite ne redéfinissant pas toutes les méthodes abstraites sera elle-même abstraite.
Sélectionnez le fichier à afficher.
|