Conception des Programmes et Orienté-Objet · Conception des Programmes et Orienté-Objet...

Post on 10-Sep-2018

227 views 0 download

Transcript of Conception des Programmes et Orienté-Objet · Conception des Programmes et Orienté-Objet...

Conception des Programmes et Orienté-ObjetPrincipes et fondamentaux

Présentée par Dr. Samia GAMOURA-CHEHBI

maj 2016

Plan

1. Conception : C’est quoi et … Pourquoi ?

4. Pratique : OO et UML, c’est quoi dans la pratique ?

2. Orienté Objet : Qu’est ce que c’est ? … Pourquoi ?

3. UML : Qu’est ce que c’est ? … Comment ?

5. Avenir : OO, c’est quoi dans l’avenir ?

Plan

1. Conception : C’est quoi et … Pourquoi ?

4. Pratique : OO et UML, c’est quoi dans la pratique ?

2. Orienté Objet : Qu’est ce que c’est ? … Pourquoi ?

3. UML : Qu’est ce que c’est ? … Comment ?

5. Avenir : OO, c’est quoi dans l’avenir ?

1. Conception : Pourquoi ?

Objectif : Construction, réalisation, …

Moyen : Schéma, plan, …

Objectif : Logiciel, Programme, SI, …

Moyen : Conception

Mais aussi :

Apparition de besoins nouveaux (années 80)Domaines d'application de plus en plus nombreux

Applications de plus en plus complexes, notamment en interactions homme-machine (IHM)

La réutilisabilité des logiciels devient une nécessité économique

Besoin d'abstraction des données

Besoin de modularité, d'évolutivité

Besoin de communication

Besoin de maintenance, qui devient, de plus en plus couteuse

1. Conception : Pourquoi ?

1. Initialiser stock = 0

2. Décharger camion

3. Stock = Stock + 1

4. Si Camion est vide alors aller à étape 6

5. Sinon aller à l’étape 2

6. Imprimer « le stock déchargé est : » Stock

7. Fin du programme

1. Conception : où est le problème ?

Conception à la SPAGHETTI

• Complexité de conception

• Complexité de maintenance et de suivi

• Pas facile à comprendre et à communiquer

1972. Lorge Parnas : … To be used in decomposing systems into modulesDécoupage en modulesEncapsulation

1968. Dijkstra : A case against the GOTOPas de GOTO !Modularité plutôt que des blocks procéduraux

1970. Alan Kay : … Designing by piecessous-classificationpolymorphisme

1. Conception : Histoire, évolution des idées et réflexions

1972. Lorge Parnas : … To be used in decomposing systems into modules

Découpage en modules

Encapsulation

1968. Dijkstra : A case against the GOTO

Pas de GOTO !

Modularité plutôt que des blocks procéduraux

1970. Alan Kay : … Designing by pieces

sous-classification

polymorphisme

1. Conception : Histoire, évolution des idées et réflexions

Décomposition en objets :

Orienté-Objet

1. Conception : Notions et définitions

Programmation structurée ?

séparation des données et des traitements • Exemple : Évolution d’une application de gestion de bibliothèque pour gérer une

médiathèque

Un programme ? est un ensemble de procédures• Qui utilisent des données• Qui modifient des données

Programmer ?c’est concevoir des traitements• Elaboration d’algorithmes

Plan

1. Conception : C’est quoi et … Pourquoi ?

4. Pratique : OO et UML, c’est quoi dans la pratique ?

2. Orienté Objet : Qu’est ce que c’est ? … Pourquoi ?

3. UML : Qu’est ce que c’est ? … Comment ?

5. Avenir : OO, c’est quoi dans l’avenir ?

2. Orienté objet : c’est quoi ?

Programmation orientée-objet ? Centralisation des données et des traitements, au sein d’une même entité : l’objet

• Un objet est une entité

• Qui possède une identité (un nom)• Dont les attributs décrivent l’état

• Dont les opérations (méthodes) décrivent le comportement• Un objet communique avec un autre objet par envoi de messages

2. Orient objet : Concept

Classe

Marque

Puissance fiscale

Vitesse maximale

Vitesse courante

Objet 1

Marque : Citroën

Puissance fiscale : 7

Vitesse maximale : 230

Vitesse courante : 50

Objet 2

Marque : Renault

Puissance fiscale : 6

Vitesse maximale : 220

Vitesse courante : 90

Objet 3

Marque : BMW

Puissance fiscale : 4

Vitesse maximale : 210

