Chapitre I Introduction à la programmation orientée objets (POO) Introduction à

Chapitre I Introduction à la programmation orientée objets (POO) Introduction à la programmation orientée objets (POO) La programmation, c’est l’art de faire résoudre des problèmes par des machines, qui passe par une longue période d’apprentissage et d’initiation. Un ordinateur est diminué d’intelligence, il ne peut pas donc résoudre que les problèmes pour lesquels existe une méthode de résolution algorithmique, c’est-à-dire une recette déterministe. I.1 Algorithme: Un algorithme est un procédé automatique qui transforme une information en une autre information symbolique, c’est la réalisation d’un nombre fini d’opérations élémentaires (instructions) chacune d’elles est réalisable en temps fini. Avant de traiter un problème par ordinateur, il faut traduire l’algorithme dans un langage binaire susceptible d’être exécuté par ordinateur. I.2 Langage: Un langage est un ensemble de mots construits avec des lettres choisies dans un alphabet. Les mots sont assemblés on phrase selon des règles (de programmation) de grammaire précises qui définissent la syntaxe du langage. Le sens attaché à ces phrases c’est-à-dire leurs signification consiste la sémantique. I.3 Langage Interprétateur: Vérifie et exécute un code dans certain langage, mais ne génère pas le code natif dans un fichier afin de créer une application, mais interprète le code afin de l’exécuter à la volée. Cette technique tend à disparaître pour les langages d’usage général mais survit bien dans des contextes plus spécialisés. Comme exemple le JavaScript, PHP, les Shell scripts, Perl, etc... I.4 Langage Compilateur: Un compilateur traduit un code dans certain langage (comme le c, c++, Delphi, etc...) vers un langage plus facilement compréhensible par la machine (le programme en code natif). Le compilateur se charge également de toutes les vérifications du code (Syntaxe, Lexical, etc…) et une fois compilé le programme peut être exécuté autant de fois que nécessaire. 1 Chapitre I Introduction à la programmation orientée objets (POO) I.5 Programmation structurée: La programmation classique traite les programmes comme un ensemble de données sur lesquelles agissent des procédures. Les procédures sont les éléments actifs et importants, les données devenant des éléments passifs qui traversent l’arborescence de programmation procédure en tant que flot d’information. La programmation structurée repose sur le concept que tout programme peut être développé uniquement à partir de trois constructeurs : - La séquence (enchaînement en séquence de traitement) - L’alternative (instruction conditionnelle : traitement permettent d’effectuer un choix) - La répétition (itération ou boucle : traitement peuvent être reproduit plusieurs fois) La programmation structurée à manifestement fait progresser la qualité de la production des logiciels. Mais avec recul, il faut bien reconnaitre que ses propres fondements lui imposaient des limitations " naturelles". En effet la programmation structurée reposant sur ce qu’on nomme souvent l’équation de Wirth : Algorithmes + Structures de données = Programmes. I.6 Programmation Orientée Objets: La programmation orientée objet relève d’une conception ascendante comme messages échangée par des entités de base appelés objets. La programmation orientée objets consiste à modéliser informatiquement un ensemble d’éléments d’une partie du monde réel en un ensemble d’entités informatiques. Ces entités informatique sont appelées objets. L’approche objet est une idée qui à fait ses preuves. Simula a été le premier langage de programmation à implémenter le concept de classe en 1967. En 1976 Small Talk implémente les concepts d’encapsulation, d’agrégation et l’héritage. D’autre part de nombreux langages orientées objets ont été mis au point dans un but universitaire (Effel, Objective C, Loops, C++ etc.. Les trois concepts fondamentaux qui donnent toute sa puissance à la P.O.O sont : • Concept de modélisation à travers la notion de classe et l’instanciation de ces classes. 2 Chapitre I Introduction à la programmation orientée objets (POO) • Concept d’action à travers la notion d’envoi de messages et de méthodes à l’intérieur des objets. • Concept de construction par réutilisation et amélioration par l’utilisation de notions d’héritage. I.6.1 Les Objets: La programmation oriente objet (en abrégé P.O.O) fondée justement sur le concept objet, à savoir une association des données et des procédures (qu’on appelle méthode) agissant sur ces données. Par analogie avec l’équation de Writh, on pourrait dire que l’équation de la P.O.O est : Méthodes + Données = Objet I.6.2 Encapsulation : L’encapsulation des données signifie qu’il n’est pas possible d’agir directement sur les données d’un objet, il est nécessaire de passer par l’intermédiaire de ses méthodes, qui jouent ainsi le rôle d’interface obligatoire. L’encapsulation des données présente un intérêt en matière de qualité de logiciel. Elle facilité considérablement la maintenance. Une modification de la structure de données d’un objet n’a d’incidence que sur l’objet lui-même, les utilisateurs de l’objet ne seront pas concernés par le teneur de cette modification. I.6.3 Classe: En P.O.O apparait généralement le concept de classe, qui correspond simplement à la généralisation de la notion de type que l’on rencontre dans les langages classique. En effet une classe n’est rien d’autre que la description d’un ensemble d’objet ayant une structure de données communes et dispose des mêmes méthodes. I.6.4 Héritage: L’héritage permet de définir une nouvelle classe à partir d’une classe existante, qu’on réutilise, à laquelle on ajoute des nouvelles données et de nouvelles méthodes. I.6.5 Polymorphisme : Généralement, en P.O.O une classe dérivée peut redéfinir (modifier) certains des méthodes héritées de la classe de base. Cette possibilité est nommée le polymorphisme. C’est-à-dire la possibilité de traiter de la même manière des objets de types différents. Le 3 Chapitre I Introduction à la programmation orientée objets (POO) polymorphisme améliore l’extensibilité des programmes, en permettant d’ajouter de nouveaux objets. I.7 Le Langage C: L’histoire du C commence vers les années 6, dans les laboratoires Bell de New Jersey, c’est ici que Thomson Développa le langage de programmation B, que Dennis Ritchie et Brain Kernighan fera évoluer en langage C vers 1972. C est un langage dit de haut niveau comme pascal il possède toute les caractéristiques modernes que l’on peut attendre d’un langage structuré. C est aussi bas niveau car il permet de faire presque ce qu’il est possible de faire en assembleur. Finalement C est un langage très disponible et bien accepté dans les systèmes Unix, Os2, Windows et il a été standardise par une norme ANSI/ISO pour toute plateforme. C n’est pas un langage à objet comme Delphi ou Java, le futur C est lié à la programmation parallèle, au développement des réseaux et à la programmation objets C++. Les compilateurs C font subir deux transformations aux programmes 1. Un préprocesseur fait subir au texte des transformations d’ordre purement lexical. 2. Le compilateur proprement dit prend le texte généré par le préprocesseur et le traduit en instructions machines. I.8 Le Langage C++: Le langage c++, inventé par Bjarne Stroustrup vers 1983 et une évolution orientée objet du langage C. Un compilateur C++ est capable de compiler un code source écrit en C ANSI pur. Le langage C++ est un surensemble de C repose sur les mêmes mécanismes d’écriture et de génération : • Déclaration préalables est obligatoire • Prototype des fonctions selon les conversions ANSI. • Exploitation de toutes les fonctions du préprocesseur C pour les inclusions de fichiers, code conditionnel, macros définitions. 4 Chapitre I Introduction à la programmation orientée objets (POO) La syntaxe du C++ est de 90% de C + 10% d’ajouts. I.8.1 Nouveaux Concepts: C++ ajoute à C trois notions importantes et quelques améliorations : • Classes et objets : notion fondamentale et qui est le cœur même de la programmation orientée objets. • Surcharge de sélection : c’est la possibilité de définir des traitements (fonction) à un niveau conceptuel plus élève qu’on programmation classique. • Héritage : c’est la possibilité de construire de nouveaux objets par réutilisation (dérivation) et modification d’objets existant. • Surcharge d’opérateurs : c’est une extension des règles d’écriture des opérateurs arithmétique classiques à des objets non scalaire. • Entrées/Sorties par Stream : c’est une amélioration élégante des mécanismes de lecture/écriture des données. • Fonctions patrons (Template) : il s’agit d’un mécanisme d’aide à l’écriture des codes C++, permettant de définir sous une forme semi-symbolique des traitements similaires. • Gestion d’erreurs et exceptions : C++ a introduit des principes sophistiqués de gestion des erreurs et problèmes en exécution. I.8.2 Les incompatibilité entre C++ et C: a) Les définitions de fonction en C++ : 1) double fexple(u, v) { int u ; double v ; . } 2) double fexple(int u, double v) { . } 5 Chapitre I Introduction à la programmation orientée objets (POO) Le langage C++ n’accepte que la seconde forme. En C++, un appel de fonction ne sera accepté que si le compilateur connaît le type des arguments et celui de sa valeur de retour. La déclaration à l’aide d’un prototype : double fexple (int, double) ; Remarque : 1. La portée du prototype est limitée a : • La partie fichier source • La fonction dans laquelle il figure 2. Le prototype peut prendre une formes plus étoffe, dans laquelle figurent les noms d’arguments fexple(int a, double x) ; b) Evolutions syntaxiques : • Les constantes : En C++ on peut définir une constante visible dans un bloc ou un seul fichier source const float TVA=0.166 uploads/Litterature/ c-chapitre1.pdf

  • 25
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager