poo : programmation orientée objet. présentation david ansart département informatique – bureau...
TRANSCRIPT
![Page 1: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/1.jpg)
POO :Programmation Orientée Objet
![Page 3: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/3.jpg)
Intérêt de la POO Le code est plus sûr
Les programmes sont plus clairs
La maintenance des applications est facilitée
Le code est facilement réutilisable
Il est facile de créer de nouveaux algorithmes légèrement différents par clonage d’un algorithme existant
Il est facile de faire évoluer des programmes
![Page 4: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/4.jpg)
Langages Objets C++ Java Smalltalk Eiffel
![Page 5: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/5.jpg)
les caractéristiques de l’Objet
La 1ère étape consiste à déterminer les entités que l'on souhaite
manipuler la description générique qui relie
toutes ses entités.
![Page 6: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/6.jpg)
Exemple Prenons ces informations :
14 Juillet 1789 (Prise de la Bastille) 11 Novembre 1918 (Armistice) 07 Mars 2005
Ce sont des dates. Chaque date se caractérise par :
un jour un mois une année.
![Page 7: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/7.jpg)
Les Dates
Date
• Jour
• Mois
• Année
Prise de la Bastille• 14
• Juillet
• 1789
Armistice
• 11
• Novembre
• 1918
Une Date
• 7
• Mars
• 2005
![Page 8: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/8.jpg)
Classes Le Jour, le Mois et l’Année sont les
attributs d’une Date.
Cet ensemble d’attributs est appelé une Classe.
![Page 9: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/9.jpg)
Objets Le 14 Juillet 1789 et le 11
Novembre 1918 sont chacune des instances de la classe Date.
Chacune de ces dates est appelée un Objet.
![Page 10: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/10.jpg)
Autre Exemple : Les planètes Saturne : planète gazeuse. Son diamètre est de
120.536 km. Elle est à une distance moyenne de 1.426.725.400 km du Soleil.
Mars : planète rocheuse. Son diamètre est de 6794 km. Elle est à une distance moyenne de 227.936.640 km du Soleil.
Jupiter : planète gazeuse. Son diamètre est de 142.984 km. Elle est à une distance moyenne de 779 millions de km du Soleil.
Terre : planète rocheuse. Son diamètre est de 12.756,28 km. Elle est à une distance moyenne de 150.000.000 km du Soleil.
![Page 11: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/11.jpg)
Planète (suite)
Ces planètes ont en commun : Le Type : Rocheuse, Gazeuse La Distance au Soleil : 227936640,
779 millions, 1426725400, 150000000
Le Diamètre : 12756.28, 120536, 142984, 6794
![Page 12: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/12.jpg)
La classe Planete
Planete•Type
•DistanceAuSoleil
•Diametre
Terre• Rocheuse
• 150000000
• 12756,28
Saturne• Gazeuse
• 1426725400
• 120536
Mars• Rocheuse
• 227936640
• 6794
Jupiter• Gazeuse
• 779 millions
• 142984
![Page 13: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/13.jpg)
Encore un Exemple Pierre, 19 ans, étudiant en SRC.
groupe 1, sous-groupe 2. Nathalie, étudiante en
informatique, a 18 ans. Elle est dans le sous-groupe 1 du Groupe 2.
Paul, un garçon de 21 ans, est en GEA. Il est dans le groupe 3, sous-groupe 2.
![Page 14: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/14.jpg)
Etudiant
Ici, un étudiant se caractérise par age département groupe sous-groupe sexe
![Page 15: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/15.jpg)
Etudiant – 1ère possibilité
Etudiant
• Age
• Departement
• Groupe
• SousGroupe
• Sexe
Pierre
• 19
• SRC
• 1
• 2
• Garçon
Nathalie
• 18
• INFO
• 2
• 1
• Fille
Paul
• 21
• GEA
• 3
• 2
• Garçon
![Page 16: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/16.jpg)
Etudiant – 2ème possibilité
Etudiant
• Prénom
• Age
• Departement
• Groupe
• SousGroupe
• Sexe
Etudiant1
• Pierre
• 19
• SRC
• 1
• 2
• Garçon
Etudiant3
• Nathalie
• 18
• INFO
• 2
• 1
• Fille
Etudiant2
• Paul
• 21
• GEA
• 3
• 2
• Garçon
![Page 17: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/17.jpg)
Définir une classe en C++
class CDate{
int Jour;int Mois;int Annee;
};
class NomClasse{
typeAttribut1 nomAttribut1;typeAttribut2 nomAttribut2;typeAttribut3 nomAttribut3;typeAttribut4 nomAttribut4;…
};
![Page 18: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/18.jpg)
Objet en C++
Comment créer un objet priseBastille de type CDate ?
La classe CDate est un type comme un autre (int, char…)
{CDate priseBastille;
}
![Page 19: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/19.jpg)
Initialiser un ObjetPour l’instant, notre objet priseBastille
n’est pas encore le 14 Juillet 1789.
Spécifier chaque attribut à la main
{ priseBastille.Jour = 14; priseBastille.Mois = 07; priseBastille.Annee =
1789;}
![Page 20: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/20.jpg)
Initialiser un Objet
Autre exemple : la date armistice que l'on souhaite initialiser au 11 Novembre 1918
{CDate armistice;armistice.Jour=11;armistice.Mois=11;armistice.Annee=1918;
}
![Page 21: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/21.jpg)
Intérêt de la POO
Spécifier des comportements génériques communs à tous les objets de notre classe.
Par exemple : s'initialiser s'afficher vérifier si c'est contemporain
![Page 22: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/22.jpg)
Initialiserclass CDate{
int Jour ;int Mois ;int Annee ;
void InitDate(int jour, int mois, int
annee){
Jour = jour; Mois = mois;Annee = annee;
}};
![Page 23: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/23.jpg)
Afficherclass CDate{ int Jour ;
int Mois ;int Annee ;
void InitDate(int jour, int mois, int
annee){…}
void Affiche()
{ cout
<< Jour << "/" << Mois << "/" <<Annee ;}
};
![Page 24: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/24.jpg)
Contemporainclass CDate{ int Jour;
int Mois;int Annee;
void InitDate(int jour, int mois, int annee)
{…}
void Affiche(){…}
bool Contemporain()
{ if( Annee >= 2000 )
return true; return false;}
};
![Page 25: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/25.jpg)
Exemple{
CDate priseBastille; priseBastille.InitDate(14,07,1789);CDate armistice; armistice.InitDate(11,11,1918);
cout <<"La date "; priseBastille.Affiche(); cout <<" est elle contemporaine ? "
<< priseBastille.Contemporaine()<<endl;
cout <<"La date "; armistice.Affiche(); cout <<" est elle contemporaine ? "
<< armistice.Contemporaine()<<endl;}
![Page 26: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/26.jpg)
Résultat{ CDate priseBastille; CDate armistice;
priseBastille.InitDate(14,07,1789); cout <<"La date "; priseBastille.Affiche(); cout <<" est elle contemporaine ? " <<
priseBastille.Contemporaine()<<endl; armistice.InitDate(11,11,1918); cout <<"La date "; armistice.Affiche(); cout <<" est elle contemporaine ? " <<
armistice.Contemporaine()<<endl;}
La date 14/07/1789 est elle contemporaine ? no
La date 11/11/1918 est elle contemporaine ? no
![Page 27: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/27.jpg)
Initialiser un Objet – 2èmeIl existe une autre méthode pour
initialiser les attributs d'un objet : utiliser les constructeurs.
Un constructeur est une "procédure" appelée automatiquement qui permet de spécifier chacun des attributs de l’objet en fonction de ses paramètres.
Un constructeur ne possède aucun type de retour, même pas void.
![Page 28: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/28.jpg)
Constructeur par défautclass CDate{
int Jour ;int Mois ;int Annee ;CDate(){/* constructeur par défaut qui initialise
l'objet date au 01 Janvier 2005 */Jour = 1; Mois = 1; Annee = 2005;
}};
![Page 29: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/29.jpg)
Créer mon objet{
CDate uneDate;
cout << "La date ";uneDate.Affiche();cout<< " est elle contemporaine ? " << uneDate.Contemporaine();
}
![Page 30: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/30.jpg)
Créer mon objet (suite){ CDate uneDate;
cout << "La date "; uneDate.Affiche(); cout << " est elle
contemporaine ? " <<
uneDate.Contemporaine();
}
Le programme va appeler automatiquement le constructeur (aucun paramètre).
L'objet uneDate sera donc initialisé avec le 01 Janvier 2005
il appelle ensuite la fonction Affiche() pour afficher la date puis la fonction Contemporaine() pour savoir si elle est contemporaine de notre siècle.
On obtient :La date 01/01/2005 est elle contemporaine ?
yes
![Page 31: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/31.jpg)
Autres Constructeurs PossiblesCDate (int jour, int mois, int annee){
Jour = jour;Mois = mois;Annee = annee;
}
CDate (int jour, int mois){
Jour = jour;Mois = mois;Annee = 2005;
}
![Page 32: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/32.jpg)
Usage{
CDate uneDate;CDate priseBastille (14,07,1789);CDate dateCetteAnnee(7,03);uneDate.Affiche(); // 01/01/2005priseBastille.Affiche(); // 14/07/1789dateCetteAnnee.Affiche(); // 7/3/2005
}
![Page 33: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/33.jpg)
Écriture d'un Constructeurclass MaClass{
type1 Attribut1; …
MaClass(typeP1 parametre1, typeP2 parametre2, …){
…}
};
![Page 34: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/34.jpg)
Sécurité
Comment empêcher un programmeur de définir la date 38/14/-362 ?
{ CDate dateImpossible; dateImpossible.Jour=38; dateImpossible.Mois=14; dateImpossible.Annee=-362; dateImpossible.Affiche();}
![Page 35: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/35.jpg)
mots clés
Le C++ met à votre disposition 3 mots clés : public: private: protected:
![Page 36: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/36.jpg)
public: Tous les attributs ou fonctions situés
sous le mot clé public: sont accessibles en dehors de l’objet ou depuis n'importe quelles fonctions de la classe.
Remarque : Les fonctions précédentes ne fonctionnent qu'en ajoutant le mot clé public:
![Page 37: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/37.jpg)
Exemple de public:class CDate{ public:
int Jour;int Mois;int Annee;
void Affiche(){ cout << Jour << "/" << Mois << "/" << Annee;}
};
{ CDate uneDate;
uneDate.Jour=06; uneDate.Mois=10; uneDate.Annee=1289;
uneDate.Affiche(); // 06/10/1289
}
![Page 38: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/38.jpg)
private: Tous les attributs ou fonctions
situés sous le mot clé private: ne sont accessibles que depuis les fonctions de l’objet.
C'est le comportement par défaut si aucun mot clé n'est spécifié.
![Page 39: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/39.jpg)
private:class MaClasse{ public:
int NbreAccessible; private:
int NbreProtege;
void Affiche() { cout<<NbreProtege<<end;}
public:void LanceAffiche() { Affiche();}
};
{ MaClasse objet;
objet.NbreAccessible=3; // OK
objet.NbreProtege=7; // Impossible
objet.Affiche(); // Impossible
objet.LanceAffiche(); // OK}
![Page 40: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/40.jpg)
protected: Utile en ce qui concerne l'héritage.
Nous verrons cela plus tard. Pour l'instant, protected: est
équivalent à private:
![Page 41: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/41.jpg)
Sécurité
Problème : Comment empêcher l'accès à certains attributs tout en donnant la possibilité de les modifier/consulter ?
Solution : Définir des accesseurs
![Page 42: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/42.jpg)
Accesseur en lecture
Un accesseur en lecture est une fonction de la classe permettant de récupérer le contenu d'un de ses attributs.
int GetMois(){
return Mois;}
![Page 43: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/43.jpg)
Accesseur en écriture
Un accesseur en écriture est une procédure de la classe permettant de modifier le contenu d'un de ses attributs.
void SetMois(int mois){
Mois = mois;}
![Page 44: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/44.jpg)
Protéger les attributs de la classe CDateclass CDate{
private:int Jour;int Mois;int Année;
public:int GetMois(){ return Mois;}
void SetMois(int mois) { if( mois < 1 || mois >= 12 ) mois=1;
Mois=mois; }
int GetJour(){ … } void SetJour(int jour ) { … }
int GetAnnee() { … } void SetAnnee(int annee)
{ … } };
![Page 45: POO : Programmation Orientée Objet. Présentation David Ansart Département Informatique – Bureau 004E Email : ansart@cril.univ-artois.fransart@cril.univ-artois.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9da5497959293b8d6a23/html5/thumbnails/45.jpg)
Reprenons notre exemple
Essayons de définir la date 38/14/-362 ?
{ CDate dateImpossible; dateImpossible.SetJour(38); // Jour = 1 dateImpossible.SetMois(14); // Mois = 1 dateImpossible.SetAnnee(-362); // Annee = 2005 dateImpossible.Affiche(); // 1/1/2005}