Programmation Orienté Objet en C++ Ricard julienjricard@liris.cnrs.frhttp://liris.cnrs.fr/julien.ricard/OrganisationLundi 8h12h * 10 semainesCours / TD / TPParticipationContrôle des connaissances :DS promo 50 % + DS groupe 25% + TP 25%Projet C++ Lundi 2h + 2h * 7 semainesEt aujourd’hui :Concept objets et les motivations du C++Première classe C++ Points syntaxesTPProgrammation Orienté Objet en C++ 2Concept d’objetRéflexion sur la vie d’un logiciel Développement MaintenanceCritères de qualit és :Correction (ou validité)ExtensivitéRéutilisabilitéRobustesseModularitéModulaireMonolithiqueProgrammation Orienté Objet en C++ 3Méthodes de conceptionExemple : Traitement d’un flux d’entr éesMéthodes descendantesMéthodes ascendantesExemple : mikadoCritères de qualitésCompréhension modulaireContinuité modulaireProtection modulaire Programmation Orienté Objet en C++ 4Définition d’un moduleInterface limit éCommunication limitéInterface expliciteMasquage des informationsCorrespond à des unit és syntaxiques du langageFonctionsInterfaceDonnéesProgrammation Orienté Objet en C++ 5La réutilisabilitéUn bon module doit pouvoir :Manipuler plusieurs types différentesS’adapter au différentes structures de données Offrir des opérations sans connaître l’implémentation factoriser les opérations communes à un groupe de moduleDéfinition de nouvelles techniques ...
Programmation Orienté Objet
en C++
Ricard
julienjricard@liris.cnrs.fr
http://liris.cnrs.fr/julien.ricard/Organisation
Lundi 8h12h * 10 semaines
Cours / TD / TP
Participation
Contrôle des connaissances :
DS promo 50 % + DS groupe 25% + TP 25%
Projet C++
Lundi 2h + 2h * 7 semaines
Et aujourd’hui :
Concept objets et les motivations du C++
Première classe C++
Points syntaxes
TP
Programmation Orienté Objet en C++ 2Concept d’objet
Réflexion sur la vie d’un logiciel
Développement
Maintenance
Critères de qualit és :
Correction (ou validité)
Extensivité
Réutilisabilité
Robustesse
Modularité
Modulaire
Monolithique
Programmation Orienté Objet en C++ 3Méthodes de conception
Exemple : Traitement
d’un flux d’entr éesMéthodes
descendantes
Méthodes
ascendantesExemple : mikado
Critères de qualités
Compréhension modulaire
Continuité modulaire
Protection modulaire
Programmation Orienté Objet en C++ 4Définition d’un module
Interface limit é
Communication limité
Interface explicite
Masquage des informations
Correspond à des unit és syntaxiques du langage
Fonctions
Interface
Données
Programmation Orienté Objet en C++ 5La
réutilisabilité
Un bon module doit pouvoir :
Manipuler plusieurs types différentes
S’adapter au différentes structures de données
Offrir des opérations sans connaître l’implémentation
factoriser les opérations communes à un groupe de
module
Définition de nouvelles techniques:
La surcharge
La généricité
Programmation Orienté Objet en C++ 6Principe de la conception objet
Algorithmes + Structures de donn ées = Programme
Approche traditionnelle
Organiser autour du traitement
Fonction 1
Fonction 2
Structures Fonction 3
de données
Fonction n
Programmation Orienté Objet en C++ 7La conception
objets
Organiser autour des donn ées à manipuler
Fonctions de
Données manipulations et
de traitements
Programmation Orienté Objet en C++ 8
ObjetObjet en C+
+
Programme C++Programme C
Class Date {
typedef struct { public :
int jour; void initData(int j,int m,int a);
int mois; protected:
int ann ée; int _jour;
} Date; int _mois;
int _ann ée;
};
void initData(Data d,int j,int m,int a){
d.jour=j; Date::initData(int j,int m,int a){
d.mois=m; _jour=j;
d.année=a; _mois=m;
} _année=a;
}
int main(){
Date d; int main(){
initData(d,2,2,2004); Date d;
return 0; d.initData(2,2,2004);
} return 0;
}
Programmation Orienté Objet en C++ 9Interface d’une classe
class Date {
Section public
public :
Attributs public int var1;
Date(); Méthodes public ~Date();
Constructeur
void initialiser(int j,int m,int a);
void afficher(); Destructeur
int getJour();
Fonction d’acc ès int getMois();
int getAnnee(); Section protected setJour( int j);
setMois(int m); Attributs public setAnnee(int a);
Méthodes public
protected:
int _jour; Section private
int _mois;
int _ann ée; Attributs public
void _test();
Méthodes public
private:
};
Programmation Orienté Objet en C++ 10