1
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…)
2
Les bibliothèques d’objets
spécialisés
Graphiques
wxWindow, MFC,
QT, GTK+
Spécialisées
XML-XSLT
Xalan, Xercès
Parser
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++
3
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
4
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
Tous les packages sont
interopérables et
reposent sur une
hiérarchie d’objets
.net
Reproduction de la
situation de C++
raison :
plusieurs langages
dont C++
plusieurs styles de
composants
5
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
Java : Object
protected Object clone()
boolean equals(Object obj)
void finalize()
Class getClass()
int hashCode()
void notify ()
void notifyAll()
String toString()
void wait() …
QT (C++) : QObject
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
La définition d’une classe de base:
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !