22/09/16 1 MASTER EEA 2 ème année HMEE325 : Optimisation et programmation avancée Langage C/C++: introduction Alberto BOSIO [email protected]http://www.lirmm.fr/~bosio/HMEE325 2 Agenda n Introduction n La programmation orientée objet n Gestion dynamique de la mémoire n Bibliothèque standard
19
Embed
Agenda - lirmm.frbosio/HMEE325/01-intro-OOP.pdf · concernant le C++. n Version amélioré du langage C ... n l’effort commence a passer sur l’organisation des données n On appelle
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
n Introduction n La programmation orientée objet n Gestion dynamique de la mémoire n Bibliothèque standard
22/09/16
2
3
Bibliographie
n Internet n http://www.cppreference.com/index.html
Free book : Thinking in C++ n http://www.mindview.net/Books/TICPP/
ThinkingInCPP2e.html
n …
n Livre: n STROUSTRUP B. , « Le Langage C++ (Edition
Spéciale, Revue et Corrigée) », Pearson Education , 2006, 1098 p.
Prérequis
n Programmation en langage C n Utilisation des types des données
complexe n struct, array
n Gestion dynamique de la mémoire n malloc (), free ()
4
22/09/16
3
5
Historique n Au début des années 80, Bjarne Stroustrup créé le C++
n Besoins : n programmation orientée objets toucher un large public
n C++ créé sur la base du C n compatibilité : tout programme C peut être compilé en C++. n pas de standard ANSI C++ mais ajout à l'ANSI C des spécifications
concernant le C++. n Version amélioré du langage C
n Il support l’abstraction des données n Il support la programmation orientée objet n Il support la programmation générique (template)
Paradigmes de programmation
n Programmation procédurale n Programmation modulaire n Programmation orientée objet
6
22/09/16
4
Paradigmes de programmation
n Programmation procédurale n L’effort sera mis sur le traitement, c’est-à-
dire l’algorithme nécessaire pour effectuer les calculs désiré
7
Paradigmes de programmation
n Programmation modulaire: n l’effort commence a passer sur
l’organisation des données n On appelle module un ensemble de
procédures connexes avec les données qu’elles manipulent
8
22/09/16
5
Exemple
n Écrire un programme capable de modéliser un rectangle pour calculer sa surface et son périmètre
9
Problèmes
n On ne peut pas garantir l’initialisation avant la première utilisation
n On peut manipuler les données directement
n Difficile à étendre
10
22/09/16
6
Paradigmes de programmation
n Programmation orientée objet : n Organisation des données n Définition d’une interface pour accéder et
manipuler les données n Constituée par un ensemble de procédures
strictement liées aux données
11
Exemple (rectangle) class rectangle {/* definitions des donnees */private:
int a;int b;int s;int p;
/* interface : fonctions membre */public:
rectangle ();~rectangle ();int surface ( ); int perimetre ( );
}; 12
22/09/16
7
Exemple (rectangle)
n Code de l’interface rectangle::rectangle () {
a = 0;b = 0;
}rectangle::~rectangle () {}
int rectangle::surface ( ) {return ( a * b);
}int rectangle::perimetre ( ) {
return ( (a + b) * 2 );}
13
Exemple (rectangle)
n Main
int main (void) {rectangle l_rect;cout << “insert a : “; //printf (" insert a : ");cin >> l_rect.a; // scanf ("%d", &l_rect.a);cout << " insert b : ”; // printf (" insert b : ");cin >> l_rect.b; // scanf ("%d", &l_rect.b);
main.cpp: In function 'int main()': rectangle.h:23: error: 'int rectangle::a' is private main.cpp:23: error: within this context rectangle.h:24: error: 'int rectangle::b' is private main.cpp:25: error: within this context
Class A {Private: // only members of class A can access defaultProtected:// only members of class A can access or member of derived classPublic: // everybody can access
};
36
22/09/16
19
Inheritance
Class D: private B { … };Class D: protected B { … };Class D: public B { … };
37
Inheritance
n If B is a private base: n Its public and protected members can be
used only by D
n If B is a protected base: n Its public and protected members can be