24
La programmation Orienté Objet

La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Embed Size (px)

Citation preview

Page 1: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

La programmation Orienté Objet

Page 2: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Chapter 2: Review of Object Orientation

2

2.1 Qu’est-ce que l’Orientation Objet?

Deux types différent de programmation:• Programmation procédural:

▫ Le logiciel est organisé autour de la notion de procédures

▫ Fonctionne bien lorsque les données sont simples

• Paradigme orienté objet:

▫ Grouper ensemble les données décrivant une même entité

▫ Aide à réduire la complexité du système

© Lethbridge/Laganière 2001

Page 3: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Paradigme Orienté Objet•Une approche consistant à organiser la

solution d’un problème autour du concept d’objets.

▫Ces objets sont des instances de classes: Ce sont des abstractions de données Contenant des abstractions de procédures

▫Un programme devient alors un ensemble d’objets collaborant entre eux afin d’effectuer un tâche donnée

Page 4: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Illustration des ces deux types

Page 5: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Chapter 2: Review of Object Orientation

5

2.2 Classes et Objets• Un objet

▫est un ensemble structuré de données s’exécutant dans un logiciel

▫a des propriétés représentant son état

▫a un comportement définissant ses actions et réactions simulant parfois le comportement d’un objet

du monde réel

© Lethbridge/Laganière 2001

Page 6: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Objets

Sensor Réçu

Comptable

Édifice

Paiement

Professeur

AccidentÉtudiant

Personne

Voiture

Page 7: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Classes•Une classe:

▫Est une unité d’abstraction dans un programme orienté-objet

▫Représente des objets similaires ses instances

▫Est un module logiciel Décrivant la structure de ses instances (propriétés) Contenant des méthodes définissant leur

comportement

Page 8: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Donner un nom à une classe▫ Devrait toujours débuter par une lettre majuscule

E.g. Banque not banque

▫ Utiliser le singulier

▫ Utiliser le bon niveau de généralité E.g. Municipalité pourrait être préférable à Ville

▫ Donner un nom non ambigu ayant un sens précis E.g. Pièce peut avoir plusieurs sens

Page 9: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

2.3 Variables d’instances

•Ce sont des variables définies à l’intérieur d’une classe

▫Attributs des données simples E.g. nom, dateDeNaissance

Page 10: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Variables vs. Objets•Une variable

▫Réfère à un objet ▫Peut référer à différents objets à différents

instants

•Un objet peut être simultanément référé par plus d’une variable

•Type d’une variable▫Détermine quelle classe d’objets elle peut

référer

Page 11: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Variables de classe • La valeur d’une telle variable est partagée par toutes

les instances de la classe▫ Aussi appelée variable statique

▫ Si l’une des instances modifie la valeur d’une variable de classe, alors toutes les autres instances verront ce changement

▫ Ces variables sont utiles pour: représenter des constantes (e.g. PI) représenter des propriétés d’appliquant à une

classe en général

Attention: ne pas faire un usage excessif des variables de classes

Page 12: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

2.4 Méthodes, Opérations et Polymorphisme•Opération

▫Une abstraction procédurale de haut niveau correspondant à un comportement spécifique

▫Indépendante de toute implémentation E.g., calcul de l’aire d’une figure

Page 13: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Méthodes, Opérations et Polymorphisme•Méthode

▫Représente un comportement dans une classe donnée

▫Plusieurs classes différentes peuvent avoir des méthodes de même nom Généralement c’est qu’elles réalisent la

même opération d’une manière propre à chaque classe

E.g, le calcul de l’aire d’un rectangle et d’un cercle

Page 14: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Hierarchies

Page 15: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Règle “est-un(e)”

•La généralisation obéit toujours à une règle d’état▫“Un compte chèque est un compte de

banque”▫“Un village est une municipalité”

•Est-ce qu’une Province devrait être une sous-classe de Pays?▫Non!

“Une province n’est pas un pays”

Page 16: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Un arbre d’héritage pour des entités géométriques

Rectangle

QuadrilateralCircle

Ellipse Polygon PlaneLine

Shape3DShape2D

MatrixShape Point

MathematicalObject

Page 17: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Tous les éléments hérités doivent s’appliquer adéquatement aux sous-classes

Page 18: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Le langage Java• Histoire

▫ Le premier langage orienté objet fut Simula-67 Conçu pour faciliter l’écriture de programmes de

simulation▫ Au début des années 1980, Smalltalk fut développé à

Xerox PARC Syntaxe nouvelle, importante librairie èa code ouvert,

indépendance de plate-forme, ramasse-miette, bytecode▫ A la fin des années 1980, C++ fut développé par B.

Stroustrup, Tire profit des avantages de l’orienté-objet tout en

profitant de la popularité de C▫ En 1991, les ingénieurs de Sun Microsystems lance un

projet afin concevoir un langage à être utilisé dans les petits appareils intelligents: Oak Avec l’avènement de l’Internet, une nouvelle

opportunité se dessine pour cette technologie Ce nouveau langage renommé Java, fut officiellement

lancé en 1995 à la conférence SunWorld ’95

Page 19: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Documentation

▫Être capable de connaître les classes et les méthodes d’un système orienté-objet est fondamental

▫Un outil appelé Javadoc permet de construire automatiquement la documentation associée à un programme écrit en Java Cette documentation est construite à partir du

code et des commentaires écrits par le programmeur

Un format spécial doit être respecté pour les commentaires

Ceux-ci peuvent même inclure du html

Page 20: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Style de programmation

•Toujours garder à l’esprit qu’un programme est fait pour être lu▫Toujours retenir l’alternative la plus simple▫Écarter toute approche aussi futée soit elle,

mais difficile à saisir▫Un programme plus court n’est pas

nécessairement meilleur•Choisir des noms appropriés

▫Ils doivent être très descriptifs

Page 21: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Style de programmation

•Commenter ▫Tout ce qui pourrait ne pas être évident▫Les commentaires peuvent représenter de

25à 50% du programme

•Organiser les classes de façon consistante▫Variables, constructeurs, méthodes

publiques et méthodes privées

•Structurer le code de façon consistante

Page 22: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Style de programmation

•Éviter toute duplication de code▫Ne pas cloner le code

Créer plutôt une méthode (privée) regroupant le code commun

Page 23: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

Style de programmation

•Se conformer aux bons principes de l’orienté objet

•Minimiser le nombre de méthodes publiques

•Bien séparer les interfaces et l’application

Page 24: La programmation Orienté Objet. 2.1 Quest-ce que lOrientation Objet? Deux types différent de programmation: Programmation procédural: Le logiciel est

2.10 Risques et difficultés liés à la programmation orientée objet

•Les langages sont en constantes évolution

•L’efficacité peut être quelques fois problématique