[C#] Classes
Par Ramy • 24 Février 2018 • 2 881 Mots (12 Pages) • 560 Vues
...
Lorsqu’une classe ne possède aucun constructeur, un constructeur par défaut rudimentaire est fourni automatiquement à partir de la classe de base de tous les objets : la classe Object. Le constructeur par défaut initialise les champs à leur valeur par défaut.
Il est possible de réaliser un ou plusieurs constructeurs personnalisés.
Lorsque l’opérateur new est invoqué en association avec un constructeur il renvoie une référence à l'instance nouvellement allouée et initialisée du type classe.
La référence de l’objet désigne une instance d’une classe qui dispose d'un exemplaire unique des attributs déclarés dans la classe. Elle correspond à l'adresse de l'objet en mémoire centrale.
Lors de l’instanciation, les méthodes ne sont pas dupliquées.
Instanciation de la classe Compte pour créer un objet unCompte
Compte unCompte = new Compte(102535, "Dupont");
La déclaration d’une variable sous la forme nom_classe nom_variable; (Compte unCompte;) permet simplement de déclarer une variable de type référence d’objet qui au départ ne désigne aucun emplacement mémoire. (Nous considérons ici nom_classe comme une classe classique c'est-à-dire une classe référence).
Allocation de la mémoire
Type valeur
La déclaration d’une variable, qu’elle soit de type simple ou structuré a pour conséquence de lui allouer un emplacement en mémoire. Nous utilisons le nom de la variable pour désigner son adresse mémoire (@ : l’adresse de l’emplacement en mémoire).
Exemple :[pic 3]
[pic 4]
char lettre;
@1
@2
@3
@4
@5
@6
@7
@8 A
lettre = ‘A’
@9
@10
@11
@12
De même pour une variable qui occupe plusieurs cases (octets en mémoire), le nom de la variable désigne l’adresse du premier octet.
Type référence
Les objets sont créés dynamiquement (au cours de l'exécution du programme) par instanciation de la classe (opérateur new). Cette opération alloue dynamiquement de la mémoire dans un segment de mémoire particulier qu’on nomme le tas. La variable objet est de type référence; elle ne contient pas la valeur des attributs de l'objet, mais leur adresse (leur référence) en mémoire.
Compte unCompte;
unCompte désigne la référence de l'objet. L'objet est seulement déclaré et non crée. La référence ne donne aucune adresse.
- [pic 5]
unCompte = new Compte(102535, "Dupont");
la référence d'objet correspond maintenant à l'adresse mémoire @3478 (simplifiée). Cette adresse se situe dans le segment de mémoire nommé le tas. A cette adresse on trouve les valeurs des attributs de l'objet.
[pic 6]
Compte unCpt;
unCpt = unCompte;
la variable objet unCpt contient maintenant la même référence que unCompte et désigne donc le même objet.
[pic 7]
- Objet
Un objet est une instance d’une classe. C’est une abstraction d’une donnée définie par :
OBJET = identité + état + comportement
L’identité d’un objet est généré par le système lors de l’instanciation. Elle permet de référencer l’objet indépendamment des autres. Il s'agit de la référence de l'objet c'est-à-dire son adresse en mémoire centrale.
L’état d’un objet est constitué des valeurs des attributs déclarés dans sa classe.
Le comportement d’un objet est défini par l’ensemble des méthodes auxquelles réagit l’objet.
On dit aussi que les méthodes auxquelles réagit l’objet constituent les services qu’il peut rendre.
- Encapsulation
L’encapsulation consiste à regrouper dans une même entité l’état et le comportement d’un objet. Elle permet également de protéger en la masquant, l’implémentation de l’état et du comportement de l’objet.
Techniquement, la classe fournit le mécanisme qui permet de définir l’interface des objets (leur partie visible ou publique, généralement leur comportement) et le fonctionnement interne (la partie masquée ou privée) des objets.[pic 8]
Classe Compte
numCompte
nomTitulaire
solde
Compte()
Debiter()
Crediter()
Solde()
[pic 9]
En dehors du corps de la classe Compte, il est interdit d’accéder aux membres privés.
- Message
Les objets communiquent entre eux en s’envoyant des messages.
Un message est une demande de service envoyée à un objet par un autre objet.
Il est assimilé à un appel d’action nommée de la forme :
Message = objet.méthode
...