0% ont trouvé ce document utile (0 vote)
4 vues45 pages

Concepts clés de la POO et algorithmes

Le document présente les concepts fondamentaux de la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme, ainsi que des notions d'algorithmique et de programmation structurée. Il vise à fournir aux étudiants une compréhension des bases de la POO, indépendamment des langages de programmation. Des exemples pratiques et des exercices sont également inclus pour illustrer les concepts abordés.

Transféré par

jupitemma19
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues45 pages

Concepts clés de la POO et algorithmes

Le document présente les concepts fondamentaux de la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme, ainsi que des notions d'algorithmique et de programmation structurée. Il vise à fournir aux étudiants une compréhension des bases de la POO, indépendamment des langages de programmation. Des exemples pratiques et des exercices sont également inclus pour illustrer les concepts abordés.

Transféré par

jupitemma19
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Concepts de la

Programmation Orientée Objet

Introduction

Atindehou Mêton-Mêton

26 novembre 2020
Plan : 1 – Introduction et notions préliminaires

1.1 Contenu et objectifs du cours

1.2 Revision d’algorithmique

1.3 Concept de programmation

1.4 Concepts fondamentaux de l’orienté objet

1
Contenu et objectifs du cours
Contenu du cours

1. Concepts de la POO
I Encapsulation
I Héritage
I Polymorphisme
I Agrégation
I Composition
I Théorie de Cook
I Théorie de Liskov

2. Notion d’objet
I Objet
I Classe

3. Présentation d’UML
4. Ligature
I Ligature statique
I Ligature dynamique
A l’issue du cours, l’étudiant doit :

1. Avoir appris les concepts de bases de la programmation


orientée objet, indépendamment des différents langages de
programmation orientés objet
Concept d’algorithme
Les os d’Ishango

Le premier ordinateur daterait de 22000 ans

Figure – https ://[Link]/bibnum/889

Voir également : https ://[Link]/wiki/Os_d%27Ishango

6
Modèle abstrait simplifié de l’ordinateur

L’ordinateur se décompose en quatre (04) parties


dont les rôles sont respectivement :

1. ALU : effectuer les opérations de bases,


2. Unité de contrôle : ordonnancer les opérations,
3. Mémoire : contenir les données des programmes
I Mémoire volatile,
I Mémoire permanente.
4. Les dispositifs d’entrées/sorties : communiquer
avec le monde extérieur.
Figure – Architecture de
Von Neumann - wikipedia

7
Caractéristiques de l’ordinateur

L’ordinateur est un :

1. Automate,

2. Algorithmique,

3. Universel.

8
Automate

C’est un exécutant incapable de la décision :


Il faut lui donner des directives simplement compréhensibles,
afin qu’il puisse réaliser sa tâche ! ! !

Exemples d’automates spécialisés :


La montre bracelet,
Le poste radio,
Les feux de signalisation.
En quoi consiste exactement les tâches à réaliser ?

L’ordinateur est un automate universel :


il regroupe un nombre considérable d’automates spécialisés.

9
Algorithmique

Le mot vient du nom du mathématicien perse Muhammad ibn Musa al


Khwarizmi(IX e siècle).

Un algorithme est un énoncé dans un langage bien défini d’une


suite d’opérations permettant de résoudre par calcul un problème.

1. Algorithme séquentielle :
les opérations s’exécutent en séquence, les unes après les autres.

2. Algorithme parallèle :
certaines opérations s’exécutent en même temps.

10
Exemple intuitif d’algorithme (1/2)

Ecrire un algorithme permettant à un robot de maison


de préparer une tasse de café soluble.

Première solution :

DEBUT_ALGORITHME
1. Faire bouillir de l’eau,
2. Mettre le café dans la tasse,
3. Ajouter l’eau dans la tasse.
FIN_ALGORITHME

On peut mieux expliciter les directives à donner à l’automate ! ! !