Vitesse courante : 120

2. Orienté objet : c’est quoi ?

� Il n’y a plus de programme au sens strict

� Chaque entité est conçue indépendamment

� Modéliser la réalité telle qu’elle est conceptualisée

� On pense système avant de penser traitement

� L’objet existe et vie, il est donc modélisable.

� Dans un système, réussir à identifier les acteurs = les objets = les entités = ...

2. Orienté objet : Pourquoi ?

� Modularité

� Maîtrise des interactions

� Facilité de maintenance

� Réutilisabilité

� Facilité de codage

� Evolutivité du système

Gains ?

l’Objet

� Utilisation de la mémoire :

Dans les langages procéduraux, il est nécessaire de définir toutes les données dont on va avoir besoin ; Le compilateur réserve systématiquement toute la place en mémoire, nécessaire à ces données, et durant toute l’exécution du programme.En programmation objet, l’utilisation de la mémoire est dynamique : fonction des instances qui sont utilisées à un moment donné.

2. Orient objet : Pourquoi ?

2. Orienté objet : Comment décomposer ?

� Principe : Décomposer le système en objets (classes) ?

� Sur critère fonctionnel ? � Sur critère structurel ?

A

B

CD

E

F

-

- -

-

-

--

-

Fonction

Sous-fonction 1 Sous-fonction 2

Sous-fct 1.2Sous-fct 1.1 Sous-fct 2Sous-fct 2

Si la fonction change et évolution (souvent le cas) alors revoir tout le modèle !

Si la fonction évolution, modifier les méthodes. Si la structure évolue alors modifier les attributs : Plus facile à maintenir.

2. Orienté objet : Histoire, évolution des idées et réflexions

1983. Génie Logiciel: ADA …

1968-1976. Intelligence Artificielle : SMALLTALK (1976) était le 1er langage à implémenter les concepts fondateurs de l’objet (encapsulation, agrégation, héritage)

1967. SIMULA: 1er langage de programmation à implémenter le concept de type abstrait, à l’aide de classes

2. Orient objet : Histoire, évolution des idées et réflexions

1994. Java : Par Sunsoft, langage de classe «à la smalltalk» avec syntaxe de type C++

1988. Langages objet académiques : Eiffel, Objective C, Loops, …

1986. C++ : Par Bjarne Stroustrup

2. Orienté objet : Classes & objets

Héritage : Relation qui permet la transmission des propriétés d'une classe (ses attributs et méthodes) vers une sous-classe : • Une sous-classe est une spécialisation de sa super-classe ou classe mère• Une super-classe est une généralisation de ses sous-classes

Véhicule

CamionVoiture

Avion

Engin

Moto

est-un

2. Orient objet : Classes & objets

Généralisation :

On dit qu’une sous-classe hérite de sa super-classe• Elle hérite de sa structure• Elle hérite de son comportementRemarque : on hérite aussi des grands-parents…

La super-classe

Est-un

La sous-classe

2. Orienté objet : Classes & objets

Spécialisation :

Une sous-classe spécialise• Elle ajoute des éléments de structure (attributs)• Elle ajoute de nouveaux comportements (opérations)• Elle peut modifier les comportements hérités :

• Substitution• Surcharge

• Plusieurs classes peuvent être généralisées en une classe qui les factorise• La super-classe regroupe ainsi les caractéristiques communes d’un ensemble de

classesRemarque : L'héritage évite la duplication et encourage la réutilisation

CompteCourant

déposer (uneSomme)

solde ()

retirer (uneSomme)

estADecouvert ()

Méthodes héritées

Méthode surchargée

Méthode ajoutée

2. Orienté objet : Relations entre classes

Une relation est une connexion sémantique entre des classes On distingue : • Les associations de classes• Les relations de classification (ou d’héritage)

Client

nom

prénom

âge

CompteCourant

numéro

solde courant

UnClient

Montale

Fabien

43

UnCompte

950445123

+ 12001

UnAutreCompte

950445675

- 31789

Société

Nom

Adresse siège

Code SIRET

2. Orienté objet : Relations entre classes

Associations :

Les associations entre classes peuvent être : • Structurelles

• composition, agrégation• Situatives

• dans le temps (avant, pendant, après, ...)• dans l’espace (sur, sous, à gauche de, …)

• Significatives d’un rôle, d’une possession• directeur de, maire de, piloté par, • etc.

2. Orienté objet : Relations entre classes

Agrégation :

