Chapitre 1 : Fondements de la POO

Documents pareils
Génie Logiciel avec Ada. 4 février 2013

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Théorie des Langages

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Programmation Orientée Objet

Cours 1 : La compilation

Objets et Programmation. origine des langages orientés-objet

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Évaluation et implémentation des langages

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Présentation du PL/SQL

OCL - Object Constraint Language

Définitions. Numéro à préciser. (Durée : )

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours 1 : Qu est-ce que la programmation?

TP1 : Initiation à Java et Eclipse

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Méthodes d évolution de modèle produit dans les systèmes du type PLM

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Projet Active Object

Indications pour une progression au CM1 et au CM2

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Information utiles. webpage : Google+ : digiusto/

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

BES WEBDEVELOPER ACTIVITÉ RÔLE

Cours Composant 2. Qualité logicielle et spécications algébriques

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

LES REPRESENTATIONS DES NOMBRES

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Vérification formelle de la plate-forme Java Card

Cours de Programmation 2

Traduction des Langages : Le Compilateur Micro Java

Licence Sciences et Technologies Examen janvier 2010

UE Programmation Impérative Licence 2ème Année

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Formula Negator, Outil de négation de formule.

Maple: premiers calculs et premières applications

UML (Diagramme de classes) Unified Modeling Language

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Le langage C. Séance n 4

Sécurité. Objectifs Gestion de PKI Signature Cryptage Web Service Security

Générer du code à partir d une description de haut niveau

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Exercices INF5171 : série #3 (Automne 2012)

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

Structuration des décisions de jurisprudence basée sur une ontologie juridique en langue arabe

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Chapitre 1 : Introduction aux bases de données

Initiation à l algorithmique

Initiation à la Programmation en Logique avec SISCtus Prolog

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Exercices sur les interfaces

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Héritage presque multiple en Java (1/2)

C f tracée ci- contre est la représentation graphique d une

Programmation MacOSX / ios

STAGE IREM 0- Premiers pas en Python

Rappels sur les suites - Algorithme

Description des structures de donnees

Cours 1: Java et les objets

Cours de Génie Logiciel

Chapitre VI- La validation de la composition.

Chapitre 5 : Les procédures stockées PL/SQL

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Cours d initiation à la programmation en C++ Johann Cuenin

Algorithmique des Systèmes Répartis Protocoles de Communications

(Third-Man Attack) PASCAL BONHEUR PASCAL 4/07/2001. Introduction. 1 Domain Name Server. 2 Commandes DNS. 3 Hacking des serveurs DNS

Facture Mixte Collaboration Franco - Allemande Pourquoi? Comment? Cyrille Sautereau, Admarel Conseil, FNFE- MPE

Programmation C. Apprendre à développer des programmes simples dans le langage C

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Algorithmique et programmation : les bases (VBA) Corrigé

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Chapitre 2. Classes et objets

Bases de données. Chapitre 1. Introduction

Machines virtuelles Cours 1 : Introduction

Programmation C++ (débutant)/instructions for, while et do...while

Classes et Objets en Ocaml.

Groupe symétrique. Chapitre II. 1 Définitions et généralités

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

LES DÉTERMINANTS DE MATRICES

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Supervision des réseaux

UML. Diagrammes de classes (suite) Delphine Longuet.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Transcription:

Chapitre 1 : Fondements de la POO - Critères de qualité d un logiciel - Types Abstraits de Données (TAD) - Modularité - POO vs Programmation procédurale POO \ N.EL FADDOULI 2 Critères de qualité d un logiciel La correction : Un logiciel doit exécuter exactement les tâches définies par sa spécification et fournir exactement les résultats demandés. Robustesse: le logiciel est capable de bien fonctionner dans des conditions anormales. L extensibilité : Possibilité d intégrer facilement de nouvelles fonctionnalités suite aux changements de spécification. L efficience : Temps d exécution dexécution, taille mémoire, etc. La portabilité : Facilité d exploiter un même logiciel dans différentes implémentations. La réutilisabilité : La possibilité d utiliser certaines parties du logiciel pour résoudre un autre problème. POO \ N.EL FADDOULI 3 1

Types Abstraits de Données (TAD) Un TAD est un ensemble d opérations pour lesquelles on définit une syntaxe et une sémantique et sont applicables à un ensemble d objets. Exemples: Pile empiler(), dépiler(), sommet() Ensemble ajouter, supprimer, appartient Rectangle tracer(), périmètre(), surface(), zoomer(), Fenêtre Afficher(), cacher(), agrandir(), déplacer() Polynôme Evaluer, Dériver, Somme, Produit, On s intéresse au concept du type du point de vue logique et non pas à son implémentation (les structures de données utilisées) POO \ N.EL FADDOULI 4 Types Abstraits de Données (TAD) Formellement un TAD est défini par: 1) Sa spécification qui indique: Sa signature (son interface): sa syntaxe, les noms des types utilisés pour sa définition ainsi que les noms des opérations et les types de leurs arguments Un ensembles d axiomes définissant les propriétés des opérations. Cet ensemble doit être consistant (pas de contradiction) et complet (décrire toutes les propriétés du type abstrait). Ces axiomes indiquent les Pré-conditions (Ce qu'exige une opération) et les Post-conditions (ce qu'elle garantit) 2) Sa représentation elle décrit comment les objets du TAD sont implémenté (structure de donnée utilisées). POO \ N.EL FADDOULI 5 2