11
Exemple intuitif d’algorithme (1/2)
DEBUT_ALGORITHME
1. Faire bouillir l’eau (peut être affinée en)
1.1 Remplir la bouilloire d’eau (qui peut être décomposer en :)
1.1.1 Mettre la bouilloire sous le robinet
1.1.2 Ouvrir le robinet
1.1.3 Attendre que la bouilloire soit pleine
1.1.4 Fermer le robinet
1.2 Brancher la bouilloire sur le secteur
1.3 Attendre l’ébullition
1.4 Débrancher la bouilloire
2. Mettre le café dans la tasse (pourrait être affiné en)
2.1 Ouvrir le pot à café
2.2 Prendre une cuillère à café
2.3 Plonger la cuillère dans le pot
2.4 Verser le contenu de la cuillère dans la tasse
2.5 Fermer le pôt à café
3. Ajouter de l’eau dans la tasse (pourrait être affinée en)
3.1 Verser de l’eau dans la tasse jusqu’à ce que celle-ci soit pleine
FIN_ALGORITHME
12
Exemple intuitif d’algorithme (2/2)

Que faire l’algorithme suivant ?

DEBUT_ALGORITHME

− → −
1. Se placer dans un repère orthonormé (O ; i , j )
2. Se positionner sur le point de coordonnées (1, 1)
3. Prendre la direction des abscisses croissants
4. Tracer droit devant un segment de longueur 3 unités
5. Tourner de 120 degrés dans le sens trigonométrique
6. Tracer droit devant un segment de longueur 3 unités
7. Tourner de 120 degrés dans le sens trigonométrique
8. Tracer droit devant un segment de longueur 3 unités
FIN_ALGORITHME

13
Exercices

Pour s’entrainer :
1. Ecrire un algorithme permettant d’enfoncer un clou dans une table.
2. Ecrire un algorithme permettant de se lever du lit, puis de se
préparer et de enfin de venir au cours à UAC, à l’heure le matin.
3. Ecrire une algorithme permettant de tracer dans un repère

− →−
orthonormé (O ; i , j ) un rectangle quelconque.
4. Ecrire une algorithme permettant de résoudre l’équation
ax2 + bx + c = 0 dans C.
5. Ecrire un algorithme permettant de calculer :
n
X
5.1 La somme S = i,
i=0
Yn

5.2 Le produit P = i.
i=1

14
Concept de la programmation

1. Les difficultés de la programmation

2. Le “code” des programmeurs

3. Les principes de la programmation structurée


Les difficultés de la programmation

Nombreuses erreurs :
1. Erreurs courantes (syntaxe, logique, ...)
2. Programme qui ne fait pas ce qu’on attend de lui,
3. Programme mal utilisé,
4. Choix du langage adapté au problème (très nombreux possibles).

Nécessité d’une méthode de construction de programme pour éviter


le “cycle infernal” de la programmation sauvage :

essais –> erreurs –> corrections –> essais ...

16
Le “code” des programmeurs
Objectif du “code” des programmeurs

Méthode générale pour concevoir “quasi-infailliblement” :


I des programmes résolvant des problèmes du monde réel.

Appliquer le code permet de faire de la programmation structurée.


I Voir les principes de la programmation structurée au slide 31.

Le code se compose de trois parties :


1. Analyser le problème du monde réel,
2. Poser le problème informatique correspondant,
3. Résoudre le problème informatique.

18
Analyser le problème du monde réel

Objectif : Etudier un problème du monde réel donné, jusqu’à en avoir


une bonne compréhension.
1. Enoncer simplement le problème
I Donner les définitions et conventions préliminaires,
I Ne pas “tout redéfinir”
I Utiliser de préférence des définitions intuitives ou conventionnels.

2. Poser le problème
I Déterminer les parties du problème auxquelles il faut apporter une
solution.

3. Mener l’étude théorique du problème (une des plus importante)


I Dégager les propriétés fondamentales (“physiques”,
“mathématiques”, ...) du problème
I “Comment on fait dans le monde réel pour régler ce problème ?”

19
Exemple d’analyse d’un problème du monde réel

Résoudre dans R l’équation

(E) : ax2 + bx + c = 0 avec a, b, c ∈ R

20
Poser le problème informatique correspondant

Objectif : Expliciter en termes informatiques le problème du monde réel.