• Représente une connexion bidirectionnelle non symétrique• Exprime un couplage plus fort entre classes• Permet de définir une relation type composé/composants :

• Définit des objets composés d’autres objets• Permet d’assembler des objets de base, pour construire des objets plus

complexes

Agrégation réflexiveAgrégation

type composé / composants

2. Orienté objet : Relations entre classes

• Héritage : répond à la question «est une sorte de ?» ou «est un ?»• Agrégation : répond à la question «est composé de ?» ou «a des ?»

Voiture

Roue Moteur

Une roue n’est pas une

sorte de voiture !

Une voiture a des roues !

2. Orienté objet : Polymorphisme

Le polymorphisme :

• poly - plusieurs • morphisme – forme

Rembobiner

Dérouler

Jouer

Arrêter

Lecteur CD

Cassette

... Symboles

polymorphes

USB

2. Orienté objet : Polymorphisme

Le polymorphisme :

• C’est la faculté d'une opération à pouvoir s'appliquer à des objets de classes différentes

• C’est la propriété de donner le même nom (sélecteur dans le message) :• À des comportements analogues• Qui vont donner lieu à des réalisations plus ou moins différentes • Selon le receveur du message

Vehicule convoi[3] =

{

Train("TGV"),

Voiture("twingo"),

Bateau("Titanic")

};

for (int i = 0; i < 3; i++)

{

convoi[i].seDeplacer();

}

En termes informatiques

2. Orienté objet : Encapsulation

Encapsulation :

• Consiste à masquer les détails d'implémentation d'un objet, en définissant une interface

• C’est la vue externe d'un objet, • Elle définit les services accessibles (offerts) aux utilisateurs de l'objet• Elle facilite l'évolution d'une application car elle stabilise l'utilisation des objets• Garantit l'intégrité des données, car elle permet d'interdire l'accès direct aux

attributs des objets

Individu

Opérations : Attributs : interface

esTuMajeur

donneMoiTonPoids

donneMoiTonAge

esTuMajeur

donneMoiTonPoids

dateNaissance

ageMajorité

