SlideShare une entreprise Scribd logo
1  sur  16
Classes & objets 
M. DIENG Abdoulaye 
Introduction au C#
Sommaire 
1. Définition d’une classe 
2. Instanciation d’une classe 
3. Constructeurs 
4. Accès aux membres d’un objet 
5. Les membres de classe 
6. Encapsulation 
7. Déclaration d’une propriété
Définition d’une classe 
syntaxe 
Syntaxe de définition d’une classe : 
class nomClasse { 
// Déclaration des attributs 
... 
// Définitions des méthodes 
... 
}
Définition d’une classe 
déclaration d’un attribut 
• La syntaxe de déclaration des attributs est la syntaxe 
classique de déclaration des variables : 
[accès] type nomAttrribut; 
• Contrairement à C++, un attribut peut être initialisé lors 
de sa déclaration. 
• Tout attribut non explicitement initialisé l’est 
automatiquement (0, 0.0, false ou chaîne vide). 
• L’accès est privé par défaut 
• Exemple : 
float hauteur; 
float largeur=2;
Définition d’une classe 
définition d’une méthode 
• Toute méthode doit être directement définie dans la classe 
• Syntaxe: 
[accès] typeRslt nomMethode([arg,…]){ 
<corps de la méthode> 
} 
• L’accès est privé par défaut 
• Exemple : 
public float surface(){ 
return (hauteur*largeur);// attributs visibles 
}
Définition d’une classe 
exemple 
class Rectangle{ 
// déclaration des attributs 
float hauteur; 
float largeur; 
// définition des méthodes 
public float surface(){ 
return (hauteur * largeur); 
} 
public void setHauteur(float hauteur){ 
if (hauteur > 0) 
this.hauteur = hauteur; 
} 
} 
Nb : this est une référence qui remplace l’objet sur lequel la 
méthode est invoquée
Instanciation d’une classe 
• Une instance (ou objet) est de type référence 
• Pour créer un objet d’une classe donnée, il faut : 
• déclarer une référence à l’objet en question ; 
NomClasse nomObjet; 
• l’instancier par new 
nomObjet = new NomClasse(); 
• Syntaxe réduite : 
NomClasse nomObjet = new NomClasse(); 
• La libération de mémoire se fera par le Garbage Collector 
• Exemples : 
Rectangle r1 = new Rectangle();
Constructeur 
présentation 
• Un constructeur est une méthode particulière qui est appelée 
lors de la création d’un objet. 
• Un constructeur porte le même nom que la classe 
• Un constructeur peut admettre zéro, un ou plusieurs 
arguments et n’a pas de valeur de retour (même pas void). 
• Sa tâche principale est d’initialiser les attributs de l’objet. 
• Il peut aussi ouvrir des fichiers ou des connexions. 
• Si une classe ne définit pas explicitement de constructeur, un 
constructeur par défaut sans arguments et qui n’effectue 
aucune initialisation particulière est invoquée. 
• Ce constructeur par défaut ne peut plus être invoqué s’il existe 
un constructeur explicite 
• Une classe peut admettre plusieurs constructeurs.
Constructeur 
exemple 
• Exemple 1 : 
Rectangle(float h, float l){ 
hauteur=h; 
largeur=l; 
} 
• Exemple 2 : 
Rectangle(float dim){ 
hauteur=dim; 
largeur=dim; 
}
Constructeur 
instanciation 
• Syntaxe : 
NomClasse nomObjet = new NomClasse(val1, val2,...); 
• NB : le nombre et les types des valeurs d’initialisation doivent 
se conformer à un constructeur 
• Exemples : 
Rectangle r1 = new Rectangle(8.5,11); 
Rectangle r2 = new Rectangle(12.5);
Accès aux membres d’un objet 
syntaxe 
• Accès à un attribut : 
nomObjet.nomAttribut 
Exemple : 
r1.largeur = 13; 
• NB : le principe de l’encapsulation interdit l’accès direct à un 
attribut. 
• Accès à une méthode : 
nomObjet.nomMéthode([arg1, ...]) 
Exemple : 
Console.Write("La surface du premier rectangle"); 
Console.WriteLine(" est de "+r1.surface());
Membres de classe 
attribut et constante 
• Attribut qui existe même si aucun objet de la classe n’est créé. 
Exemple : le nombre de rectangles créés 
• Déclaré en se servant du mot clé static 
Exemple : public static byte nbRectanglesCrees=0; 
• Accessible en le préfixant du nom de la classe suivi de . 
Exemple : Rectangle.nbRectanglesCrees 
• Une constante est un attribut de classe dont la valeur est fixe 
durant toute l’exécution du programme 
• Une constante de classe est déclarée sans le mot clé static mais 
avec le mot clé const 
Exemple : public const float TVA=0.18f;
Membres de classe 
méthode 
• Une méthode de classe exécute une action indépendante 
d’une instance particulière de la classe 
• Elle permet de manipuler des attributs ou des constantes de 
classe 
• Elle ne doit pas manipuler une variable d’instance 
• Elle est déclarée avec le mot clé static. 
• Elle est accessible comme un attribut de classe
Encapsulation 
présentation 
• L’encapsulation est implémentée par quatre types de 
protection pour les membres d’une classe : 
o public : accessible de partout 
o internal : accessible que dans le namespace 
o protected : accessible que dans la classe et dans ses 
classes dérivées 
o private : accessible que dans la classe. 
• Par défaut, les membres d’une classe sont privés
Encapsulation 
notion de propriété 
• Propriété = un ou deux blocs de code, représentant un 
getter et/ou un setter. 
• Utilité : 
o valider des données avant d'autoriser une modification ; 
o effectuer une action à la suite d'une modification ; 
• Syntaxe : 
[accès] type nomPropriete{ 
get { 
// code qui retourne le valeur 
// d’un attribut 
} 
set { 
// code contenant le mot clé value pour 
// modifier la valeur d’un attribut 
} 
}
Encapsulation 
notion de propriété (exemple et application) 
• Exemple 
class Carre { 
public double coté; // attribut 
public double Aire { // propriété 
get { return coté*coté; } 
set { coté = Math.Sqrt(value); } 
} 
} 
Carre c1 = new Carre(); 
c1.Aire = 9; // appel de set 
Console.WriteLine(c1.coté); // affichage: 3 
Carre c2 = new Carre(); 
c2.coté = 4; 
Console.WriteLine(c2.Aire); // appel de get, affichage: 16

