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