booléen esTuMajeur (){Retourne (self.donneMoiTonAge () >= self.ageMajorité() }

poids

Plan

1. Conception : C’est quoi et … Pourquoi ?

4. Pratique : OO et UML, c’est quoi dans la pratique ?

2. Orienté Objet : Qu’est ce que c’est ? … Pourquoi ?

3. UML : Qu’est ce que c’est ? … Comment ?

5. Avenir : OO, c’est quoi dans l’avenir ?

1993 Booch : Diagrammes et légendes

1984. Knuth : Utilisation des commentairesInconvénient : illisibilité et structure non apparente

1990. Rumbaugh:Diagrammes

3. UML : Un peu d’histoire …

1984. Knuth : Utilisation des commentairesInconvénient : illisibilité et structure non apparente

1993 Booch : … To be used in decomposing systems into modules

Diagrammes et légendes

1990. Rumbaugh:

Diagrammes

3. UML : Un peu d’histoire …

Un langage unifié standardisé :

Unified Modeling Language

3. UML : Fondements

� UML (Unified Modeling Language, traduisez "langage de modélisation objet unifié")

� Né de la fusion : OMT, Booch et OOSE

� Résultat d'un large consensus : L’OMG centralise et normalise les évolutions

� Un standard incontournable

� Langage de modélisation ouvert

� De nombreux outils supportent UML

3. UML : Fondements

� UML n’est ni une méthode, ni un processus

� UML est un langage qui définit : les éléments de la modélisation et leur sémantique

� UML définit différentes vues (perspectives) d’un système d’information

� Les perspectives guident l’utilisation des concepts objets

� UML est un support de communication

� Un langage de notations graphiques

3. UML : Fondements

UML rassemble plusieurs vues (perspectives) complémentaires pour modéliser au mieux le SI

Vue Logique

Vue des processusVue des

composants

Vue de déploiement

Vue des cas

d’utilisation

3. UML : Fondements

exprime ses besoins

Utilisateur

interroge les utilisateurset les experts métier

Analyste

Expert métier

exprime les concepts du métier

gère les risques du projet

Commercialprécise les éléments du

contrat avec le client

Chef de projet

évalue le coût de la réalisation

Chaque acteur a une vue

différente sur le projet

3. UML : Fondements

Concepteurconstitue le modèle de la solution =modèle de

conception

Architecte

orienté logiciel

constitue l'architecture logique du système

Développeur réalise une partie du système

Testeur

(validation

fonctionnel)

teste le système selon le

modèle des besoins

Chaque acteur a une vue

différente sur le projet

Architecte

orienté matériel /

réseau

Architecture au niveau :

• ressources matériels

• répartition du logiciel dans ces

ressources

3. UML : Fondements

• Diagramme de classes

• Diagramme d’objets

• Diagramme de cas d’utilisation

• Diagramme de composants

• Diagramme de déploiement

• Diagramme d’états-transitions

• Diagramme d’activités

• Diagramme de collaboration

• Diagramme de séquence

Vision statiqueVision statique Vision dynamiqueVision dynamique

3. UML : Fondements

• Le diagramme de classe permet • D’illustrer les structures des classes • de préciser le comportement générique et les responsabilités des objets

représentés

UML : Diagrammes ?

• Le diagramme d’objet permet • D’illustrer les structures des objets et des liens dans un état donné• De préciser des points de vue particuliers (snapshot)

3. UML : Diagrammes d’état transition ?

• Le diagramme d’états-transition

• Permet de décrire les changements d'états d’une classe, en réponse aux interactions avec d'autres classes ou avec des acteurs

• Principe : • Automate d'états finis, sous forme de graphes d'états, reliés par des arcs orientés qui

décrivent les transitions

3. UML : Diagrammes de cas d’utilisation ?

• Le diagramme de cas d’utilisation

• Présente les besoins des utilisateurs vis à vis du système• Le Use-case correspond à la séquence d’interactions réalisées par un acteur, en

vue d’obtenir un résultat précis.

3. UML : Diagrammes de séquences ?

• Diagramme de séquence

• Présente les collaborations entre objets selon un point de vue temporel : • L'ordre d'envoi d'un message est déterminé par sa position sur l'axe vertical

du diagramme• Le temps s'écoule "de haut en bas" de cet axe

• Pour illustrer un cas d'utilisation ou pour représenter les messages échangés entre objets

3. UML : Diagrammes de collaboration ?

• Le diagramme de collaboration

• Spécifie le comportement dynamique du système suivant la vision des messages échangés.

• Modélise les flux de contrôle et illustre la coordination entre objets (instances de classes) et/ou entre objets et acteurs

3. UML : Diagrammes d’activité ?

• Diagramme d’activités

• Présente le comportement interne d'une opération ou le déroulement d'un cas d'utilisation

3. UML : Diagrammes de composants ?

• Diagramme de composants

• Permet de décrire l'architecture physique et statique d'une application en terme de modules (fichiers sources, librairies, exécutables, etc…)

• Montre la mise en oeuvre physique des modèles de la vue logique avec l'environnement de développement

• Les composants peuvent être organisés en paquetages, qui définissent des sous-systèmes

3. UML : Diagrammes de déploiement ?

• Diagramme de déploiement

• Montre la disposition physique des matériels qui composent le système et la répartition des composants sur ces matériels

• Correspond à la vue de déploiement d'une architecture logicielle • Les ressources matérielles sont représentées sous forme de noeuds

3. UML : Diagrammes ?

Modèle de conception

Modèle

d ’implémentation

Modèle des besoins des

acteurs

Modèle d’analyse des

besoins

Que veut-on ? Dans quel environnement ?

QUE doit-on

modéliser ?

Diagramme de cas d’utilisation

Diagramme de séquence

Diagramme de collaboration

Diagramme d’activité

Diagramme d’état-transition

Diagramme de classe

Diagramme d’objet

Diagramme de composant

Diagramme de déploiement

COMMENT le

réaliser ?

Plan

1. Conception : C’est quoi et … Pourquoi ?

4. Pratique : OO et UML, c’est quoi dans la pratique ?

5. Avenir : OO, c’est quoi dans l’avenir ?

2. Orienté Objet : Qu’est ce que c’est ? … Pourquoi ?

3. UML : Qu’est ce que c’est ? … Comment ?

4. Pratique

Cette girafe, est elle :- une classe - une instance?

Question ?

4. Pratique

Réponse

Cette girafe, est :- une classe - une instance

4. Pratique

Quelles sont les classes et quelles sont les instances ?

• Le chat

• Garfield

• Felix the cat

• La tulipe

• Les tulipes de mon jardin

• La fleur

Question ?

4. Pratique

Classes et quelles sont les instances :

• Le chat : une classe

• Garfield : une instance de la classe chat

• Felix the cat : une instance de la classe chat

Réponse

• La tulipe : une classe qui hérite de la classe fleur

• Les tulipes de mon jardin : instances de la classe tulipe

• La fleur : une classe

4. Pratique

Ces arbres de généralisation, sont ils corrects ?

Voiture

Coffre Roue Moteur

Question ?

4. Pratique

Voiture

Coffre Roue Moteur

Non, un moteur n’est pas une sorte de

voiture, une voiture possède un moteur

=> relation d’agrégation

Non, ce sont les états d’un individu

=> attribut « état »

Arbres de généralisation :

Réponse

4. Pratique

• L’autruche est un oiseau• L’oiseau sait voler• L’autruche ne sait pas voler

Où est le problème ?

Question ?

4. Pratique

• L’autruche est un oiseau• L’oiseau sait voler• L’autruche ne sait pas voler

L’autruche est un exemple d’héritage « sémantique » qui fonctionne

mal.

Solutions : surcharge de l’opération « se déplacer », modèles ci-

dessous,

mais qui ne sont pas non plus satisfaisants dans l’absolu

(mais cela dépend du contexte de la conception)

Réponse :

Oiseau

Pigeon Autruche

voler() courir()

marcher()

Oiseau

OiseauVolant OiseauNonVolant

AutruchePigeon

4. Pratique

Représenter avec les concepts objet : • Un fichier : Un fichier est caractérisé par un nom, une taille• Un répertoire : Un répertoire porte un nom. Il peut contenir des répertoires

ou des fichiers

Question ?

4. Pratique

Représenter avec les concepts objet : • Un fichier : Un fichier est caractérisé par un nom, une taille• Un répertoire : Un répertoire porte un nom. Il peut contenir des répertoires

ou des fichiers

Réponse

La création d’une classe « Entité », permet

• de généraliser l’attribut « nom »

• de représenter la récursivité (un répertoire peut contenir des

fichiers et des répertoires)

4. Pratique

Le secrétaire de mairie veut informatiser la gestion de l’état civil : enregistrement des actes de naissance, de mariage, de décès.

• Pour une naissance, on enregistre les nom, prénom, date naissance, lieu de naissance de l’individu.

• Pour un mariage : date de mariage, nom du conjoint et lieu de mariage, éventuellement date décès.

• Pour un décès, date et lieu décès.• Lors de la publication du journal annuel de la commune, le secrétaire veut pouvoir

éditer la liste des individus, triés par nom, nés dans l’année écoulée.

Construire le diagramme de classes ?

Question ?

4. Pratique

Le secrétaire de mairie veut informatiser la gestion de l’état civil : enregistrement des actes de naissance, de mariage, de décès.

• Pour une naissance, on enregistre les nom, prénom, date naissance, lieu de naissance de l’individu.

• Pour un mariage : date de mariage, nom du conjoint et lieu de mariage, éventuellement date décès.

• Pour un décès, date et lieu décès.• Lors de la publication du journal annuel de la commune, le secrétaire veut pouvoir

éditer la liste des individus, triés par nom, nés dans l’année écoulée.

Réponse

Plan

1. Conception : C’est quoi et … Pourquoi ?

4. Pratique : OO et UML, c’est quoi dans la pratique ?

5. Avenir : OO, c’est quoi dans l’avenir ?

2. Orienté Objet : Qu’est ce que c’est ? … Pourquoi ?

3. UML : Qu’est ce que c’est ? … Comment ?

Avenir : Orienté Agent

A

C

B B

• Tâche 1: Prendre objet A

• Tâche 2: Disposer objet C sur A

•Tâche 3: Disposer les objets B sur A

Agent : Objet évolué : intelligent (évolue dans le temps et s’adapte) et actif qui manipule les objets passifs et communique avec ses semblables

Objet passif : manipulable par les agents

Rôle A : Client

Rôle B : Fournisseur de

produit final

Rôle C : Négociateur de

contrat

Rôle D : Producteur de

matière première

Entreprise qui négocie des contrats pour

acheter de la matière première

Avenir : Orienté Agent

Avenir : Orienté Agent

Interaction

Rôle

Clientfournisseur

Producteur

Agent-Acteur

Rôle Client Rôle Fournisseur Rôle Producteur

Rôle Client

Acheter()

Passer_Commande()

Calculer_coût_Achat()

Rôle Producteur

Fabriquer()

Calculer_Coût_Production()

Rôle Fournisseur

Vendre()

Recevoir_Commande()

Livrer()

Calculer_coût_Vente()

Avenir : AUML

UML AUML

Merci …