Contenu connexe

Tendances

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donneesAmir Souissi
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIJihenHedhli1
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2Yassine Badri
 
Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Yassine Badri
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generaleAmir Souissi
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de baseAbdoulaye Dieng
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++Abdoulaye Dieng
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 

Tendances (19)

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donnees
 
POO
POOPOO
POO
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
 
Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]
 
Part1
Part1Part1
Part1
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generale
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de base
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 

En vedette

php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Proceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemasProceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemasOpenSistemas
 
2013 03-21~1202@emotion spa-newsletter
2013 03-21~1202@emotion spa-newsletter2013 03-21~1202@emotion spa-newsletter
2013 03-21~1202@emotion spa-newsletterFlemann
 
Publicidad - Capacitación Conceptualizador Junior
Publicidad - Capacitación Conceptualizador JuniorPublicidad - Capacitación Conceptualizador Junior
Publicidad - Capacitación Conceptualizador JuniorB2B Group
 
Inscription des electeurs_avril_2015 par section communale
Inscription des electeurs_avril_2015 par section communaleInscription des electeurs_avril_2015 par section communale
Inscription des electeurs_avril_2015 par section communaleDaniel Alouidor
 
Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...
Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...
Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...Yann Coirault
 
Word 2010 guía-columnas
Word 2010 guía-columnasWord 2010 guía-columnas
Word 2010 guía-columnaslisreyna
 
Histoire evolution murs_vegetaux_patrick_blanc_aujourdhui
Histoire evolution murs_vegetaux_patrick_blanc_aujourdhuiHistoire evolution murs_vegetaux_patrick_blanc_aujourdhui
Histoire evolution murs_vegetaux_patrick_blanc_aujourdhuiLaurent Cheret
 
Antibes les journées du patrimoine
Antibes les journées du patrimoineAntibes les journées du patrimoine
Antibes les journées du patrimoineLECREURER
 
Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...
Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...
Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...Matthias Fille
 
Trabajo pr+üctico n ¦13
Trabajo pr+üctico n ¦13Trabajo pr+üctico n ¦13
Trabajo pr+üctico n ¦13aguchoperondi
 

En vedette (20)

php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Introduction au Jquery
Introduction au JqueryIntroduction au Jquery
Introduction au Jquery
 
Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Proceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemasProceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemas
 
2013 03-21~1202@emotion spa-newsletter
2013 03-21~1202@emotion spa-newsletter2013 03-21~1202@emotion spa-newsletter
2013 03-21~1202@emotion spa-newsletter
 
Publicidad - Capacitación Conceptualizador Junior
Publicidad - Capacitación Conceptualizador JuniorPublicidad - Capacitación Conceptualizador Junior
Publicidad - Capacitación Conceptualizador Junior
 
Inscription des electeurs_avril_2015 par section communale
Inscription des electeurs_avril_2015 par section communaleInscription des electeurs_avril_2015 par section communale
Inscription des electeurs_avril_2015 par section communale
 
Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...
Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...
Intuition Pour une conscience accrue de ce qui nous entoure : laisser parler ...
 
Marche du 8octobre
Marche du 8octobreMarche du 8octobre
Marche du 8octobre
 
Word 2010 guía-columnas
Word 2010 guía-columnasWord 2010 guía-columnas
Word 2010 guía-columnas
 
Tutti contact lesn
Tutti contact lesnTutti contact lesn
Tutti contact lesn
 
Presa 2011-11-10
Presa 2011-11-10Presa 2011-11-10
Presa 2011-11-10
 
Histoire evolution murs_vegetaux_patrick_blanc_aujourdhui
Histoire evolution murs_vegetaux_patrick_blanc_aujourdhuiHistoire evolution murs_vegetaux_patrick_blanc_aujourdhui
Histoire evolution murs_vegetaux_patrick_blanc_aujourdhui
 
Infantil de 3 años
Infantil de 3 añosInfantil de 3 años
Infantil de 3 años
 
Pivot Stick Animator
Pivot Stick Animator Pivot Stick Animator
Pivot Stick Animator
 
Antibes les journées du patrimoine
Antibes les journées du patrimoineAntibes les journées du patrimoine
Antibes les journées du patrimoine
 
Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...
Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...
Mission Inde 2013 - accompagnement de PME développant solutions applicatives ...
 
Publicidad
PublicidadPublicidad
Publicidad
 
Trabajo pr+üctico n ¦13
Trabajo pr+üctico n ¦13Trabajo pr+üctico n ¦13
Trabajo pr+üctico n ¦13
 

Similaire à Csharp2 : classes et objets

fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxTarikElMahtouchi1
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriMansouri Khalifa
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdfAabidiHafid
 
Héritage dans cpp dev informatique ingenierie
Héritage dans cpp dev informatique ingenierieHéritage dans cpp dev informatique ingenierie
Héritage dans cpp dev informatique ingenierieMohammedAmineELHARCH1
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptxSafaeLhr1
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfAabidiHafid
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 

Similaire à Csharp2 : classes et objets (20)

Les Classe en Java
Les Classe en JavaLes Classe en Java
Les Classe en Java
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
 
XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 
Cours de JAVA de base
Cours de JAVA  de baseCours de JAVA  de base
Cours de JAVA de base
 
poo.pdf
poo.pdfpoo.pdf
poo.pdf
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdf
 
Chapitre3 2013 POO
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POO
 
Langage C#
Langage C#Langage C#
Langage C#
 
Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
Java
JavaJava
Java
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Héritage dans cpp dev informatique ingenierie
Héritage dans cpp dev informatique ingenierieHéritage dans cpp dev informatique ingenierie
Héritage dans cpp dev informatique ingenierie
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 

Plus de Abdoulaye Dieng

Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturelAbdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPressAbdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
Cours référencement naturel supdeco techonologie avril-15
Cours référencement naturel supdeco techonologie avril-15Cours référencement naturel supdeco techonologie avril-15
Cours référencement naturel supdeco techonologie avril-15Abdoulaye Dieng
 
Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015Abdoulaye Dieng
 
Architecture ordinateur-echange-de-donnees
Architecture ordinateur-echange-de-donneesArchitecture ordinateur-echange-de-donnees
Architecture ordinateur-echange-de-donneesAbdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Cours référencement naturel supdeco techonologie avril-15
Cours référencement naturel supdeco techonologie avril-15Cours référencement naturel supdeco techonologie avril-15
Cours référencement naturel supdeco techonologie avril-15
 
Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015
 
Architecture ordinateur-echange-de-donnees
Architecture ordinateur-echange-de-donneesArchitecture ordinateur-echange-de-donnees
Architecture ordinateur-echange-de-donnees
 

