Java M2 TTT Valérie Gautard

Documents pareils
Présentation du PL/SQL

Cours 1 : La compilation

Évaluation et implémentation des langages

Projet Active Object

Conventions d écriture et outils de mise au point

BES WEBDEVELOPER ACTIVITÉ RÔLE

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

Chapitre I Notions de base et outils de travail

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

CH.3 SYSTÈMES D'EXPLOITATION

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Processus d Informatisation

Chapitre 1 : Introduction aux bases de données

Chapitre VI- La validation de la composition.

Entraînement au concours ACM-ICPC

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

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

Bases de données Cours 1 : Généralités sur les bases de données

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Analyse,, Conception des Systèmes Informatiques

UML et les Bases de Données

Cours de Programmation 2

Cours 1: Java et les objets

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Gé nié Logiciél Livré Blanc

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

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

Administration de systèmes

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

IFT2255 : Génie logiciel

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)

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

STAGE IREM 0- Premiers pas en Python

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

GOL502 Industries de services

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

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

Vérifier la qualité de vos applications logicielle de manière continue

Brique BDL Gestion de Projet Logiciel

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Initiation à l algorithmique

Panorama des solutions analytiques existantes

1 Lecture de fichiers

Architectures web/bases de données

Comment gérer toutes mes tâches logicielles d automatisation dans un seul environnement?

Cours Informatique Master STEP

Architecture d'entreprise : Guide Pratique de l'architecture Logique

PROJET ALGORITHMIQUE ET PROGRAMMATION II

L AUTOMATISME LE SIGNAL

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

Ne laissez pas le stockage cloud pénaliser votre retour sur investissement

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

ITIL V3. Objectifs et principes-clés de la conception des services

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr


Annexe : La Programmation Informatique

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

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

as Architecture des Systèmes d Information

Introduction aux concepts d ez Publish

Université de Bangui. Modélisons en UML

Devenez un véritable développeur web en 3 mois!

Programmation Orientée Objet

En date du 11 décembre 2008

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Formula Negator, Outil de négation de formule.

Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia

Éléments de programmation et introduction à Java

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

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

La reconquête de vos marges de manœuvre

Architecture des Systèmes d Information Architecture des Systèmes d Information

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

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

OMGL6 Dossier de Spécifications

Analyse structurée de solutions pour BMC Remedy IT Service Management v 7

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

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Introduction à NetCDF

PEPI GPI (Gestion de Projet Informatique) - Note de Cadrage décembre

WHITE PAPER Une revue de solution par Talend & Infosense

Machines virtuelles Cours 1 : Introduction

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Comment se servir de cet ouvrage? Chaque chapitre présente une étape de la méthodologie

TP1 : Initiation à Java et Eclipse

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Plan Pédagogique du cours

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

