Jan.01
TP3 – Classe abstraite
Rappel :
– Les classes abstraites servent à définir des concepts incomplets qui seront complétés dans les sous-classes.
– Une méthode abstraite est une méthode dont l’implémentation n’est pas fournie. Cette méthode devra être redéfinie dans une des sous-classes.
– Une classe qui contient au moins une méthode abstraite doit être déclarée abstract.
– 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.
Problème :
Le directeur des systèmes d’information de la société DEVPRP 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.
Les personnes sont caractérisées par le schéma suivant :
Remarque : une classe abstraite et une méthode abstraite sont représentées en italique dans un diagramme de classe.
- Créer la classe abstraite « Personne».
- Créer les classes «Developpeur» et «Manager».
- Redéfinir la méthode calculerSalaire() Sachant que : Le développeur aura une augmentation de 20% par rapport à son salaire normal, portant 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 suivante :
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é : Java
- Créer un objet de type Personne. Qu’est-ce que vous remarquez ?
Correction
La classe Personne
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GestionPersonnel { abstract class Personne { protected int id; protected string nom; protected string prenom; protected string email; protected string tel; protected double salaire; public abstract double CalculerSalaire(); } }
La classe Manager
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GestionPersonnel { class Manager : Personne { private string service; public Manager() { } public Manager(int _id, string _nom, string _prenom, string _email, string _tel, double _salaire, string _service) { base.id = _id; base.nom = _nom; base.prenom = _prenom; base.email = _email; base.tel = _tel; base.salaire = _salaire; this.service = _service; } public override double CalculerSalaire() { return this.salaire * 1.35; } public new string ToString() { return "Le salaire du manager " + base.nom + " " + base.nom + " est : " + this.CalculerSalaire() + " DH, son service :" + this.service; } } }
La classe Developpeur
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GestionPersonnel { class Developpeur : Personne { private string specialite; public Developpeur() { } public Developpeur(int _id, string _nom, string _prenom, string _email, string _tel, double _salaire, string _specialite) { base.id = _id; base.nom = _nom; base.prenom = _prenom; base.email = _email; base.tel = _tel; base.salaire = _salaire; this.specialite = _specialite; } public override double CalculerSalaire() { return this.salaire*1.2; } public override string ToString() { return "Le salaire du développeur " + base.nom + " " + base.nom + " est : " + this.CalculerSalaire() + " DH, sa spécialité :" + this.specialite; } } }
La classe Program
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GestionPersonnel { class Program { static void Main(string[] args) { Developpeur d = new Developpeur(1, "Salim", "karim", "karim@gmail.com", "0677000011", 8000.00, "c#"); Manager m = new Manager(2, "LACHGAR", "Mohamed", "Mohamed@gmail.com", "0660000011", 7000.00, "Informatique"); Console.WriteLine(d); Console.WriteLine(m); Console.ReadLine(); } } }
Nassour Ibrahim Daoud
Mon contact en privé 0023566356285