langage de programmation

Download Report

Transcript langage de programmation

Cours IT2

Introduction à la programmation orientée objet en C++

  

La création d’un logiciel, c’est un tout

L’analyse (UML, HBDS, SADT, Merise…) L’algorithmique ( Pseudo-code, ADL …) La programmation (ADA, C/C++, VB, JAVA…) Problème sans formulation précise Enoncé précis du problème Ecriture des algorithmes Programme Langage courant

Analyse

Langage algorithmique

Algorithmique

Langages de programmation

Programmation

Vocabulaire général

Vocabulaire : Programmation

 La

programmation

représente usuellement le codage, c’est-à-dire la rédaction du code source d'un logiciel.  On utilise plutôt le terme «

développement

» pour dénoter l'ensemble des activités lié à la création d'un logiciel.

Vocabulaire : Programmation

 La

programmation

dans le domaine

informatique

:  C’est l'ensemble des

activités

qui permettent l'écriture des programmes informatiques.

 C’est une étape importante de la

conception

du logiciel.

 Pour écrire le résultat de cette activité, on utilise un

langage

de

programmation

.

Vocabulaire : Langage de programmation

 Un

langage de programmation

:  Un

code de communication

, permettant à un être humain de dialoguer avec une machine en lui soumettant des instructions et en analysant les données matérielles fournies par le système, généralement un ordinateur.  Permet à la personne qui rédige un programme, de faire

abstraction

de certains

mécanismes internes

désiré.

, généralement des activations et désactivations de commutateurs électroniques, qui aboutissent au résultat

Vocabulaire : Langage de programmation

 A une

visée opérationnelle

(contrairement au langage mathématique): une fonction ou un programme retournent une «

valeur

».

 Un «

langage de programmation

» est toujours un compromis entre la puissance d'expression et la possibilité d'exécution.

Vocabulaire : Les types de programmation

 En informatique, la

programmation impérative

est un

paradigme

de programmation qui décrit les opérations en termes d'états du programme et de

séquences d'instructions

exécutées par l'ordinateur pour modifier

l'état du programme

.

Vocabulaire : Les types de programmation

 La

programmation structurée

peut être vue comme un sous-ensemble, ou une branche, de la programmation impérative, un des

paradigmes

majeurs de la programmation.  Elle est célèbre pour son combat pour la suppression de l'instruction

goto

ou du moins pour la réduction de son usage.

Vocabulaire : Les types de programmation

 La

programmation orientée objet (POO)

ou

programmation par objet

, est un paradigme de programmation informatique qui consiste en la définition et l'assemblage de briques logicielles appelées

objet

.

 Un

objet

représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre.

Les langages de programmation

Le langage machine Le langage de programmation Le programme est un simple fichier texte :

fichier source

Le fichier source contient les lignes de programmes :

code source

Ce fichier source une fois terminé doit être

compilé

ou

interprété

Langages non structurés

 Une suite d’actions à exécuter dans l’ordre de leur arrivée sans se soucier de les ordonner ou de les regrouper.

Début programme

Entrer dans cuisine Allumer Lumière Ouvrir réfrigérateur Prendre oeuf Fermer réfrigérateur Ouvrir réfrigérateur Prendre beurre Fermer réfrigérateur

Fin Programme

Quasiment identiques

Langages structurés

 Un langage «

structuré

» permet un découpage du programme ce qui le rend beaucoup plus lisible et beaucoup plus modulable qu’un programme écrit en PrendreDansRéfrigérateur ( ) langage « non structuré ».

Fermer Réfrigérateur

Fin

PrendreDansRéfrigérateur Module avec un paramètre

Action

EntrerDansCuisine () Entrer dans cuisine Allumer lumière

Fin

EntrerDansCuisine

Début programme

EntrerDansCuisine PrendreDansRéfrigérateur (

Fin programme

oeuf ) PrendreDansRéfrigérateur (beurre) Module sans paramètre Appels du module avec deux paramètres différents

Langages orientés objet

 Tout est décrit sous forme de

classes.

 Une

classe

est un ensemble d’éléments ayant les mêmes caractéristiques et un

objet