1. Etablir des conventions de représentation
I Choisir l’information “utile” à représenter,
I Choisir parmi les outils disponibles ceux qui conviennent,
I Si nécessaire, expliciter “la forme” de nouveaux outils.

2. Spécifier le programme : “c’est quoi son utilité ?”


I pré-conditions : les conditions préalables à son exécution,
I post-conditions : les modifications engendrées,
I résultats : forme des résultats qui seront produits.

3. Décomposer le problème : “On divise pour mieux régner !”


I Fractionner le problème principal en sous-problèmes indépendants
I Fractionner les sous-problèmes en sous-sous-problèmes indépendants
I Obtenir des problèmes “élémentaires”, plus simples à résoudre.

21
Exemple d’un problème informatique

Résolution dans R de (E)

(E) : ax2 + bx + c = 0 avec a, b, c ∈ R

SP1 : Le polynôme est du second degré,


SP2 : Le polynôme est du premier degré,
SP3 : Le polynôme est une constante,
SP4 : Le polynôme est dégénéré.

22
Résoudre le problème informatique

Objectif : Mettre en oeuvre le programme informatique.


1. Construire les algorithmes des sous-problèmes simples,

2. Construire les algorithmes des sous-problèmes,

3. Transcrire les algorithmes dans un langage de programmation.

23
Résolution de l’équation ax2 + bx + c = 0 dans R
Déclaration des variables dans AlgoBox

VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
delta EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
SI (a == 0) ALORS
DEBUT_SI
FIN_SI
SINON
DEBUT_SINON
FIN_SINON
FIN_ALGORITHME

24
Résolution de l’équation ax2 + bx + c = 0 dans R
Résolution pour a == 0
SI (a == 0) ALORS
DEBUT_SI
SI (b == 0) ALORS
DEBUT_SI
SI (c == 0) ALORS
DEBUT_SI
AFFICHER "L’équation est dégénérée. "
AFFICHER "Tout réel est solution"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Equation impossible"
AFFICHER "Aucune solution."
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Une unique solution réelle"
AFFICHER "x = -c/b "
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
FIN_SINON
FIN_ALGORITHME

25
Résolution de l’équation ax2 + bx + c = 0 dans R
Résolution pour a != 0
SI (a == 0) ALORS
DEBUT_SI
FIN_SI
SINON
DEBUT_SINON
delta PREND_LA_VALEUR b*b - 4*a*c
SI (delta >= 0) ALORS
DEBUT_SI
SI (delta == 0) ALORS
DEBUT_SI
AFFICHER "Une unique solution double"
AFFICHER "x = -b / (2*a) "
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Deux solutions distinctes"
AFFICHER "x1 = (-b - sqrt(delta)) / (2*a) "
AFFICHER "x2 = (-b + sqrt(delta)) / (2*a) "
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Aucune solution réelle"
FIN_SINON
FIN_SINON
FIN_ALGORITHME
26
Pour avoir AlgoBox

Figure – http ://[Link]/algobox/[Link]

Pour apprendre l’algorithmique, consulter les liens suivants :


https ://[Link]/algobox/[Link]
https ://[Link]/algobox/[Link]
https ://[Link]/algobox/tutoalgobox/[Link]

27
“Construction systématique d’algorithme correct”

Pour avoir “systématiquement” des algorithmes corrects du premier


coups, nous appliquerons deux méthodes :
1. La méthode de “diviser pour mieux régner” afin de construire des
structures de contrôles conditionnelles,
2. La rechercher des fragments itératifs pour construire la structure
itérative while (L’utilisation d’une des deux autres structures
itératives est équivalentes à celle de la boucle while.)

28
Anatomie de la boucle while

L’élaboration d’une boucle while peut se décomposer en


la construction de quatre fragments itératifs :

1 // INIT
2 while (! H )
3 {
4 // ITER
5 }
6 // CLOT

1. INIT : Instructions de l’initialisation


2. ITER : Instructions de l’itération
3. CLOT : Instructions de la clôture
4. H : Condition d’arrêt

