Proposition pour un modèle à grains extrêmement fins David Fauthoux directeur : Jean-Paul Bahsoun IRIT.

Slides:



Advertisements
Présentations similaires
Introduction Rétro ingénierie d’interfaces graphiques
Advertisements

La programmation orientée objet avec Java L3-MIAGE Plan
Spécialisation/généralisation Héritage Polymorphisme
Appels de fonctions natives sous C#
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Chapitre III Héritage (début)
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Langage Oriente Objet Cours 4.
COURS DE PROGRAMMATION ORIENTEE OBJET :
IFT1025, Programmation 2 Jian-Yun Nie
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
POO : Objets et classes (Rappels)
Interfaces : comment classifier ?
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Projet de diplôme 2011 Miserez David
Introduction au paradigme orienté-objet (suite)
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI1502 Principes fondamentaux en conception des logiciels
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Patrons de conceptions de créations
Structures de données IFT-2000
Héritage et composition
Conception et développement d ’une interface entre un environnement de réalité virtuelle et un périphérique d ’interaction.
Objectifs À la fin de ce cours, vous serez capables de :
4 Introduction des objets. Les chaînes et tableaux
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
La Modélisation Orientée Objet Concevoir un programme : modélisation du problème à résoudre Notion de programme : machine de Turing Pouvoir d’expression.
Programmation objet. Les classes Une classe représente un concept Une classe est :  un module : elle regroupe la déclaration de données et les opérations.
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
Introduction au Génie Logiciel
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Règles de passage iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21.
Un visiteur… …venu d’ailleurs
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Transcription de la présentation:

Proposition pour un modèle à grains extrêmement fins David Fauthoux directeur : Jean-Paul Bahsoun IRIT

Problématique Programme Plate-forme Système de gestion des composants ??

Compétences pour la réutilisabilité 1.Extensibilité : les composants doivent être écrits en vue d’être adaptés, étendus. 2.Composition : les composants doivent être écrits en vue d’être composés.

1. Extensibilité adaptation aisée (pas de protocoles de programmation ni d'excès de rigueur de la part du programmeur) adaptation riche (laisser un maximum de liberté au programmeur pour adapter le composant) adaptation sûre (interdire au programmeur le plus tôt possible, si possible à la compilation, les utilisations faussées des composants) maintenance ciblée (la correction ou l'amélioration d'un composant ne doit pas influencer les autres composants, ni ne doit conduire à la modification forcée d'autres composants)

2. Composition composition sûre (interdire au programmeur de composer des composants qui ne sont pas écrits pour) composition maximale (permettre au programmeur de combiner tous composants ne l'interdisant pas) composition tardive (partitionner au maximum les composants de la plate-forme, pour laisser le programmeur libre de composer seulement les propriétés voulues, et toutes les propriétés voulues, au moment voulu)

Le point de vue Mixin Exemple : mixin Undo { inherited String getText(); inherited void setText(String s); String lastText; void setText(String s) { lastText = getText(); super.setText(s); } void undo() { setText(lastText); } } Classe qui peut se brancher sur une classe-mère dont la spécification correspond. ►Branchement sur une classe seulement si elle répond à la spécification, ►Branchement sur toute classe qui répond à la spécification, ►Référence à une classe-mère concrète à l’instanciation seulement

Le problème des objets lourds Adaptation : il faut connaître toutes les propriétés du composant (interaction entre elles, comportements, lois implicites…). Référencement : on n’exprime pas l’accès partiel au composant. Utilisation : on ne peut pas choisir de n’utiliser qu’une propriété spécifique du composant. ►Une seule propriété par classe. ►Ajouter une propriété ≠ ajouter une méthode.

Un concept clé : l’interface Point de vue simple : ensemble nommé de signatures de méthodes Caractéristique technique : séparer l’implémentation de la déclaration interface implémentation des méthodes de l’interface interaction avec le reste du programme

Aspects de l’interface Généricité Sûreté de composition Bouclier 2 3 1

Classe-lentille Une propriété ► une « interface légère ». Des raffinements ► des classes qui implémentent la propriété de façon spécifique. Ecrire une spécialisation de la propriété à son programme ► agréger les micro-composants. interface-mère C1 classes implémentant l’interface (raffinements) : C1 … composition adaptation

Exemple Drawer draw RotateDrawerAlphaDrawerImageDrawer maison penchée maison semi-transparente ScaleDrawer

L’exemple en Java public interface Drawer { public void draw(Graphics g); } public class ImageDrawer implements Drawer { public ImageDrawer() { } public void draw(Graphics g) { // dessine une maison sur g } public class RotateDrawer implements Drawer { private Drawer wrappee; public RotateDrawer(Drawer wrappee) { this.wrappee = wrappee; } public void draw(Graphics g) { // applique une rotation de 45° sur g wrappee.draw(g); } Drawer o = new ImageDrawer() Drawer r = new RotateDrawer(o); Drawer a = new AlphaDrawer(r);

Patron d’écriture public interface Drawer { public void draw(Graphics g); } public class RotateDrawer implements Drawer { private Drawer wrappee; public RotateDrawer(Drawer wrappee) { this.wrappee = wrappee; } public void draw(Graphics g) { // algorithme à appliquer // et appel du wrappee : wrappee.draw(g); } nom de l’interface-mère méthode déclarant la propriété nom du raffinement

Schéma branchement en out : interface implémenté par la lentille, ce qu’elle rend publique. branchement en in : sur quel type de lentille celle-ci doit être branchée. nom outin code (interne, caché)

Schéma de l’exemple RotateDrawer Drawer RotateDrawerAlphaDrawer ImageDrawer

Le terme « lentille »

Vers les arbres MultiDrawer Drawer MultiDrawer AlphaDrawer ImageDrawer (nuage) ImageDrawer (maison)

MultiDrawer RotateDrawer ImageDrawer (maison) ImageDrawer (nuage) Vers les arbres MultiDrawer Drawer

Conclusion propriété globale = sémantique globale raffinements = raffinements sémantiques agrégation ►structure ►fonction