Les bibliothèques d objets



Documents pareils
RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Programmation Par Objets

Une introduction à Java

Chapitre V. Les classes : Object, Vector, etc.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

as Architecture des Systèmes d Information

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Chapitre 10. Les interfaces Comparable et Comparator 1

TD/TP PAC - Programmation n 3

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

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

TP1 : Initiation à Java et Eclipse

TD/TP PAC - Programmation n 3

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

Introduction à la programmation concurrente

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

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

Généralités sur le Langage Java et éléments syntaxiques.

Programmer en JAVA. par Tama


OpenPaaS Le réseau social d'entreprise

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

EXTENSION D UN OUTIL DE VISUALISATION DE TRACES

Cours d Algorithmique et de Langage C v 3.0

IRL : Simulation distribuée pour les systèmes embarqués

Bases Java - Eclipse / Netbeans

Projet gestion d'objets dupliqués

Introduction à l héritage en C++

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Composants génériques de calcul scientifique

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Package Java.util Classe générique

Java Licence Professionnelle CISII,

Cours 14 Les fichiers

La programmation orientée objet et le langage C++

Programmation par composants (1/3) Programmation par composants (2/3)

et Programmation Objet

Module.NET 3 Les Assemblys.NET

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Architecture Orientée Service, JSON et API REST

Java 1.5 : principales nouveautés

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Remote Method Invocation (RMI)

Introduction au langage C

Cours 1: Java et les objets

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

La technologie Java Card TM

Mise en œuvre des serveurs d application

Alfstore workflow framework Spécification technique

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

CHAPITRE V. Recherche et tri

Introduction au langage de programmation Java

Auto-évaluation Programmation en Java

INITIATION AU LANGAGE JAVA

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

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

Composants Logiciels. Le modèle de composant de CORBA. Plan

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

Traduction des Langages : Le Compilateur Micro Java

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Développement Logiciel

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

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

1.6- Génération de nombres aléatoires

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Conventions d écriture et outils de mise au point

Derrière toi Une machine virtuelle!

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Chapitre VI- La validation de la composition.

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

4 Exemples de problèmes MapReduce incrémentaux

Optimisations des SGBDR. Étude de cas : MySQL

4. Groupement d objets

Structure fonctionnelle d un SGBD

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Utilisation d objets : String et ArrayList

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Notions fondamentales du langage C# Version 1.0

Cours Bases de données

Comment booster vos applications SAP Hana avec SQLSCRIPT

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Construire des plug-ins pour SAS Management Console SAS 9.1

Remote Method Invocation Les classes implémentant Serializable

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

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)

Programmation Objet I

Langage Java. Classe de première SI

Introduction aux Bases de Données Relationnelles Conclusion - 1

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Manuel d'installation

Programmation MacOSX / ios

Le langage C. Séance n 4

Transcription:

Les bibliothèques d objets Implantations d objets réutilisables : les approches Les bibliothèques d objets généraux C++ La STL : standard template library L OCL : Open Class Library QT : Bibliothèque utilisé avec KDE Java Bibliothèque du langage très riche C# Bibliothèque de la CLI/CLR très riche reprenant le modèle de la CLR (ie. Aussi disponible pour d autres langages basés sur la CLR comme C++/CLI, Python.NET, Perl for NET ) 1

Les bibliothèques d objets spécialisés Graphiques wxwindow, MFC, QT, GTK+ Spécialisées XML-XSLT Parser Xalan, Xercès Boost::Spirit Multi-plateforme wxwindow, GTK+, Multi-langage TK (perl/tk, C++/TK, TCL/TK).net CLR/CLI Grandes variétés de bibliothèques Exemple C++ http://www.trumphurst.com/cpplibs1.html liste un ensemble de bibliothèques pour C++ www.boost.org : organisme de certification de bibliothèques pour C++ 2

