Interface Definition LanguageConstruction Constructiond’applications d’applicationsr´eparties r´epartiesGilles Roussel Gilles RousselConstruction d’applications r´epartiesTypage fortIDL IDLValeurs (passage par valeur)Cours 2Types Typesprimitifs primitifs Types primitifsTypes utilisateursTypes Typesutilisateurs utilisateursTypes g´en´eriquesGilles RousselLes interfaces Les interfacesGilles.Roussel@univ-mlv.fr R´ef´erences d’objets (passage par r´ef´erence)Les types Les typesType interfacehttp://igm.univ-mlv.fr/~roussel/CORBA/enveloppes enveloppesMapping vers diff´erents langagesLe fichier Le fichierIR3L’h´eritage L’h´eritage Parfois incomplets6 octobre 2006Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´epartiesLes types primitifs Le type utilisateur « structure »Construction ConstructionConteneur de donn´eesd’applications d’applicationsr´eparties r´epartiesIDL JavaComparable aux structures du CGilles Roussel Gilles Rousselvoid voidstruct Point {boolean booleanIDL IDL short x;octet byteTypes Typesshort y;primitifs primitifschar (1 octet) et wchar (2 octets) char};Types Typesshort et unsigned short shortutilisateurs utilisateursTraduit en classe Javalong et unsigned long intLes interfaces Les interfacespublic final class Point implements IDLEntity {Les types Les typeslong long et unsigned long long longpublic short x;enveloppes enveloppesfloat floatpublic short y;Le ...
IDL void boolean octet char(1 octet) etwchar(2 octets) shortetunsigned short longetunsigned long long longetunsigned long long float double long double string wstring
Gilles Roussel
Java void boolean byte char short int long float double
String String
Constructiond’applicationsr´eparties
Construction d’applications re´parties
Gilles Roussel
IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Construction d’applications re´parties
Gilles Roussel
IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Interface Definition Language
Typage fort Valeurs (passage par valeur) Types primitifs Types utilisateurs Typesg´en´eriques Re´fe´rencesd’objets(passageparr´efe´rence) Type interface Mappinggvaeseidsrre´ffstnegnal Parfois incomplets
Gilles Roussel
Constructiond’applicationsre´parties
Le type utilisateur«structure»
Conteneurdedonn´ees Comparable aux structures du C structPoint{ short x; short y; }; Traduit en classe Java public final classPointimplements IDLEntity{ public short x; public short y; public Point () { } public Point (short x, short y){ this.x= x;this.y= y; } } GillesRousselConstructiond’applicationsr´eparties
Construction d’applications r´eparties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Construction d’applications r´eparties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
ImplantentIDLEntityiuqeitedh´erSerializable Arguments/valeursderetourrecopi´eesentreclientet serveur Deuxautresclassesg´ene´re´esparidlj: TypeHelperpour le transtypage TypeHoldertype enveloppe
Gilles Roussel
Constructiond’applicationsr´eparties
Construction d’applications re´parties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Construction d’applications r´eparties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Les autres types utilisateurs
Les alias :typedef float Nombrepas de traduction Lese´nume´rations:enum Ops{Plus, Moins}traduites en constantes dans la classeOpsitresapdrseneindex´ee Les unions : union Test switch(Ops) { case Plus: long l; default: short s; } traduites en une unique classe
Gilles Roussel
Lestypesr´efe´rences
Constructiond’applicationsr´eparties
Correspond aux interfaces qui peuvent contenir : des attributs desd´eclarationsdeme´thodes toutesorteded´eclarationdetype(struct,enum, ...) des constantes Exemple : interface Robot { struct Point { short x; short y; } ; attribute Point pos; void move(in short dx, in short dy); const short def = 1; };
Gilles Roussel
Constructiond’applicationsr´eparties
Construction d’applications r´eparties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’he´ritage
Construction d’applications re´parties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Lestypesre´f´erences
G´en´erationd’unensembledeclasses/interfacesJava InterfaceRobotOperationscontient uniquement les ope´rationsd´efiniesdansl’IDL InterfaceRoboteediterh´RobotOperations, plus : org.omg.CORBA.Object: interface des objets CORBA IDLEntity: interface pour le passage de parame`tre/valeurderetour ClassesRobotPOAetRobotStubpoes,urn´´e´eerg respectivement,lecot´eserveuretlecote´client ClassesRobotHelperetRobotHoldernee´´gsr´ee respectivement pour le transtypage et le (wrapping)
Les attributs
Gilles Roussel
Constructiond’applicationsr´eparties
Pre´c´ed´edumotclefattribute: attribute short x; Traduit engetter/setter short x(); void x(short newX); Si modificateurreadonlypas desettere´n´erg´e
Gilles Roussel
Constructiond’applicationsre´parties
Construction d’applications r´eparties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Construction d’applications re´parties Gilles Roussel IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’he´ritage
Hi´erarchiedetypes
Gilles Roussel
Constructiond’applicationsre´parties
Lesde´clarationsdeme´thodes
Profildesm´ethodescomparablesa`ceuxdeJava Possibilite´depr´eciserquelam´ethoden’attendpasle r´esultat:oneway Pr´ecisionssurlemodedepassagedesparame`tres inudapar`mteernitiialis´eeparlecliuce´rtneelbare´pva:urle par le serveur outruudavel`mteapardifi´remorleseepaveerur: re´cup´erableparleclient inout!: les deux Typeintraduit par le type correspondant en Java Typeoutouinouttraduit par le type enveloppe du type correspondant en Java
Gilles Roussel
Constructiond’applicationsre´parties
Construction d’applications re´parties
Gilles Roussel
IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Construction d’applications re´parties
Gilles Roussel
IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Les types enveloppes«Holder»
Dispose d’un champsvalue Ne´cessite´deconstruireleHolderduoc´teclient Constructeurpard´efautpourout Constructeuravecunparame`trepourinout Holderpo´iclssedenansseuxde
Preprocessing
Gilles Roussel
Constructiond’applicationsre´parties
idljpermet d’utiliser les directives depreprocessingde cpp: #include #define #ifdef,#ifndef, etc. Options deidljpour lepreprocessing ditiond’ud´efinendecedmaomalrungilamensorc isinchieresficchedhcreederioereptr´ersul
Gilles Roussel
Constructiond’applicationsre´parties
Construction d’applications re´parties
Gilles Roussel
IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’h´eritage
Construction d’applications re´parties
Gilles Roussel
IDL Types primitifs Types utilisateurs Les interfaces Les types enveloppes Le fichier L’he´ritage
Fichiersg´en´ere´sorganise´senpaquetagescorrespondants, plus ou moins, aux accolades«{}»du fichier IDL Directivemoduleegtuniefid´taueaqnp StructureSfie´ddru’ennietfrcaenie`al’int´erieuI, respectivement, dans une autre structureS2, entraˆıne la g´ene´rationdelaclasseI.S, respectivement,S2.S Visibilit´eadesauxaccoll´iee«{}»comme en Java Poure´viterlesambigu¨ıt´esoupre´ciseruntypeparticulier, possibilit´ededonnerunchemind’acce`sdansl’IDL cheminrelatifa`l’endroitd’utilisationA::B chemin absolu depuis la«racine»du fichier::A::B