.hovertable {
font-family: verdana,arial,sans-serif;
font-size:11px;
margin: -2px;
width: 100%;
overflow: hidden;
background: #FFF;
color: #024457;
border:2px solid #167F92;
border-radius: 10px;
border-collapse: separate;
}
.hovertable th {
background-color:#c3dde0;
border-width: 1px;
color:#024457;
padding: 8px;
border-: solid;
border-color: #a9c6c9;
}
.hovertable tr {
border: 1px solid #D9E4E6;
&:nth-child(odd) { // highlight the odd rows with a color
background-color: #EAF3F3;
}
.hovertable td {
border-width: 1px;
padding: 8px;
border-: solid;
border-color: #a9c6c9;
}
summary {
cursor: pointer;
font-size: 16px;
font-weight: bold;
text-decoration-line: underline;
content: “+”;
}
.coin {
background-color:#E4EFFF;
border:1px solid #9FC6FF;
padding:5px;
/*arrondir les coins en haut à gauche et en bas à droite*/
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px;
font-family: ‘Trebuchet MS’, Verdana, sans-serif;
}
c#: Les constructeurs
//
Définitions
Définitions
- Lorsqu’on utilise le mot clé new pour créer un objet, le runtime doit construire cet objet en utilisant la définition de la classe.
- Le runtime doit récupérer une partie de la mémoire du système d’exploitation, la remplir avec les champs définis par la classe, puis appeler un constructeur pour effectuer l’initialisation nécessaire.
- Un constructeur est une méthode spéciale qui s’exécute automatiquement lorsqu’on crée une instance d’une classe. Il a le même nom que la classe, et il peut prendre des paramètres, mais il ne peut pas retourner de valeur (pas même void).
- Chaque classe doit avoir un constructeur. Si vous n’en écrivez pas, le compilateur génère automatiquement un constructeur par défaut (malheureusement, le constructeur généré par le compilateur ne fait rien).
- Vous pouvez écrire vote propre constructeur par défaut assez facilement (ajoutez juste une méthode publique ayant le même nom que la classe et ne retournant aucune valeur).
- L’exemple suivant illustre la classe Cercle avec un constructeur par défaut qui initialise le champ rayon à 0 :
class Cercle
{
private int rayon;
public Cercle()//constructeur par défaut
{
rayon=0;
}
public double Aire()
{
return Math.Pi*rayon*rayon;
}
}
Surcharge des constructeurs
Surcharge des constructeurs
Vous devez maintenant déclarer une ‘variable Cercle, la pointer vers un objet Cercle nouvellement créé, puis appeler sa méthode Aire. Cependant, il reste un dernier problème. L’aire de tous les objets Cercle sera toujours 0 car le constructeur par défaut fixe le rayon à 0 et reste à 0 ;
Le champ rayon est privé, et il n’y a pas de moyen facile de changer sa valeur une fois qu’il a été initialisé. Vous devez cependant vous rendre compte qu’un constructeur est juste un type spécial de méthode et qu’il peut, comme toutes les méthodes, être surchargé. Tout comme il y a plusieurs versions de la méthode Console.WriteLine, chacune prenant des paramètres différents, vous pouvez aussi écrire des versions différentes d’un constructeur. Vous pouvez ajouter un constructeur à la classe Cercle, avec le rayon comme paramètre, de la manière suivante :
Class Cercle
{
private int rayon;
public Cercle() // constructeur par défaut
{
rayon = 0;
}
public Cercle(int rayonInitial) // constructeur surchargé
{
rayon = rayonInitial;
}
public double Aire()
{
return Math.PI * rayon * rayon;
}
}
Vous pouvez alors utiliser ce constructeur lors de la création d’un nouvel objet Cercle :
Cercle c;
C = new Cercle(45);
- Lorsqu’on génère l’application, le compilateur détermine quel constructeur il doit appeler en se basant sur les paramètres que vous spécifiez à l’opérateur new. Dans cet exemple, vous avez transmis un int, donc le compilateur génère du code qui appelle le constructeur qui prend un paramètre int.
- Vous devez toutefois faire attention à une excentricité du langage c#: si vous écrivez votre propre constructeur pour une classe, le compilateur ne génère pas de constructeur par défaut. Par conséquent, si vous écrivez votre propre constructeur qui accepte plusieurs paramètres et que vous voulez aussi un constructeur par défaut, vous devez écrire constructeur par défaut vous même.
Exercices d’application
- c#: Exercice E0125012017: Déclaration des classes (classe apprenant) et utilisation des constructeurs
|
|
(adsbygoogle = window.adsbygoogle || []).push({});
|