1 / 18

Conception de Programmes

Conception de Programmes. Objectifs et organisation du cours Introduction à la P.O.O. et au C++ Un exemple de programme C++ Compilation et édition de liens Quelques éléments du langage C++. Objectifs du cours. Programmation orientée objet Qualité logicielle Structuration des programmes

briana
Download Presentation

Conception de Programmes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Conception de Programmes • Objectifs et organisation du cours • Introduction à la P.O.O. et au C++ • Un exemple de programme C++ • Compilation et édition de liens • Quelques éléments du langage C++

  2. Objectifs du cours • Programmation orientée objet • Qualité logicielle • Structuration des programmes • Introduction au langage C++ • Pratique de l’algorithmique

  3. Organisation du cours • Intervenants • Yann Chevaleyre • Jean-Pierre Dupuy • Kais Klai • Denis Poitrenaud • David Serrat • Contrôle des connaissances • 1 projet tutoré (à réaliser par binôme), • 1 DST, • 1 mini-projet sous la forme d’un TD à rendre. • Matériel et logiciel • Visual C++ sous WNT, • g++ sous Linux.

  4. Programmation Orientée Objet • Objectifs • Correction des programmes • Réutilisation des composants logiciels • Adaptabilité des programmes • Moyens • Structuration par les données • Encapsulation des données • Abstraction des données • Composition • Héritage • Polymorphisme • Ramasse-miettes • Langages • Smalltalk, Eiffel, Ada 95, C++, ...

  5. Structuration par les données • Principe • Associer aux types de données, les fonctions permettant de manipuler celles-ci. • Remarque • C’est déjà le cas en C pour certains types de bases (les opérateurs arithmétiques, les fonctions de traitement des chaînes de caractères, etc …).

  6. Appel(avec éventuellement des paramètres) type1 data1 data2 fonction1 fonction2 ... fonctionn Retour(avec éventuellement un résultat) datam Encapsulation et abstraction des données • L’accès aux données est réalisé par l’intermédiaire des fonctions • On fait abstraction de l’implantation effective des données

  7. type1 typek data1 data1 fonction1 ... fonctionn fonction1 ... fonctionn fct1fct2 ... fctn datam datam Composition

  8. Le langage C++ • Le C++ a été défini par Bjarne Stroustrup dans le début des années 80. • Le C++ est normalisé (ANSI) depuis 1989. • Presque tout le langage C fait partie du C++. • Un livre de référence (disponible à la bibliothèque): • Le langage C++, Bjarne Stroustrup, International Thomson Publishing, 2nde édition, 1996

  9. Un premier programme C++ Définition d’un type de données et des fonctions associées class Date { public: void Init(int j, int m, int a=1999); void Inc(int = 1); int Jour() const; int Mois() const; int Annee() const; private: int jo, mo, an; };

  10. Utilisation #include <iostream.h> void main(void) { Date d; d.Init(8, 3); d.Inc(); cout << d.Jour() << "/" << d.Mois << endl; d.Init(1, 1, 2000); cout << d.Jour() << "/" << d.Mois << endl; }

  11. Date Init(int, int, int) Inc(int) Jour () Mois() Annee() jo mo an La classe Date

  12. Définitions des fonctions void Date::Init(int j, int m, int a) { jo = j; mo = m; an = a; } int Date::Jour() const { return jo; // rend le jour de la date } etc...

  13. Compilation et Edition de liens • Les fichiers sources ont l’extension .cpp • Les fichiers d’entête ont l’extension .hpp • Sous WNT: • Créer un projet de type « Console Application » • Indiquer les fichiers sources constituant le projet (par insertion ou édition) • Utiliser l’option « Build » du menu. • Sous Linux • Utiliser la commande « g++ »

  14. Quelques éléments de langage • Commentaires a = 2 * b; // commentaire jusqu’au saut le ligne /* commentaire classique */ • Déclarations de types enum Reponse {OUI, NON}; typedef char CH20[21]; struct Personne { int age; Reponse marie; CH20 nom; }; Personne p;

  15. Déclarations de variables void main() { int a; a = 5; int b = a; for (int i = 0; i < a; i++) b += 4; } • Valeurs par défaut des paramètres void f(int, char = ‘a’, int = 10); f(1, ‘c’, 2); f(2, ‘z’); // <=> f(2, ‘z’, 10); f(3); // <=> f(3, ‘a’, 10);

  16. Entrées/Sorties simples • iostream.h  le fichier définissant les classes correspondantes • cin, cout  les flux d’entrée et de sortie standards • >>, <<  les opérateurs de lecture et d’écriture • endl  saut de ligne (‘\n’) #include <iostream.h> void main() { int i; char c; cout << "entrez un entier et un caractère" << endl; cin >> i >> c; cout << "i = " << i << "c = " << c << endl; }

  17. Le mot réservé const • Indique qu’un identificateur doit garder une valeur constante. • Il est donc interdit d’y affecter une valeur : on peut uniquement l’initialiser. • Cette initialisation est obligatoire. const double p; // Erreur : constante non initialisée const double pi = 3.1416; // OK pi = 3.14159; // Erreur : interdit de changer de valeur double *p1 = &pi; // Erreur : on peut modifier pi via p1 const double *p2 = &pi; // OK double e = 2.7; p2 = &e; // OK *p2 = 2.72; // Erreur : p2 pointe sur une constante const double * const p3 = p2; // OK p3 = &pi; // Erreur : interdit de changer de valeur

  18. Paramètres const double puissance (const double, const double); • Le compilateur vérifie que les paramètres ne sont pas modifiés par la fonction. • const est peu utilisé dans ce cas car la fonction n’a de toute façon pas d’effet de bord car on a des paramètres passés par valeur. On évite juste certains bogues. void afficher (const Personne*); • Le compilateur vérifie que la personne pointée n’est pas modifiée. • On a la vitesse du passage par adresse et la sécurité du passage par valeur. En prime on évite certains bogues !

More Related