Csharp2 : classes et objets

  • 1. Classes & objets M. DIENG Abdoulaye Introduction au C#
  • 2. Sommaire 1. Définition d’une classe 2. Instanciation d’une classe 3. Constructeurs 4. Accès aux membres d’un objet 5. Les membres de classe 6. Encapsulation 7. Déclaration d’une propriété
  • 3. Définition d’une classe syntaxe Syntaxe de définition d’une classe : class nomClasse { // Déclaration des attributs ... // Définitions des méthodes ... }
  • 4. Définition d’une classe déclaration d’un attribut • La syntaxe de déclaration des attributs est la syntaxe classique de déclaration des variables : [accès] type nomAttrribut; • Contrairement à C++, un attribut peut être initialisé lors de sa déclaration. • Tout attribut non explicitement initialisé l’est automatiquement (0, 0.0, false ou chaîne vide). • L’accès est privé par défaut • Exemple : float hauteur; float largeur=2;
  • 5. Définition d’une classe définition d’une méthode • Toute méthode doit être directement définie dans la classe • Syntaxe: [accès] typeRslt nomMethode([arg,…]){ <corps de la méthode> } • L’accès est privé par défaut • Exemple : public float surface(){ return (hauteur*largeur);// attributs visibles }
  • 6. Définition d’une classe exemple class Rectangle{ // déclaration des attributs float hauteur; float largeur; // définition des méthodes public float surface(){ return (hauteur * largeur); } public void setHauteur(float hauteur){ if (hauteur > 0) this.hauteur = hauteur; } } Nb : this est une référence qui remplace l’objet sur lequel la méthode est invoquée
  • 7. Instanciation d’une classe • Une instance (ou objet) est de type référence • Pour créer un objet d’une classe donnée, il faut : • déclarer une référence à l’objet en question ; NomClasse nomObjet; • l’instancier par new nomObjet = new NomClasse(); • Syntaxe réduite : NomClasse nomObjet = new NomClasse(); • La libération de mémoire se fera par le Garbage Collector • Exemples : Rectangle r1 = new Rectangle();
  • 8. Constructeur présentation • Un constructeur est une méthode particulière qui est appelée lors de la création d’un objet. • Un constructeur porte le même nom que la classe • Un constructeur peut admettre zéro, un ou plusieurs arguments et n’a pas de valeur de retour (même pas void). • Sa tâche principale est d’initialiser les attributs de l’objet. • Il peut aussi ouvrir des fichiers ou des connexions. • Si une classe ne définit pas explicitement de constructeur, un constructeur par défaut sans arguments et qui n’effectue aucune initialisation particulière est invoquée. • Ce constructeur par défaut ne peut plus être invoqué s’il existe un constructeur explicite • Une classe peut admettre plusieurs constructeurs.
  • 9. Constructeur exemple • Exemple 1 : Rectangle(float h, float l){ hauteur=h; largeur=l; } • Exemple 2 : Rectangle(float dim){ hauteur=dim; largeur=dim; }
  • 10. Constructeur instanciation • Syntaxe : NomClasse nomObjet = new NomClasse(val1, val2,...); • NB : le nombre et les types des valeurs d’initialisation doivent se conformer à un constructeur • Exemples : Rectangle r1 = new Rectangle(8.5,11); Rectangle r2 = new Rectangle(12.5);
  • 11. Accès aux membres d’un objet syntaxe • Accès à un attribut : nomObjet.nomAttribut Exemple : r1.largeur = 13; • NB : le principe de l’encapsulation interdit l’accès direct à un attribut. • Accès à une méthode : nomObjet.nomMéthode([arg1, ...]) Exemple : Console.Write("La surface du premier rectangle"); Console.WriteLine(" est de "+r1.surface());
  • 12. Membres de classe attribut et constante • Attribut qui existe même si aucun objet de la classe n’est créé. Exemple : le nombre de rectangles créés • Déclaré en se servant du mot clé static Exemple : public static byte nbRectanglesCrees=0; • Accessible en le préfixant du nom de la classe suivi de . Exemple : Rectangle.nbRectanglesCrees • Une constante est un attribut de classe dont la valeur est fixe durant toute l’exécution du programme • Une constante de classe est déclarée sans le mot clé static mais avec le mot clé const Exemple : public const float TVA=0.18f;
  • 13. Membres de classe méthode • Une méthode de classe exécute une action indépendante d’une instance particulière de la classe • Elle permet de manipuler des attributs ou des constantes de classe • Elle ne doit pas manipuler une variable d’instance • Elle est déclarée avec le mot clé static. • Elle est accessible comme un attribut de classe
  • 14. Encapsulation présentation • L’encapsulation est implémentée par quatre types de protection pour les membres d’une classe : o public : accessible de partout o internal : accessible que dans le namespace o protected : accessible que dans la classe et dans ses classes dérivées o private : accessible que dans la classe. • Par défaut, les membres d’une classe sont privés
  • 15. Encapsulation notion de propriété • Propriété = un ou deux blocs de code, représentant un getter et/ou un setter. • Utilité : o valider des données avant d'autoriser une modification ; o effectuer une action à la suite d'une modification ; • Syntaxe : [accès] type nomPropriete{ get { // code qui retourne le valeur // d’un attribut } set { // code contenant le mot clé value pour // modifier la valeur d’un attribut } }
  • 16. Encapsulation notion de propriété (exemple et application) • Exemple class Carre { public double coté; // attribut public double Aire { // propriété get { return coté*coté; } set { coté = Math.Sqrt(value); } } } Carre c1 = new Carre(); c1.Aire = 9; // appel de set Console.WriteLine(c1.coté); // affichage: 3 Carre c2 = new Carre(); c2.coté = 4; Console.WriteLine(c2.Aire); // appel de get, affichage: 16