est une instance d’une classe.

 On programme les les

interactions objets

eux mêmes et entre ces objets.

 Les membres d’une classe sont :  Attributs.

 Méthodes.

Langages OO

Classe d’objets Lumiиre

Caractйristiques : 60 Watts Comportements : Allumer Eteindre

Fin Objets Lumiиre Classe d’objets Cuisine

15 m2 Comportement :

Fin objets Cuisine

: Caractйristiques : Rez-de-chaussйe Allumer : (Lumiиre : Allumer)

Classe d’objets EtreHumain

Caractйristiques : Nom, prйnom Age Comportements Ouvrir (objet) Fermer (objet) Saisir (objet) « EntrerDans » déclenche l’action « Allumer » l’objet

Pièce

, c’est-à-dire appelle la méthode « Allumer » de l’objet

Pièce

qui appelle lui-même la méthode « Allumer » de l’objet Lumière EntrerDans (Piиce) : (Piиce : Allumer) PrendreDans(objet1,objet2) : Ouvrir(objet1), Saisir(objet2), Fermer(objet1)

Fin objets EtreHumain

« Ouvrir » et « Fermer » déclenchent implicitement les actions « Allumer » et « Eteindre « Eteindre » » de l’objet si celui-ci possède les méthodes « Allumer » et

Classe d’objets Rйfrigйrateur

: Caractйristiques : Hauteur Couleur Comportement : Allumer : (Lumiиre : Allumer) Lumiиre : (Lumiиre : Eteindre)

Fin objets Rйfrigйrateur Dйbut Programme

Etre humain : EntrerDans (cuisine) Etre humain : Ouvrir (Rйfrigйrateur) Au début du programme on détermine les « vrais » objets. Ici, la Pièce devient la

cuisine

, l’objet à ouvrir et à fermer, le

réfrigérateur

et les objets à prendre,

l’œuf

et le

beurre

.

Etre humain : PrendreDans(Rйfrigйrateur, oeuf) Etre humain : PrendreDans(Rйfrigйrateur, beurre)

Fin Programme

Vocabulaire : La compilation

 Le langage interprété :  Le code source est traduit au fur et à mesure.

 La traduction se fait via un

interpréteur

.

 Le langage compilé :  Le code source est traduit une fois pour toutes sous forme de

code objet

appelé

compilateur

.

via un programme  Deux phases :  Compilation (vérification de la syntaxe) ;  édition de liens.

La compilation comment ça marche?

 Plusieurs objectifs:  Vérifier la correction syntaxique et lexicale  Vérifier la sémantique (le plus possible) autrement dit le typage correct  Produire du code dans un langage plus simple proche de la machine  Produire des briques de code assemblables

La compilation comment ça marche?

Code source Code source Compilateur Bibliothèques Code objet Code objet Édition de liens Code exécutable

La compilation, ses effets…

 On peut obtenir  Du code natif  Avantage: rapide à l’exécution  Inconvénients: à recompiler en changeant de matériel, choix entre fourniture du binaire ou du source au client  Du code intermédiaire interprété par une machine virtuelle (choix de java)  Avantages: code portable, code mobile  Inconvénient: exécution beaucoup plus lente

Avantages/Inconvénients pour langage compilé/langage interprété

 Langage compilé  Autonome  Plus rapide à l’exécution  Garantit une meilleure sécurité au code source  Langage interprété  Plus souple  Moins gourmand en mémoire  NB: certains langages sont à la fois compilés et interprétés (JAVA LISP)

Des exemples de langages

Langage

Basic Cobol Fortran PL1 C Pascal ADA LISP Visual Basic C++ Java Perl PHP

Type

Non structuré Structuré Structuré Structuré Structuré Structuré (il existe une version objet) Structuré (il existe une version objet) Structuré Orienté objet Orienté objet Orienté objet Orienté objet Orienté objet

Compilé/Interprété

Interprété Compilé Compilé Compilé Compilé Compilé

Domaine d’application

Apprentissage Gestion Calculs Industrie Programmation système Enseignement Compilé Militaire, aérospatiale Interprété et compilé Interprété ou compilé Compilé Interprété et compilé Interprété Interprété Intelligence artificielle Interfaces homme-machine Industrie Industrie – Internet Industrie – administration réseau Web