La directive INSPIRE en Wallonie: le géoportail et l infrastructure de diffusion des géodonnées en Région wallonne (InfraSIG(

1 Introduction à l infrastructure Active Directory et réseau

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

Plateforme STAR CLM. Gestion intégrée des réseaux multilingues d entreprise

Transcription:

Java M2 TTT Valérie Gautard

1. De la programmation séquentielle à la programmation orientée objet Chacun veut que ses programmes soient rapides, fiables, ergonomiques, lisibles Comment faire? La POO tente d apporter une réponse à cette question. Definissons les facteurs de qualité logicielle 1.1. La qualité logicielle 1.1.1. Facteurs internes et facteurs externes On distingue principalement deux catégories de qualités : Les facteurs externes de la qualité : ce sont les qualités dont la présence ou l absence dans un logiciel peuvent être détectées par les utilisateurs du produit. Exemple : facilité d emploi, robustesse Les facteurs internes de qualité : Ce sont les qualités perceptibles seulement par des informaticiens Seuls comptent les facteurs externes mais les facteurs internes sont déterminants pour l obtention des facteurs externes. 1.1.2. Quelques définitions des facteurs externe de qualité La validité Cette notion est souvent difficile a atteindre, notamment parce que les spécifications sont difficiles à formaliser rigoureusement. La robustesse Java Valerie Gautard 2

Robustesse Spécification, Validité Extensibilité Pour améliorer l extensibilité, deux principes sont essentiels : Simplicité de conception Décentralisation : plus les modules d une architecture sont autonomes, plus il est probable qu une modification simple n affecte qu un seul module ou un nombre restreint de modules La réutilisabilité La réutilisabilité est l aptitude d un logiciel à être réutilisé en tout ou partie pour de nouvelles applications. La compatibilité Exemple : Variété de formats de fichiers incompatibles dans de nombreux OS -> Un programme ne peut utiliser les résultats d un autre programme que si les formats de fichiers sont compatibles Autres qualités Java Valérie Gautard 3

Les qualités abordées jusqu à présent sont celles qui bénéficient le plus de la POO mais il existe toutefois d autres aspects. L intégrité : C est l aptitude des logiciels à protéger leurs différentes composantes (prog, données, doc ) contre des accès ou des modifications non autorisées La facilité d utilisation 1.2. La modularité Pour tenter de satisfaire les qualités que l on vient de citer, un mot vient à l esprit : la production de logiciel modulaire (notamment pour l extensibilité, la réutilisabilité et la compatibilité) 1.2.1. Cinq critères 1.2.1.1. La décomposabilité Java Valerie Gautard 4

Cette méthode doit aider à réduire la complexité d un problème. Exemple : la conception descendante Cette méthode consiste à commencer par une description abstraite du système et à l affiner ensuite. Chaque sous-système est décomposé en système plus simple. 1.2.1.2. La composabilité modulaire On utilise des éléments existants pour construire de nouveaux systèmes. On transforme ainsi le processus de conception du logiciel en un jeux de construction où les programmes seraient construits à partir d éléments standards existants. Exemple : les bibliothèques de sous-programme le langage de commande Unix avec Java Valérie Gautard 5

1.2.1.3. La compréhensibilité modulaire Ce critère est important notamment pour la maintenance Contre-exemple : la dépendance séquentielle : Si un ensemble de modules a été conçu de façon à ne fonctionner correctement que si ces modules s exécutent dans un certain ordre alors ceux-ci seront difficiles à comprendre individuellement. 1.2.1.4. La continuité modulaire Une méthode de conception répond au critere de continuité modulaire si une patite modification de la specification du probleme amene à modifier que tres peu de modules d un système pr 1.2.1.5. La protection modulaire Exemple une méthode qui impose que chaque module qui lit des données est responsable de la vérification de leur validité répond au critère de protection modulaire. 1.2.2. Cinq principes Nous allons à présent exposer 5 principes devant être respectés pour obtenir une «bonne» modularité 1.2.2.1. Unité modulaire linguistique Les modules doivent correspondre à des unités syntaxiques du langage Exemple : langage de programmation, langage de conception, de spécification Ce principe est une conséquence des critères : décomposable : pour diviser le développement d un système en tache séparées, chacune des taches doit correspondre à une unité syntaxique claire. composabilité : comment combiner autre chose que des unités closes? protection : On peut contrôler l étendue des erreurs que si les modules sont délimités syntaxiquement Java Valerie Gautard 6

Ce principe impose de choisir un langage approprié au type de programmation mise en œuvre. POO : java, C++ 1.2.2.2. Peu d interface Ce principe résulte des critères de : continuité protection : s il y a trop de relation entre les modules alors tout changement ou toute erreur peut se propager composabilité : pour qu un module soit utilisable dans un nouvel environnement, il ne doit pas dépendre d un trop grand nombre de module 1.2.2.3. Petite interface (couplage faible) Principe : Ce principe résulte des critères de continuité et de protection Contre-exemple : COMMON en fortran ou chaque unité a accès à toutes les données => toutes les unités sont couplées de façon étroites! 1.2.2.4. Interface explicite Ces méthodes exigent que les modules se parlent peu, que leur conversation soit limitée à peu de mots mais elles imposent à présent que les conversations soient publiques! Chaque fois que deux modules A et B communiquent, cela doit ressortir clairement du texte de A, de B 1.2.2.5. Masquage de l information Principe : Java Valérie Gautard 7

Critère de continuité : si un module change d une façon qui affecte ses éléments privés mais non son interface publique alors les autres modules ne seront pas affectés Ce principe est également lié aux exigences de décomposabilité, de composabilité et de compréhensibilité pour développer séparément les modules d un système d un système, pour combiner différents modules existant, pour comprendre des modules individuels. Il est indispensable de connaitre parfaitement ce que chacun peut ou ne peut pas attendre des autres. 1.3. La route vers les objets 1.3.1. Objectif réutilisabilité La répétition en programmation La programmation est une activité très répétitive. Exemple : tri, recherche, lecture, écriture dans BDD, fichiers etc Pourquoi cette répétition : Les approches basiques de la réutilisabilité : réutilisation des codes sources : UNIX, Windows et plus généralement des environnements réutilisation du personnel réutilisation des conceptions : ouvrage de génie logiciel 5 conditions Variations des types : écrire du code applicable à différentes natures de type Variations des structures de données et d algorithme : généralisation de la condition précédente Regrouper les opérations ayant des points communs Exemple : regrouper les procédures de création, d insertion Java Valerie Gautard 8

1.3.2. Les différents styles de programmation Style applicatif (programmation séquentielle) Style de programmation fondé sur l évaluation d expressions ou le résultat ne depend que de la valeur des arguments Donne des programmes courts, faciles à comprendre usage intensif de la recursivite Style impératif Fondé sur l exécution d instructions modifiant l état de la mémoire. Utilisation de structure de contrôle et de structure de données Routines Exemple : les procédures, les fonctions La décomposition de systèmes logiciels en routines est obtenue par la méthode de décomposition fonctionnelle descendante Mais : chaque problème doit être spécifiable de façon simple ie définissable par un petit ensemble de paramètres. les problèmes individuels doivent être clairement distincts les uns des autres. Cette approche ne permet pas d exploiter les points communs qui peuvent exister Aucune structure de données ne doit être complexe. 1.3.3. Objets/fonctions Un ensemble logiciel est un ensemble de mécanisme permettant d effectuer certaines actions sur certaines données. Question : Doit-on structurer un logiciel autour des données ou des fonctions? Java Valérie Gautard 9

Une méthode de conception satisfait au principe de continuité si elle conduit à des architectures qui n ont pas besoin de fortes modifications pour tout changement mineur des spécifications. Prenons l exemple d un logiciel de gestion de paie. Utilisé initialement pour produire des bulletins de paie en fonction de la présence, il est ensuite utilisé pour produire des statistiques, des informations fiscales etc En fait les données changent peu mais les fonctions évoluent Conclusion : Lorsqu un système évolue, ses taches peuvent changer radicalement mais les données que le système manipule varient moins Utilisation des données L intérêt d une architecture basée sur les objets provient : La compatibilité : il est difficile de combiner des actions sans prendre en compte les structures de données concernées La réutilisabilité : il est difficile de construire des composants réutilisables s ils matérialisent des actions seules et s ils ignorent les données La continuité : au cours du temps, les structures de données restent l élément le plus stable du système. CCl : POO 1.3.4. La conception par objets Une première définition Slogan de la conception objet : Ne commencez pas par demander ce que fait le système mais demandez ce sur quoi il le fait! Description des objets Classe : On appelle classe un ensemble de structure de données ayant des propriétés communes Java Valerie Gautard 10

Type abstrait Les fonctions énumèrent les services disponibles sur les occurrences du type. Il existe plusieurs catégories de fonctions : fonction constructeur, destructeur fonction transformateur fonction de consultation Une définition précise La conception par objets est la construction de systèmes logiciels prenant la forme de collections structurées d implémentation et de types de données abstraites. Surcharge et généricité On appelle surcharge la possibilité d attacher plusieurs significations à un même nom qui apparait dans un programme exemple : operateur + pour des entiers, réels, vecteurs Un module n est pas directement utilisable, c est plutôt un canevas de module Le plus souvent les paramètres, appelés paramètres génériques, représentent des types. Les modules réels, appelé occurrences du module générique sont obtenus en fournissant les types effectifs (paramètres génériques effectifs) qui correspondent à chacun des paramètres formels La surcharge et la généricité offrent deux possibilités symétriques : la surcharge permet d écrire le même code en utilisant plusieurs implémentations différentes d une structure de données la généricité permet d écrire le même code pour toutes les occurrences de la même implémentation d une structure de données qui s applique à différents types d objets La généricité résout le problème : variations des types variations dans les structures de données ou d algorithme permet de réaliser une opération sans connaitre son implémentation Java Valérie Gautard 11

Paquetages Avantage : un paquetage peut rassembler des éléments ayant une signification communes mais de nature informatique très différente : types, variable, routines Mais on a besoin d autres techniques : pour libérer les utilisateurs du choix des représentations pour exploiter les points communs à l intérieur des groupes d implémentation 1.3.5. 7 pas vers les objets Niveau 1 (structure modulaire fondée sur les objets) Les systèmes sont découpés en modules sur la base de leur structure de données Niveau2 abstraction des données Les objets doivent être décrits comme des implémentations de type de données abstraites Niveau 3 : Gestion automatique de la mémoire Les objets inutilisés doivent être desalloués par le système sous-jacent, sans intervention du programmeur Niveau 4 : classes Tout type est un module et tout module est un type Niveau5 : héritage Une classe peut être définie comme une extension ou une restriction d une autre classe Niveau 6 : polymorphisme Une entité de programme doit pouvoir faire référence à des objets de plusieurs classes et une opération doit pouvoir avoir des versions différentes dans des classes différentes Niveau 7 : héritage multiple Java Valerie Gautard 12