TAD: Spécification Exemple: Type Pile Utilise élément Opérations InitPile : -- Pile {crée une pile vide} PileVide: Pile -- booléen {détermine si la pile est vide } Sommet: Pile -- élément {donne le sommet de la pile} Fin Empiler : Pile x élément -- Pile {ajoute un élément à la pile} Dépiler : Pile -- Pile {élimine le sommet de la pile} POO \ N.EL FADDOULI 6 TAD: Spécification Exemple: (suite) Les axiomes: p: Pile e: élément PileVide(p)=Vrai Dépiler(P) : Erreur PileVide(p)=Vrai Sommet(P): Erreur Dépiler (Empiler (p, e)) = p Sommet (Empiler (p, e)) = e PileVide (InitPile ( )) = Vrai PileVide (Empiler (p, e)) = Faux POO \ N.EL FADDOULI 7 3

TAD: Spécification Il y a parfois une opération particulière appelé constructeur et qui spécifie comment créer un objet du type. Exemple: Constructeur du type Pile InitPile : -- Pile Les données d un objet d un TAD sont accédées au travers d opérations simples appelées fonctions d accès (getters et setters) permettant d'avoir la valeur d une donnée ou la modifier. POO \ N.EL FADDOULI 8 TAD: Représentation A ce stade on dois choisir les structures de données à utiliser et développer les algorithmes des opération du TAD. Exemple: Type Pile Représentation tableau t[max] entier s Opérations InitPile(p) { p.s= -1; } PileVide(p) { return p.s < 0; } PilePleine(p) { return p.s = (MAX-1); } Empiler (p, e) { p.s= p.s+1; p.t[p.s] = e; } Depiler(p) { p.s = p.s-1; } Sommet(p) { return p.t[p.s]; } Fin POO \ N.EL FADDOULI 9 4

TAD: Représentation On doit également traiter les exceptions dans les algorithmes des opérations en utilisant les pré-conditions déjà précisées dans les axiomes. Exemple: Empiler (p, e) { Si PilePleine(p) Ecrire_Erreur("Pile Plaine") Sinon p.s=p.s+1 p.t[p.s]=e FinSI } Exercices (1) Modifier les autres opérations pour traiter les cas d exceptions (2) Ecrire un algorithme qui détermine si un mot et palindrome POO \ N.EL FADDOULI 10 Fondements de la POO - Production de logiciels de qualité en respectant les contraintes de temps et de coûts Moyens techniques et organisationnels POO: Répondre aux besoins de réutilisation de maintenabilité - L Abstraction: Manipulation de données par des opérations spécifiques indépendamment des détails de leur implantation (structure interne). - La Modularité: Regroupement des procédures ou fonctions et des données manipulées en unités indépendantes -- réutilisation, encapsulation POO \ N.EL FADDOULI 11 5

Modularité Pour réduire la complexité d'un système, on le décompose en plusieurs sous-systèmes appelés modules. Ils doivent être indépendants et réutilisables. Un module a une interface bien spécifiée qui précise les fonctions et les procédures ainsi que les données à utiliser (services). Ces fonctions et procédures sont logiquement regroupées et partagent généralement les mêmes données spécifiées dans le même module (encapsulation) Laréussite de la décomposition dépendd du degré d indépendancedé d entre les modules (degré de couplage doit être faible). Un module peut être utilisé dans un autre système (réutilisable). La conception modulaire d un logiciel facilite sa mise au point et sa maintenance POO \ N.EL FADDOULI 12 Modularité Module Gestion_Biblio Tableau Livre; Fonction Initialier Fonction Initialier {... } Proc ASjouter (Livre L) {...} Proc Supprimer (Livre L) {...} Fonction chercher Id (ident id) Livre Fonction chercher_id (ident id) Livre {...} Fonction chercher_titre(chaine t) Livre {...} etc end POO \ N.EL FADDOULI 13 6

Programmation Procédurale (PP) Principe: Algorithmes + Structures de données = Programme Dans la PP, la conception d un programme est conduite par traitements: Elle consiste à décomposer le programme en fonctions (modules) simples. main() Données init() calcule() factorise() compare() trie() permute() Données POO \ N.EL FADDOULI 14 Programmation Orientée Objet (POO) Elle privilégie les données Quelles sont les objets (données) traités? Déterminer TADs (structure + opérations spécifiques) des objets utilisés. L implémentation de chaque TAD donne lieu à une classe. Dans le programme on manipule des instances d une classe Objets Un module est composé d un ensemble de classes. Données Données init() calcule() factorise() trie() compare() permute() POO \ N.EL FADDOULI 15 7

Programmation Orientée Objet (POO) OBJET = Données + Méthodes (Opérations). Un objet est une association de données et de fonctions (méthodes) qui agissent sur ces données. POO: Programmation dans laquelle un programme est organisé comme un ensemble d'objets coopérant ensemble par des échanges de messages entres eux (appels des services (fonctions) offerts par leurs classes) POO \ N.EL FADDOULI 16 8