Académique Documents
Professionnel Documents
Culture Documents
Safa.hachani@enib.ucar.tn / elleuchislam@gmail.com
2023-2024
CHAPITRE 1
Introduction à la
Programmation Orientée
Objet (POO) et au C++
Plan
Présentation du cours
3
Présentation du cours
Objectif du cours
Connaitre les concepts de la programmation orientée objet.
Apprendre le langage C++.
Utiliser des outils d’aide au développement (dev++).
Organisation
4
Programmation Procédurale (PPD)
Principe
Le programme est divisé en petites parties appelées procédures /fonctions qui
effectuent des traitements sur des données.
Il n’existe pas un lien direct entre les données et les traitements.
Les données et les traitements sont séparés.
Les données à traiter sont passées en arguments aux procédures
PPD
Traitement 3
5
Programmation Procédurale (PPD)
Limites :
Complexité du code
Difficulté de réutilisation du code.
Difficulté de la maintenance et l’ajout de nouvelle fonctionnalités dans les
grandes applications.
Nécessité de modification ou d’insertion des séquences.
Difficulté du travail en équipe.
6
Programmation Orienté Objet (POO)
Principe
Le programme est composé de plusieurs objets qui contiennent :
des données « internes »,
des traitement qui manipulent ces données internes ou d’autres données
Les données et leurs traitements sont regroupés dans une seule entité : objet.
POO Objet 1
Données
Traitements
Objet 2 Objet 3
Données Données
Traitements Traitements
7
Programmation Orienté Objet (POO)
Principe
Les données d’un objet sont appelés ses attributs.
Les traitements d’un objet sont appelés ses méthodes.
Exemples de langages orientés-objets : C++, C#, Java, Python…
POO Objet 1
Données
Attributs
Traitements
Méthodes
Objet 2 Objet 3
Données
Attributs Données
Attributs
Méthodes
Traitements Traitements
Méthodes
8
Programmation Orienté Objet (POO)
Introduction
Paradigme (style) de programmation consistant à assembler des briques
logicielles (objets).
Un objet représente un concept ou une entité du monde.
9
Programmation Orienté Objet (POO)
Concept
Abstraction
Héritage
Polymorphisme
Concepts de
POO
Encapsulation
Objet
Classe
10
Concepts de la Programmation Orienté Objet
Pour la personne qui va l'utiliser, travailler avec un objet est donc beaucoup
plus simple qu'avant : il suffit d’appeler les fonctions sur celui-ci..
11
Concepts de la Programmation Orienté Objet
Objet
Le concept d’objet est utilisé pour modéliser informatiquement des "objets"
concrets de la vie courante (véhicule, personne, etc.) ou des objets
conceptuels (date, quantité, etc.).
12
Concepts de la Programmation Orienté Objet
Classe
Une classe est la description d’une famille d’objets ayant une même
structure et un même comportement
Les objets d’une classe ont des valeurs différentes.
Exemple: Gestion de location de véhicule
13
Concepts de la Programmation Orienté Objet
Classe
Une classe est composée de plusieurs membres dont chacun est soit:
un attribut : variable typée
Une méthode : ensemble d’instruction de traitement
Classe Véhicule
marque
Attributs couleur
vitesse
14
Introduction C++
Langage C++
Langage normalisé par l’ISO
Défini dans les années 1980 (mais a évolué depuis : C++ 98,
C++ 03, C++ 11, C++ 14, C++ 17 puis en 2020 (ISO/IEC 14882:2020, ou
C++ 20).
« Amélioration » de C facilite l’apprentissage pour quelqu’un
qui connaît déjà C. Mais … faire du C en C++ n’est pas
programmer en C++!
Doté d’une bibliothèque de classes et algorithmes
15
Introduction C++
Objectifs du C++
Efficacité (mémoire et rapidité) : Le langage n’ajoute aucune fonction
«cachée» demandant de la mémoire ou des traitements
→ Pas de ramasse -miettes (garbage collector)
Développement plus rapide : Utilisation de la bibliothèque standard,
Réutilisation du code.
Gestion de la mémoire plus simple : Gérer les libérations de
mémoire (free) plus facilement (voire automatiquement), Gestion des
chaînes plus simple
Avantages de la POO
…
16
Du C au C++
Du C au C++
Types et variables
Entrée et Sorties
Allocation dynamique
Le mot clé const
Références
Inférence de type
Conversion de type
Compilation
17
Types et variables
char; short (short int); int; long (long int); long long (long long int); float;
double; long double
18
Types et variables
Attention
int* a, b;
//a est un pointeur sur un entier, b est un entier.
Chaînes de caractères
Le type (classe) std::string fournit les operations courantes sur les chaînes de
façon bien plus simple que les « chaînes » en C.
Déclaration et initialisation
std::string s1;
std::string s2a("valinit"), s2b="valinit";
std::string s3a(s1), s3b=s1;
Affectation =
Comparaison == != <=, ...
Accès à un caractères[i]
Lecture au clavier std::cin >> s;
Affichage std::cout << s;
Longueur d’une chaînes.length()
Concaténation ++=
20
Types et variables
21
Types et variables
Une variable globale est déclarée à l’extérieur de tout bloc. Il est toutefois
fortement conseillé de ne pas utiliser de variables globales.
22
Types et variables
23
Types et variables
24
Types et variables
25
Types et variables
array array.cc
#include <iostream>
#include <array>
int max (std::array<int,5> t){
int m(t[0]);
for (std::size_t i=1; i<5; i++)
if (t[i]>m)
m = t[i];
return m;
}
int main(){
std::array<int, 5> tab {3, 7, 1, 2, 6}; //initializer_list
std::cout << max(tab) << "\n";
std::array<int, 5> tab2(tab);
tab2[2]=12;
tab2.at(5)=15; // Erreur !
tab=tab2;
return 0;
26
Types et variables
27
Types et variables
28
Types et variables
Clause using
using peut être utilisé à la place de typedef avec une syntaxe plus naturelle.
Exemple
using Annee = unsigned int;
Using Tableau = std::array<std::string, 10>;
29
Types et variables
Enum
Les types énumérés de C (enum) sont utilisables en C++ mais conservent leurs
défauts.
enums C enum1.cc
enum Couleur {Rouge, Vert, Bleu };
enum EtatPersonne {Majeur, Mineur};
int main(){
Couleur c(Rouge);
if (c == Majeur ){ }; //seulement un avertissement
int d(c); //même pas un avertissement
return 0; → convertis silencieusement en int.
}
30
Types et variables
31
Types et variables
Les arguments d’une fonction peuvent avoir une valeur par défaut
lors de la déclaration de la fonction.
Si les arguments correspondants ne sont pas passés lors d’un appel, la valeur
par défaut est prise en compte.
32
Allocation dynamique
Rappel en C
Syntaxe en C
Allocation simple
int * i = (int *)(malloc (sizeof(int)));
Allocation d’une zone
int * t = (int *)(malloc (sizeof(int)*taille));
Libération
free(t);
33
Allocation dynamique
Allocation simple
int * i = new int;
int * i = new int(3); //Fixer la valeur initiale
Allocation d’une zone
int * t = new int[taille];
Libération simple
delete i;
Libération d’une zone
delete []i;
34
Allocation dynamique
Attention
35
Const
Exemple
const int I(4); // équivalent à
const int I=4; // équivalent à
int const I(4);
I = 5 // erreur de compilation
Une constante peut être utilisée pour spécifier la taille d’un tableau .
Souvent on marque syntaxiquement les constantes (écriture en
majuscules, première lettre en majuscule, préfixe particulier telque
c_… )
36
Const
Const et pointeurs
Attention à la position du const
37
Exercice
38