Académique Documents
Professionnel Documents
Culture Documents
Objet en C#
Notion d’Objet
Méthodes de la classe
Modificateurs de classe :
abstract : une classe abstract ne peut pas être instanciée directement. Elle
sert de classe de base dans une relation d'héritage.
Une méthode est un sous programme identifié par un nom, pouvant recevoir
ou non des paramètres et ayant ou non un type de retour (si la méthode ne
retourne aucune valeur le type de retour est void).
Chaque méthode est caractérisée par sa signature. La signature est
constituée du nom de la méthode et la liste de ses paramètres.
La surcharge de méthode consiste à définir plusieurs méthode qui ont le
même nom mais qui diffèrent par le type et le nombre de paramètres
Les propriétés sont des membres offrant un mécanisme souple pour la lecture,
l'écriture ou le calcul des valeurs de champs privés. Elles peuvent être utilisées
comme si elles étaient des membres de données publiques, mais en fait, ce sont
des méthodes spéciales appelées accesseurs. Elles facilitent l'accès aux
données tout en préservant la sécurité et la souplesse des méthodes.
public Nom_de_la_classe(Liste_paramètres )
{
// instructions de la méthode
}
mq: Boeing
modele: 737
v_max: 900 Km/H
Altitude_max: 10100 m
V_en_cours:0
Altitude_en_cours:0
Quand on instancie plusieurs objets à partir d’une même classe chacun de ces
objets possède ses propres valeurs de variables d’instance. Dans certains cas
on a besoin d’avoir des variables ayant des valeurs indépendantes des objets
instanciés à partir de la même classe, ce genre de variables sont dites des
variables de classe et sont déclarées avec static. Ce genre de variables
peuvent être appelées directement sans instancier un objet de leurs classe, Il
suffit pour cela de précéder la variable avec le nom de sa classe suivi d’un point
Les méthodes de classe sont des méthodes déclarées avec le mot static.
Une méthode déclarée static peut être appelée sans instancier un objet de sa
classe. Il suffit pour cela de précéder la méthode avec le nom de sa classe suivi
d’un point.
Le mot clé base sert à accéder aux membres de la classe de base à partir
d'une classe dérivée
L'accès à une classe de base n'est autorisé que dans un constructeur, une
méthode d'instance ou un accesseur de propriété d'instance.
Le fait d'utiliser le mot clé base à partir d'une méthode statique constitue une
erreur.
Avion_de_ligne Avion_cargo
nombre_de_places charge_max
nombre_de_voyageur charge_actuelle
embarquer_voyageur() Avion_de_chasse
embarquer_voyageur(int n) charger_tout()
debarquer_voyageur(int n) type_armes decharger_tout()
debarquer_tout() quantite
charger_armes(int q)
bombarder()
HAJJOUJI A.Mounim / ISTA GEST 21
Programmation Orientée Objet en C#
VIII.Classe et méthodes abstraites
Classe abstraite: abstract
Une classe abstraite est une classe qui ne peut pas être instanciée. Elle
sert de classe de base dans une relation d’héritage.
Cercle Quadrilateral
rayon largeur
longueur
surface() surface()
perimetre() perimetre()
tracer_figure() tracer_figure()
Exemple: déclaration d’une liste générique nommée lav contenant des Avions
FileInfo Directory
File DirectoryInfo
FileStream DriveInfo
StreamReader Path
StreamWriter
BinaryReader
BinaryWriter
a. Afficher dans une ListeBox les sous dossiers d’un dossier donné
b. Afficher dans une ListeBox les fichiers .jpg d'un répertoire.
c. Créer un répertoire
La Classe Path
La Classe statique Path a des méthodes simplifiant la manipulation des
répertoires:
Exemple:
Si C= "C:\Windows\MonFichier.txt"
Path.GetDirectoryName(C) retourne "C:\Windows
Path.GetFileName(C) retourne "Monfichier.txt"
Path.GetExtension(C) retourne ".txt"
Path.GetFileNameWithoutExtension(C) retourne "MonFichier"
Path.PathRoot(C) retourne "c:\"
Il y a aussi les méthodes GetFullPath ChangeExtension, Combine,
HasExtension...
GetFullPath: Transforme un chemin relatif en chemin absolu à l'aide du
répertoire courant.
La Classe Environment
Donne des informations concernant l'environnement et la plate-forme en
cours ainsi que des moyens pour les manipuler. Par exemple: les
arguments de la ligne de commande, le code de sortie, les paramètres des
variables d'environnement, le contenu de la pile des appels, le temps écoulé
depuis le dernier démarrage du système ou le numéro de version du
Common Language Runtime mais aussi certains répertoires .
HAJJOUJI A.Mounim / ISTA GEST 45
Programmation Orientée Objet en C#
Environment.CurrentDirectory 'donne le répertoire courant : ou le processus
en cours démarre.
Environment.MachineName 'Obtient le nom NetBIOS de l'ordinateur local.
Environment.OsVersion 'Obtient un objet contenant l'identificateur et le
numéro de version de la plate-forme en cours.
Environment.SystemDirectory 'Obtient le chemin qualifié complet du
répertoire du système
Environment.UserName 'Obtient le nom d'utilisateur de la personne qui
a lancé le thread en cours.
La fonction GetFolderPath avec un argument faisant partie de l'énumération
SpecialFolder retourne le répertoire d'un tas de choses:
Exemple: Quel est le répertoire Système?
Environment.GetFolderPath(Environment.SpecialFolder.System)
Exemple: créer une boite de dialogue 'Choix de répertoire'
FolderBrowserDialog fB =new FolderBrowserDialog();
fB.RootFolder = Environment.SpecialFolder.Desktop;
fB.Description = "Sélectionnez un répertoire";
fB.ShowDialog();
If (fB.SelectedPath == String.Empty) MessageBox.Show ("Pas de
sélection");
else MessageBox.Show (fB.SelectedPath);
HAJJOUJI A.Mounim / ISTA GEST 46
fB.Dispose() Programmation Orientée Objet en C#
Travailler sur les fichiers.
Classes FileInfo, File et Stream
Enfin on ferme:
SW.Close();
instruction suivante
HAJJOUJI A.Mounim / ISTA GEST 58
Programmation Orientée Objet en C#
Exemple 1:
static void Main(string[] args) {
int age = 0;
Console.WriteLine("Quel âge avez-vous?");
//code à risque
try
{
age = int.Parse(Console.ReadLine());
Console.WriteLine("Vous avez donc " + age + " ans");
}
//Le code placé ici s'execute si une exception est levée
catch
{
Console.WriteLine("Désolé vous devez écrire un nombre!");
}
finally
{
Console.WriteLine("\n*** Merci de votre visite ***");
}
Console.ReadLine();
HAJJOUJI A.Mounim / ISTA GEST 59
} Programmation Orientée Objet en C#
Exemple 2: Capturer et afficher le message et le type
D’une exception
static void Main(string[] args) {
int x, y ;
double r;
try //code à risque
{
Console.WriteLine(« donner un nombre:");
x = int.Parse(Console.ReadLine());
Console.WriteLine(« donner un autre nombre:");
y = int.Parse(Console.ReadLine());
r=x/y;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + " " + ex.GetType().ToString());
}
finally {
Console.WriteLine("\n*** Merci de votre visite ***");
} HAJJOUJI A.Mounim / ISTA GEST 60
Programmation Orientée Objet en C#
}
Exemple 3: Capturer et traiter plusieurs type d’exception
try
{
uint a = uint.Parse(Console.ReadLine());
Console.Write("Entrez un deuxieme nombre : ");
uint b = uint.Parse(Console.ReadLine());
uint c = a / b;
Console.WriteLine("Le résultat de la division est " + c);
}
catch (OverflowException) //type uint ne peut être négatif
{
Console.WriteLine("Entrez un nombre positif s'il vous plait");
}
catch (DivideByZeroException) //on ne peut diviser par zéro
{
Console.WriteLine("Désolé vous ne pouvez pas diviser par zero");
}
catch (FormatException) //chaine de caractères non autorisées car uint
{
Console.WriteLine("Les chaine de caractères ne sont pas autorisées");
}
finally
{
Console.WriteLine("\n*** Au revoir! ***");
} HAJJOUJI A.Mounim / ISTA GEST 61
Programmation Orientée Objet en C#
Console.ReadLine();
Exemple 4: Générer une exception dans une méthode
cp = (Compte)(bf.Deserialize(fc));// déserialisation
MessageBox.Show(cp.nom_proprietaire + cp.solde.Tostring()
fc.Close();
..
}
Une interface définit les méthodes que des classes (celles qui
implémentent l’interface en question) doivent implémenter.
Les interfaces constituent souvent une alternative aux classes
abstraites. Dans l’interface, on trouve uniquement la signature
de ces méthodes, on ne trouve pas de code (ce qui n’est
possible que dans les classes abstraites). On ne peut pas
non plus trouver de qualificatif comme public, private ou
protected car c’est à la classe implémentant l’interface de
décider.
Exemple:
interface IFigure
{
double surface();
double perimetre();
double perimetre()
{
… code de la méthode perimetre
}
HAJJOUJI A.Mounim / ISTA GEST 72
Programmation Orientée Objet en C#
XIV.Le polymorphisme
Mere x , u ;
Fille y , w ;
.....
x = new Mere( ) ; // instanciation dans le type initial
u = x ; // affectation de références du même type
y = new Fille( ) ; // instanciation dans le type initial
w = y ; // affectation de références du même type
c = new Chien();
a = new Animal();
a.afficher(); //appel de la méthode afficher()
//de la classe Animal
a = c;
a.afficher();//appel de la méthode afficher()
//ayant été redéfinie dans la classe
Chien
// car a se réfère à un objet de type
Chien
Console.ReadKey();
Autre exemple:
Animal a;
Chien c, objC;
objC = new Chien();
a = objC;
if (a is Chien) // on verifie si a se refere à un objet de type Chien
{
c = (Chien)a; //revoi une exception si erreur
//c = a as Chien;// renvoi null si erreur
} else Console.WriteLine("erreur");
HAJJOUJI A.Mounim / ISTA GEST 81
Programmation Orientée Objet en C#
L'opérateur is, qui effectue une vérification de type dynamique, est
utilisé pour vérifier quelle est effectivement la classe d'un objet à
l'exécution.
L'expression : objet is classeT renvoie True si objet est une
instance de la classe désignée par classeT ou de l'un de ses
descendants, et False sinon. Si objet a la valeur null, le résultat est
False.
Mere x ;
Fille y ;
x = new Mere( ) ; // instanciation dans le type initial
if ( x is Fille) // test d'appartenance de l'objet référencé par x à la
bonne classe
y = (Fille)x ;
}
}
HAJJOUJI A.Mounim / ISTA GEST 84
Programmation Orientée Objet en C#
2.3 Redéfinition de méthode:
Exemple
public class Chien:Animal La méthode
{
public int nombreDePattes; afficher() est une
redéfinition de la
//redefinition de la méthode afficher() méthode afficher()
public override void afficher()
{ de la classe Animal
Console.WriteLine("Class Chien");
}
}
HAJJOUJI A.Mounim / ISTA GEST 85
Programmation Orientée Objet en C#
HAJJOUJI A.Mounim / ISTA GEST 86
Programmation Orientée Objet en C#