Le problème des bibliothèques d objets Une bibliothèque Une conception des classes et objets Une implantation spécifique de nombreuses notions Un choix d algorithmes Difficultés La conception des classes et objets peut impacter l utilisation L implantation spécifique empêche le déploiement sur plusieurs architectures Le choix des algorithmes impacte sur les performances Les objets d une bibliothèque ne sont pas facilement réutilisables avec une autre bibliothèque Les «bonnes et mauvaises nouvelles» Les «bonnes nouvelles» On retrouve les mêmes notions dans les bibliothèques Il existe deux architectures de bibliothèques en général Les «mauvaises nouvelles» Les interfaces des objets sont rarement compatibles d une bibliothèque à l autre Rarement une bibliothèque offre tous les objets souhaités Le choix de la bibliothèque est souvent dicté par la plateforme ou l outil d implantation 3

Les tentatives pour uniformiser les bibliothèques Normaliser la bibliothèque dans le langage C++ : la STL est la bibliothèque standard de C++.net : CLR/CLI est la bibliothèque standard normalisé Forcer les développeur à respecter un style d implantation Java : obligation d implanter des composants respectant des interfaces ad hoc, contrainte naissant du langage et des bibliothèques fournies C++ : organisme de «certification ad hoc» des bibliothèques comme boost (extension de la STL) Les conséquences en pratique C++ STL se veut un standard Énormément de bibliothèque non compatible avec la STL (Xerces, Qt, ) raison : C++ ne peut-être réduit à un style de programmation Java.net Tous les packages sont interopérables et reposent sur une hiérarchie d objets Reproduction de la situation de C++ raison : plusieurs langages dont C++ plusieurs styles de composants 4

Les deux architectures de bibliothèques L approche hiérarchique (Java,.net, Xercès) Toute classe dérive d une classe de base Tout algorithme générique manipule des objets de la classe de base L approche générique (STL, ATL, boost,.net) Des classes atomiques Des classes stockant des objets atomiques Des algorithmes manipulant des ensembles d objets atomiques Les approches mixtes (QT, Standard) Des classes atomiques Des classes dérivant impérativement d une classe de base (élément UI, persistance, sérialisation) Certains algorithmes génériques manipulent des ensembles d objets atomiques D autres algorithmes génériques manipulent des objets de la classe de base L architecture hiérarchique La définition d une classe de base: Java : Object QT (C++) : QObject protected Object clone() boolean equals(object obj) void finalize() Class getclass() int hashcode() void notify () void notifyall() String tostring() void wait() QObject ( QObject * ) virtual ~QObject () virtual bool event ( QEvent * ) virtual bool eventfilter ( Q Object *, QEvent * ) virtual const char* classna me () const bool isa ( const char * ) con st bool inherits ( const char * ) const const char* name () const 5

Les objets atomiques Objets atomiques : «objet stockant un ensemble unique d information» Ils doivent dériver de l objet unique En Java : Dérivation systématique de l élément de base Integer dérive de Object String dérive de Object KeyPair dérive de Object AbstractCollection dérive de Object Sous QT Dérivation par catégorie d éléments Tous les éléments d UI dérivent de QObjet (QEvent, QBrush, ) Toutes les collections dérivent d un objet QCollection Les ensembles d objets Deux approches Ensemble ne supportant que des objets d un type (homogène) Ensemble supportant des objets de type différents (hétérogènes) Deux implantations L ensemble d objets ne stocke pas les objets, ils pointent sur les objets L ensemble d objets stocke les objets, il alloue les objets 6

La pratique dans les hiérarchies Approche Java/.net 1 Les collections sont hétérogènes (les valeurs dérivent toutes de Object) Les éléments ne sont pas stockés dans l objet AbstractCollection Les défauts sont à modérer depuis les génériques en Java/.net 2.0 Avantage de l approche Un seul code pour tous les types (compacité du programme) Inconvénient Pas de garantie sur les types des données dans la collection Partage des données entre l ensemble et l extérieur Force à faire du transtypage Result = (montype) macollection.get(index); Les algorithmes Pas de séparation entre les algorithmes et les structures de données Les classes implantant les structures de données fournissent les algorithmes qui manipulent les données Arrays fournit «fill» pour remplir le tableau HashSet fournit «contains» pour tester si un élément est dans la table de Hash 7