Vocabulaire : Algorithme (1/4)

Algorithmique

ou

algorithmie

= l’ensemble des activités logiques qui relèvent des algorithmes.

 Origine : le nom du mathématicien

Al Khuwarizmi

, qui, au IXe siècle écrivit le premier ouvrage systématique sur la solution des équations linéaires et quadratiques.  Dans le cas général, l’algorithmique s’effectue au moyen de calculs.

Vocabulaire : Algorithme (2/4)

  Algorithme =  Moyen pour un humain de présenter la résolution par calcul d’un problème à une autre personne physique (un autre humain) ou virtuelle (un calculateur).  Énoncé dans un langage bien défini d’une suite d’opérations permettant de résoudre par calcul un problème.

Types d’algorithme  Si ces opérations s’exécutent en séquence, on parle

d’algorithme séquentiel

.  Si les opérations s’exécutent sur plusieurs processeurs en parallèle, on parle

d’algorithme parallèle

.  Si les tâches s’exécutent sur un réseau de processeurs on parle

d’algorithme réparti ou distribué.

Vocabulaire : Algorithme (3/4)

 Intérêt d’un algorithme :  Présenter de manière intelligible la suite d’opérations à effectuer.

 Obliger le concepteur à prendre du recul par rapport à sa méthode.

 Écrire de façon indépendante d’un langage de programmation et « re transposable » ensuite dans tout langage de programmation.

 Pouvoir démontrer à l’aide d’outil mathématique la réalisation de ce qu’on désire obtenir.

Vocabulaire : Algorithme (4/4)

 Inconvénient :  Peut être vu comme une perte de temps pour le concepteur (pas de résultat tangible tout de suite).

 Parfois trop indépendant du langage qu’on va utiliser (il faut aussi savoir en tenir compte).

Vocabulaire : Variable (1/6)

 Dans un langage de programmation, une

variable

est un espace de stockage pour un résultat. Cependant, les possibilités d'une variable sont intimement liées au langage de programmation auquel on fait référence.

Vocabulaire : Variable (2/6)

 Par exemple, une

variable

en C++ aura six caractéristiques :  Son

nom

, c'est à dire sous quel nom est déclaré la variable ;  son

type

, c'est la convention d'interprétation de la séquence de bits qui constitue la variable. Le type de la variable spécifie aussi la longueur de cette séquence ( 8 bits, 32 bits, 64 bits) ;  sa

valeur

, c'est la séquence de bits elle-même ;  son

adresse

, c'est l'endroit dans la mémoire ou elle est stockée ;  sa

visibilité

, c'est un ensemble de règles qui fixe qui peut utiliser la variable ;  sa

durée de vie

, c'est la portion de code dans laquelle la variable existe, il ne faut pas confondre la durée de vie d'une variable locale et sa visibilité.

Vocabulaire : Variable (3/6)

 Il existe des conventions d’écriture pour les identificateurs (ou noms de variables) qui dépendent des langages de programmation :  Généralement, la première lettre du nom est soit une lettre (minuscule ou majuscule), soit un _ (blanc souligné).

 Les autres caractères doivent être des lettres, des chiffres ou le blanc souligné.

 La sensibilité à la casse n’est pas systématique et dépend des langages.

Vocabulaire : Variable (4/6)

 On parle de

typage fort

lorsque le langage impose que les

variables

soient déclarées dans un type et utilisées dans ce type (ex: Ada ou C++).  On parle de

typage faible

lorsque le langage admet qu'une

variable