29
Remarques
Nous proposons deux méthodes pour rechercher les quatre (04)
fragments itératifs de la boucle while :
1. L’analyse d’une méthode simplifiée de calcul afin de retrouver un
compteur et un accumulateur,
2. L’application de la méthode des tableaux (forme simplifiée de
l’application de la méthode de l’invariant).
Ces fragments servent aussi à prouver la correction de la boucle.
On utilise alors en plus un variant.
Où :
Compteur : variable qui sert à compter le nombre d’itération
Accumulateur : variable qui sert à conserver les résultats des itérations
Variant : suite décroissante et minorée
Invariant de boucle : expression booléenne qui est vraie à tout moment
pour sa boucle et qui décrit formellement ce que fait la
boucle.

30
Les principes de la programmation structurée

1. Programmation descendante (du général au particulier),


2. Programmation modulaire,
3. Programmation documentée,
4. Programmation simplement lisible

31
Présentation intuitive des concepts
de la programmation orienté objet
Programmation orienté objet
Un langage de programmation orienté objet est conçu pour :
Mettre en oeuvre des objets “informatiques”
Donnant des représentations abstraites d’objets du monde réel

Les objectifs étant pour la POO


Améliorer la réutilisation des outils existant
Favoriser la spécialisation des outils existants
Généraliser le concept de types de données (tel celui du langage C)

Pour cela, la POO s’appuie sur les trois concepts fondamentaux de


Encapsulation des données
Héritage entre objets
Polymorphismes entre objets

33
Concept d’abstraction (1/2)

Figure – Grady Booch, "Object-oriented Analysis and Design"

Des multiples vues possibles d’un même objet du monde réel


Il faut choisir des propriétés pertinentes pour le problème à traiter
Idem pour obtenir une représentation par un objet informatique
Concept d’abstraction (2/2)

Choix des propriétés pertinentes pour représenter un objet :


“Tamiser les propriétés possibles” pour retenir celles nécessaires
Concept d’objet

Un objet est la donnée de :


1. Une identité
2. Des attributs (définissant son état)
3. Des méthodes (programmes gérant son comportement)
Concept d’encapsulation

Problèmes : Garantir
L’évolution d’un objet indépendamment de son utilisation
L’intégrité des attributs d’un objet
Solution : Accès aux attributs d’un objet par une interface
Concept d’héritage Intuitivement (1/2)

Transférer les caractéristiques d’un objet “père” à sa “descendance”


Concept d’héritage (2/2)

Figure – https ://[Link]/rawsrc/p10377/conception/


dependances_et_couplage_des_classes_poo

Problème :
Utiliser d’anciens objets pour en créer de nouveaux
En transférant automatiquement les propriétés (attributs, méthodes)
des anciens aux nouveaux
Solution : On étend les anciens objets
Concept de composition

Figure – https ://[Link]/rawsrc/p10377/conception/


dependances_et_couplage_des_classes_poo

Problème : Concevoir un objet qui se décompose en sous-objets dont les


existences sont dépendantes (ils font parties des objets)
Solution : Créer des sous-objets composites
Remarques :
Les objets composites sont gérés par l’objet mère
A la mort du corps humain, les organes meurs également
Concept d’agrégation

Figure – http ://[Link]/net/courscharp/chap4/

Problème : Concevoir un objet formé d’autres objets


Remarques :
Les objets composites sont gérés par l’objet mère
A la mort du corps humain, les organes meurs également
Concept d’association

Figure – https ://[Link]/rawsrc/p10377/conception/


dependances_et_couplage_des_classes_poo

Problème : Concevoir un objet utilisant les fonctionnalités d’autres


objets
Dépendances et couplage des objets
Association, heritage, composition et agrégation

Figure – https ://[Link]/rawsrc/p10377/conception/


dependances_et_couplage_des_classes_poo
Concept de polymorphisme

Littéralement : “Le polymorphisme est la capacité pour un objet donné,


de prendre plusieurs formes”
Problème :
Manipuler plusieurs objets de formes “similaires”,
Comme si tous ces objets étaient en fait un unique objet
Solution :
On regroupe pour tous ces objets les propriétés identiques à
“manipuler” afin d’obtenir un seul objet
On déclare ces objets comme étant des instances (“représentations”)
de l’objet obtenu

Vous aimerez peut-être aussi