L architecture générique Architecture introduite avec C++ Utilise les modèles (abuse des modèles?) Orientée «performance» Orientée «sûreté» Orientée «réutilisation maximale du code» Les objets atomiques Aucune contrainte sur un objet atomique «a priori» Quid des contrats Un algorithme peut imposer un contrat pour accepter de manipuler un objet atomique Une structure de données/ensemble de données peut imposer un contrat pour manipuler un objet atomique 8

Les ensembles de données (conteneur) Un ensemble de données Est homogène : tous les éléments ont le même type Stocke les objets en son sein : Ajouter un objet à un conteneur 1. crée une zone pour stocker l objet 2. copie l objet dans cette zone Un conteneur Peut stocker une seule donnée std::auto_ptr (stocke un pointeur sur une donnée) Peut stocker plusieur données std::pair std::vector Les conteneurs (suite) Avantages Le type des données est connu (Pas besoin de transtyper) std::vector<int> tableau int i = tableau[4]; Les données sont copiées dans le conteneur, Elles sont protégées Elles sont détruites à la fin Inconvénients Les données sont copiées dans le conteneur, Parfois nécessaire de partager des données Incompatible avec des données hétérogènes Le code est dupliqué pour chaque type de données Ne supporte pas les ensembles de types hétérogènes 9

Les algorithmes Si l algorithme est propre à une structure de données Il est implanté dans la structure de données Si l algorithme peut fonctionner pour plusieurs structures de données Il est implanté en dehors de la structure de données Les itérateurs Problème Manipuler des éléments dans des structures de données sans connaître la structure Solution Un itérateur : ie. un pointeur intelligent sur un élément stocké dans une structure de données La structure de données doit Retourner un itérateur pointant sur le premier élément Retourner un itérateur pointant sur l élément situé après le dernier élément L itérateur doit Permettre d accéder à la donnée D aller à la donnée suivante Eventuellement revenir à la donnée précédente Pouvoir tester s il pointe sur la même donnée qu un autre itérateur 10

Mise en œuvre #include <vector> #include <algorithm> using namespace std; vector<int> vec; vec.push_back (10); vec.push_back (3); vec.push_back (7); vector<int>::iterator mx = max_element(vec.begin()+1, vec.end()); cout << mx << endl; // Affiche 7 sort(vec.begin(), vec.end()); // Le vecteur contient 3, 7, 10 Les itérateurs Un algorithme peut avoir besoin d un accès plus ou moins performant Contrat d itérateur plus ou moins contraignant Une structure de données doit elle aussi respecter un contrat (contrat associé à la notion de conteneur) Exemple std::sort(iterator itbegin, iterator iend) : a besoin d un accès aléatoire à chacun des éléments stockés dans une structure de données std::max_element(iterator itbegin, iterator iend) : peut se contenter d un accès séquentiel aux éléments stockés dans une structure de données 11

Respect des règles pour les nouveaux objets Éléments atomiques Doivent respecter les éventuels contrats pour une utilisation particulière Structures de données Assimilable à un conteneur : doit fournir les méthodes demandées par un conteneur Sinon même contrainte que pour un élément atomique Algorithmes Applicables sur plusieurs structures de données assimilables à des conteneurs fonctions manipulant des itérateurs Sinon, implantées avec l objet ou la classe les utilisant Conclusion Les bibliothèques d objets Grande richesse de code réutilisable Impacte sur le modèle objet de l application Rarement inter-opérables (implique souvent des adaptations des objets) Environnement Java/.net Bibliothèques de composants hiérarchiques Relativement simple à mettre en œuvre Impact négatif sur les performances et sur la sûreté de fonctionnement Langage C++/ Environnement.net Bibliothèques de composants hiérarchiques ou génériques Plus lourd à mettre en œuvre (plus de notions) Gain performance/sûreté 12

Et pour aller plus loin http://java.sun.com/javase/6/docs/api/ la documentation de la bibliothèque pour java http://java.sun.com/docs/books/tutorial/index.html les tutoriaux de java http://www.boost.org/ les bibliothèques labellisées boost pour C++ http://ens.lal.in2p3.fr/mg/stl.html Une introduction à la STL Plus les liens sur la page de cours, notamment le cours C++ de Christian Casteyde http://www.greyc.ensicaen.fr/ensicaen/cpp/book1.html 13