puisse changer de type au cours de son existence (en particulier pour se conformer à la sémantique d'une expression).

Vocabulaire : Variable (5/6)

 On distingue généralement

quatre opérations

sur les

variables

, chacune pouvant revêtir des formes syntaxiques différentes.

 La

déclaration

permet de déclarer un nom de variable, éventuellement de lui associer un type, ainsi qu'une valeur initiale ;  l’

affectation

consiste à attribuer une valeur à une variable ;  la

lecture

consiste à utiliser la valeur liée à la variable ;  la

suppression

réalisée soit automatiquement soit par une instruction du langage.

Vocabulaire : Variable (6/6)

 En programmation, une

variable locale

est déclarée à l'intérieur du corps d'une fonction.  En programmation, une

variable globale

est une variable déclarée à l'extérieur du corps de toute fonction ou classe, et pouvant donc être utilisée n'importe où dans le programme.

Vocabulaire : Fonctions

 En informatique, une

fonction

est un ensemble d’instructions réalisant une certaine tâche. On utilise parfois le synonyme routine, notamment à propos des fonctions bas niveau des systèmes d’exploitation.

 Une

fonction

prend zéro, un ou plusieurs paramètres et renvoie toujours un résultat.

Vocabulaire : Fonctions

 En plus de calculer un résultat à partir de paramètres, la

fonction

informatique peut avoir des effets de bord : par exemple afficher un message à l‘écran, jouer un son, ou bien piloter une imprimante.

 Une

fonction

qui n'a pas d'effets de bord, et qui renvoie systématiquement la même valeur de retour pour les mêmes paramètres, est appelée fonction pure.

Vocabulaire : Procédure

 En informatique, une

procédure

est une fonction qui ne renvoie pas de résultat.

 On peut cependant remarquer que sous cette définition les procédures sont rares dans un langage comme le C où avoir une valeur de retour est la norme. On qualifie ainsi de procédure des fonctions d’affichage ou d’analyse de flux qui ont pour valeur de retour un nombre mesurant la réussite ou non de l'exécution de ladite « fonction ».

Vocabulaire : Les types de données

 Les types simples :  Chaînes de caractères.

 Nombres (entiers & réels).

 Booléens (vrai ou faux).

 Les types prédéfinis :  Tableaux de types simples ou définis par l’utilisateur.

 Les types définis par l’utilisateur.

 Le type point muni d’une coordonnée X (double) et d’une coordonnée Y (double).

Vocabulaire: Les chaînes de caractères

 Les chaînes de caractères :  On doit souvent définir leur taille.

 Elles utilisent des jeux de caractères, le plus connu étant les caractères ASCII.

 Il existe des fonctions permettant de les manipuler plus aisément.

 En C++ : char Nom[], c’est un tableau de caractères en fait

Vocabulaire : Les entiers

 Les entiers :  Ils sont représentés en binaire (autrement dit ils sont une suite de 0 et de 1 qui correspond à l’écriture du nombre en base 2).

Byte

: 0 à 255 ; en C++ char 

Integer

: de –32 768 à 32 767 ; en C++ short ou int 

Long

: de –2 à +2 milliards environ. En C++ long

Vocabulaire : Les réels (1/4)

 Les réels :  Les nombres à virgule flottante sont les nombres les plus souvent utilisés dans un ordinateur pour représenter des valeurs non entières. Ce sont des approximations de nombres réels.  Les nombres à virgule flottante possèdent un signe

s

(dans {-1, 1}), une mantisse

m

(aussi appelée significande) et un exposant

e

. Un tel triplet représente un réel s.m.be où b est la base de représentation (généralement 2 sur ordinateur, mais aussi 16 sur certaines anciennes machines, 10 sur de nombreuses calculatrices, ou éventuellement toute autre valeur).

Vocabulaire : Les réels (2/4)

 En faisant varier

e

, on fait « flotter » la virgule décimale. Généralement,

m

est d'une taille fixée.

 Ceci s'oppose à la représentation dite en virgule fixe, où l'exposant

e

est fixé.

 La norme IEEE 754 (reprise par la norme internationale CEI 60559) spécifie deux formats de nombres en virgule flottante et les opérations associées.

Vocabulaire: Les réels (3/4)

 Les deux formats fixés par la norme IEEE 754 sont sur 32 bits (« simple précision ») et 64 bits (« double précision »).

 La répartition des bits est la suivante, où 1 ≤ M < 2 : Simple précisio n Double précisio n Encodage Signe 32 bits 64 bits 1 bit 1 bit Expo sant Mantisse 8 bits 23 bits 11 bits 52 bits Valeur -1^s*M*2^(e-127) -1^s*M*2^(e-1023)

Vocabulaire: Les réels (4/4)

 En C++, on a les deux types de réels:  Float pour la simple précision  Double pour la double précision  Dans le cadre de calculs, il est préférable d’utiliser les double

Vocabulaire : Les tableaux (1/2)

 Les tableaux :  Type qui permet d’utiliser des indices pour ranger des éléments de même type dans une structure ressemblant à un tableau.

 Suivant les langages, les indices débutent à 0 ou à 1.

 On peut aussi avoir des tableaux à plusieurs dimensions.

 En réalité, tout se passe comme si un chaînage existait entre l’indice du tableau et l’élément qu’il contient.

Vocabulaire : Les tableaux (2/2)

 En C++ :   « tab[] ou *tab » : suite de variables de même type, un tableau indic&é par des int (obligatoire) « tab[i] » est la variable d’indice i (attention les indices commencent à 0)  le pointeur tab contient en fait l’adresse du premier élément (« tab = = &(tab[0]) ») . Un tableau est alloué :  statiquement par « MonType tab[NBMAX]; » (puis libéré « automatiquement »)  – ou dynamiquement • • en C++ « tab = new MonType[NBMAX]; » puis libéré par « delete[] tab; tab = NULL; » ou en C « tab = (MonType*)malloc(NBMAX*sizeof(MonType); » puis libéré par « free(tab); tab = NULL; »

Vocabulaire: les pointeurs

 Ils désignent l’adresse d’un élément et peuvent être placés en paramètre  Cela permet de gérer les variables en entrée-sortie par exemple  On les note par *suivi du nom de la variable concernée

Vocabulaire de la programmation orientée objet

Vocabulaire: POO

 La

programmation orientée objet (POO)

ou

programmation par objet

, est un paradigme de programmation informatique qui consiste en la définition et l'assemblage de briques logicielles appelées

objets

 Un

objet

représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre.

Vocabulaire: objet

 Un objet est une structure de données valuées et organisées (état de l’objet) et qui répond à un ensemble de messages (comportement de l’objet).  Les données ou champs qui décrivent sa structure interne sont appelées ses

attributs

;  L'ensemble des messages forme ce que l'on appelle

l'interface

ci que les objets interagissent entre eux. La réponse à la réception d'un message par un objet est appelée une

méthode

de l'objet ; c'est seulement à travers de celui ; elle décrit comment est réalisé le message.

Vocabulaire: l’encapsulation

 Les attributs (ou plus exactement leur représentation informatique) et les méthodes sont cachés : ils forment une boîte noire. 

C'est le principe d'encapsulation

.  On peut modifier la structure interne des objets ou les méthodes associées aux messages sans impact sur les utilisateurs des objets.

 Exemple: un nombre complexe

Vocabulaire: double sens sur l’encapsulation

 Deux significations:  Regrouper des caractéristiques au sein d’une même classe: principe de la POO  Cacher certains membres d’une classe à certaines autres classes avec un choix éventuel de confidentialité différent suivant les « relations » entre les classes

Vocabulaire: héritage

 L’héritage permet de décrire des classes de plus en plus précises, héritant de caractéristiques de classes plus générales  La classe la plus précise est appelée classe dérivée ou classe fille  La classe dont elle est issue est appelée surclasse ou classe mère

Vocabulaire: polymorphisme

   Polymorphisme ad hoc (surcharge)  Fonctions ou méthodes de même nom, avec des fonctionnalités similaires pour des classes sans rapport entre elles  Exemple la fonction affiche Polymorphisme paramétrique (généricité)  Fonctions de même nom avec des paramètres différents (nombre ou type)  Exemple une fonction addition Polymorphisme d’héritage (dérivation)  Possibilité de redéfinir une méthode dans une classe fille  Exemple une fonction mouvement pour un jeu d’échec

Les instructions C & C++

La structure des programmes en C C++

Les sources C++ et les commentaires

   Les sources C++ sont des fichiers textes  extension « .h » : pour les fichiers d’entêtes (déclarations à importer : constantes, variables globales, prototypes des classes et des fonctions, etc.)  extension « .cpp » : pour les fichiers d’implémentation (corps des fonctions et méthodes, variables de classe, etc.) La traduction en exécutable se déroule comme suit :  Précompilation (interprétation des ordres # : #include, #define)   Compilation séparée Édition de liens (statique ou dynamique) : Les commentaires sont écrits sur une ou plusieurs lignes    // tout ce qui suit jusqu’à la fin de la ligne est en commentaire (style C++) /* tout ce qui suit jusqu’au symbole symétrique est en commentaires (style C) */

Exemple d’un source

/* les ordres # pour le précompilateur */ #include "iostream.h" #define ValeurMaximum 12345 #include signifie « importer » iostream.h gère les flux d’entrées/sorties #define signifie « chercher/remplacer » /* les définitions de types de variables */ typedef long tEntier; typedef crée un nouveau type de variable à partir d’un type existant (ici long ) /* les (prototypes de) fonctions */ tEntier Incremente(tEntier val) { return val + 1;} " return val+1;" signifie (en ADL) : Incremente  val+1 ; * /* les appels de fonctions */ void main() { tEntier mon_entier ; mon_entier = (tEntier)ValeurMaximum ; La fonction principale : c’est le point de départ unique de l’exécution… cout << Incremente(mon_entier) << endl; } //main cout est le gestionnaire du flux sortant standard (l’écran) On peut écrire plusieurs instructions sur la même ligne…

On peut programmer en C, en C++ ou mixer les deux

 Le C  pas de classe mais des structures ou des énumérations  Des allocations de pointeurs  Le C++  Des classes  La gestion des pointeurs ne se fait pas de la même façon qu’en C  Il n’y a aucune contre-indication théorique à mixer les deux

En C: le .h

#include #include "stdio.h" /*utilisation de la bibliothèque C d’entrées/sorties standards*/ "string.h" /*utilisation de la bibliothèque des chaînes de caractères en C*/ /*Longueur maximum des noms*/ #define LongMaxNom 100 typedef enum { /*énuméré (genre des personnes) : fille ou garçon*/ tGenre_fille=1, /*la constante tGenre_fille vaut 1*/ tGenre_garcon /*la constante tGenre_garcon vaut automatiquement 2*/ } tGenre; typedef struct { /*type de variable représentant une personne*/ tGenre genre; unsigned char float char age; /*garcon ou fille ?*/ /*âge (entier compris en 0 et 255)*/ taille; /*taille en mètres (flottant en simple précision)*/ nom[LongMaxNom+1]; /*nom (LongMaxNom caractères maximum)*/ } tPersonne;

En C : le .c

/* Fonction d’affichage de la civilité en fonction du genre et de l’âge*/ void AfficheCivilite(tPersonne personne) { switch (personne.genre) { case tGenre_fille : if (personne.age<(float)25) { printf(" %s ","Mademoiselle"); } else { printf(" %s ","Madame"); } /*if*/ break ; default : printf(" %s ","Monsieur"); } /*switch*/ } /*AfficheCivilite*/ /* Fonction d’affichage d’une variable de type tPersonne*/ void Affiche(tPersonne personne, int sautdeligne) { AfficheCivilite(personne); printf("%s (age : %d ; taille : %4.2f m)",personne.nom,( int )personne.age,personne.taille); if (sautdeligne) { /* <=> if (sautdeligne<>0) */ printf("\n"); /*} else {*/ } /*if*/ } /*Affiche*/

En C : le .c

/* Fonction d’affichage de la civilité en fonction du genre et de l’âge*/ void AfficheCivilite(tPersonne personne) { switch (personne.genre) { case tGenre_fille : if (personne.age<(float)25) { printf(" %s ","Mademoiselle"); } else { printf(" %s ","Madame"); } /*if*/ break ; default : printf(" %s ","Monsieur"); } /*switch*/ } /*AfficheCivilite*/ /* Fonction d’affichage d’une variable de type tPersonne*/ void Affiche(tPersonne personne, int sautdeligne) { AfficheCivilite(personne); printf("%s (age : %d ; taille : %4.2f m)",personne.nom,( int )personne.age,personne.taille); if (sautdeligne) { /* <=> if (sautdeligne<>0) */ printf("\n"); /*} else {*/ } /*if*/ } /*Affiche*/

En C : le main

int main( int argc, char *argv[]) { tPersonne unepersonne; /*déclaration d'une variable locale*/ printf("Programme %s (%d parametres)\n",argv[0],argc-1); /*initialisation de la variable*/ if (Initialise(

&

unepersonne,tGenre_garcon,( unsigned char )57, ( float )1.765,"Robert")) { Affiche(unepersonne,1); } else { fprintf(stderr,"Le nom est trop long !!!\n"); } /*if*/ if (Initialise(

&

unepersonne,tGenre_fille,( unsigned char )55, ( float )1.67,"Raymonde")) Affiche(unepersonne,1); else fprintf(stderr,"Le nom est trop long !!!\n"); return } /*main*/ 0;

En C++ le .H

#include "iostream" //utilisation de la bibliothèque standard C++ de flux d'entrées/sorties #include "string" //utilisation de la bibliothèque standard C++ des chaînes de caractères using namespace partout std; //Pour ne pas être obligé d'écrire std::string //Longueur maximum des noms #define LongMaxNom 100 typedef enum { //énuméré (genre des personnes) : fille ou garçon tGenre_fille=1, //la constante tGenre_fille vaut 1 tGenre_garcon //la constante tGenre_garcon vaut automatiquement 2 } tGenre;

En C++ le .H (suite)

class public: cPersonne { //type de variable objet représentant une personne tGenre unsigned char float genre; age; taille; //fille ou garçon ?

//âge (entier compris en 0 et 255) //taille en mètres (flottant en simple précision) string nom; //nom (VARIABLE DE LA CLASSE std::string) // Méthode ("inline") d’affichage de la civilité en fonction du genre et de l’âge void AfficheCivilite() const switch { (genre) { // genre n'est pas un paramètre case tGenre_fille : if (age<(float)25) { cout << " Mademoiselle "; } else { cout << " Madame "; } /*if*/ break ; default : cout << " Monsieur "; } /*switch*/ } //AfficheCivilite //Prototype de la méthode ("outline") d'initialisation bool Initialise(tGenre genre, unsigned char age, float taille, char nom[]); //Prototype de la méthode ("outline") d'affichage void Affiche( bool sautdeligne= true ) const ; //sautdeligne a par défaut la valeur true //Prototype du constructeur (d'initialisation) par défaut cPersonne(tGenre Genre=tGenre_fille, unsigned char Age=(unsigned char)0, float Taille=(float)0, char Nom[]=""); }; //cPersonne

En C++ le Cpp

//Corps de la méthode "Initialise" de la classe "cPersonne" bool cPersonne::Initialise(tGenre genre, this this this ->genre = genre; ->age = age; ->taille = taille; unsigned char age, float taille, char nom[]) { // this > remplace le paramètre "anonyme" (objet déclencheur) // si les paramètres n'avait pas le même nom que les membres // il n'y aurait pas besoin de lever les ambiguïtés this ->nom = nom; // donc pas besoin de this-> (qui serait implicite Cf. Affiche) if (strlen(nom)>LongMaxNom) { return false ; //} else { } //if return true ; } //cPersonne::Initialise // Fonction d’affichage d’un objet (une variable de la classe) cPersonne void cPersonne::Affiche( bool sautdeligne) const { char temp[4+1]; sprintf(temp,"%4.2f",taille); AfficheCivilite(); cout << nom.c_str() <<" (age : "<< (int)age << " ; taille : "<< temp <<" m)"; if (sautdeligne) { // <=> if (sautdeligne==true) cout << endl; //} else { } //if } //CPersonne::Affiche //Corps du constructeur (d’initialisation) par défaut de la classe "cPersonne" cPersonne::cPersonne(tGenre Genre, unsigned char Age,float Taille, char Nom[]) { Initialise(Genre,Age,Taille,Nom); } //cPersonne::cPersonne

En c++ le cpp

void main( int argc, char *argv[]) { cout << "Programme " << argv[0] << " (" << (argc-1) << " parametres)"<