A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tecgraf PUC-Rio setembro de 2013 IDL. Interface Definition Language Linguagem neutra Define a interface dos objetos CORBA struct Book { string author;

Apresentações semelhantes


Apresentação em tema: "Tecgraf PUC-Rio setembro de 2013 IDL. Interface Definition Language Linguagem neutra Define a interface dos objetos CORBA struct Book { string author;"— Transcrição da apresentação:

1 Tecgraf PUC-Rio setembro de 2013 IDL

2 Interface Definition Language Linguagem neutra Define a interface dos objetos CORBA struct Book { string author; string title; }; typedef sequence BookSeq; interface Biblioteca { boolean addBook(in Book pbook); BookSeq getBooks(); Book getBook(in string title); };

3 Mapeamento de IDL para uma linguagem de programação OMG define especificações para mapeamentos de IDL em diversas linguagens Cada especificação define como traduzir a descrição feita em IDL para o código gerado (stubs e skeletons) em uma determinada linguagem de programação

4 Conteúdo Elementos principais da IDL: Interface Tipos primitivos Tipos estruturados (user-defined) Tipo ANY Módulos

5 Interface O tipo de um objeto CORBA é definido como uma interface IDL Uma interface IDL pode conter atributos e operações Atributos são simplesmente “açúcar sintático” para operações de get e set Um atributo readonly representa uma operação de estilo get

6 Interface interface Account { void deposit (in double amount); void withdraw (in double amount) raises (insufficientFunds); double getTotal(); readonly attribute AccountDetails details; }; A interface Account será implementada por um objeto CORBA que possua as operações deposit e withdraw O atributo details representa uma operação de consulta ao valor AccountDetails

7 Herança de Interface Uma interface pode estender uma outra interface interface Account {... }; interface Savings : Account { //Inherits all Account definitions //then adds Savings definitions... };

8 Operações da interface - parâmetros Os parâmetros de uma operação possuem uma direção, que pode ser: in: o parâmetro é passado do cliente para o servidor out: o parâmetro é passado de volta para o cliente inout: o parâmetro é passado em ambas as direções void deposit (in double amount);

9 Operações da interface – retorno As operações de uma interface IDL definem um valor de retorno Se a operação não possuir valor de retorno, o tipo void deve ser utilizado void deposit (in double amount); double getTotal();

10 Operações da interface - exceções Uma operação pode lançar ( raise ) uma exceção se algo não ocorrer conforme esperado Existem mais de 30 tipos de exceções pré- definidas e o desenvolvedor pode definir novos tipos de exceções (user-defined) exception insufficientFunds { }; interface Account {... void withdraw(in double amount) raises(insufficientFunds); };

11 Operações da Interface – tipos dos parâmetros e do valor de retorno Os parâmetros de uma operação e o valor de retorno possuem tipos, que podem ser: tipos primitivos (ex: boolean, string, long, etc) tipos user-defined struct AccountDetails {... }; interface Account {... void deposit (in double amount); double getTotal(); readonly attribute AccountDetails details; };

12 Tipos primitivos Tipo IDLSignificado booleanboolean value (0 ou 1): TRUE or FALSE char8-bits character (Ex: ISO latin-1) wchar16-bits character octet8-bits (byte) stringISO Latin-1(tamanho não definido) wstringconjunto de wchar (tamanho não definido) shortinteger-signed 16 bits (-2 15 … 2 15 -1) unsigned shortinteger-unsigned 16 bits (0…216-1) longinteger-signed 32 bits unsigned longinteger-unsigned 32 bits long integer-signed 64 bits unsigned long longinteger-unsigned 64 bits floatIEEE single-precision floating point (32 bits) doubleIEEE double-precision floating point (64 bits) fixedNúmero de ponto fixo até 31 dígitos

13 Tipos user-defined struct sequence array typedef enum union valuetype

14 struct Permite definir um tipo que agrupa valores de outros tipos, primitivos ou estruturados struct AccountDetails { string name; StringSeq address; long account_number; double current_balance; };

15 sequence Representa uma sequência de valores de um determinado tipo É como um array uni-dimensional que pode ter um tamanho máximo ou não sequence address;

16 array Assim como sequence, representa uma sequência de valores de um determinado tipo Diferente de sequence, a dimensão do array é fixada na definição do tipo, portanto, não pode ser alterada em tempo de execução Pode ter várias dimensões EmployeeRecord Employees[100]; long shares[1000]; string spreadsheet[100][100];

17 typedef Define um novo nome para um tipo existente É bastante comum usar typedef para nomear um tipo definido como sequence ou array typedef short id; typedef sequence StringSeq;

18 enum Permite definir um tipo para representar uma lista enumerada enum TrafficLight { red, yellow, green };

19 union É usado para definir um tipo cujo valor pode ser um dentro os tipos especificados union Foo switch(short) { case 1: boolean boolVal; case 2: long longVal; case 3: string stringVal; }; enum PersonKind {A_GUEST, AN_EMPLOYEE, OTHER}; union Person switch (PersonKind) { case A_GUEST :GuestRecord guest_record; case AN_EMPLOYEE: EmployeeRecord employee_record; default: string description; };

20 valuetype Usado para definir um objeto-por-valor que combina um struct (variáveis de estado) com operações valuetype Date { public short year; public short month; public short date; public void next_day(); public void previous_day(); };

21 valuetype Uma das vantagens do valuetype é que ele pode ser retornado como null A introdução do conceito de valuetype em CORBA tornou possível a definição de objetos com referências recursivas, o que não era possível usando apenas struct valuetype Node { public long id; public Node next; };

22 abstract valuetype O valuetype pode ser definido como abstrato e, nesse caso, não pode ter estado, apenas operações Objetos do tipo abstract value type não podem ser instanciados

23 valuetype Podem ser estendidos usando herança valuetype Time : Date { public short minutes; public short seconds; void next_time(); void previous_time(); };

24 abstract interface Assim como abstract value type, possui apenas as operações e não possui estado. Representa uma entidade que, em tempo de execução, pode ser uma interface regular ou um objeto por valor (valuetype) Dependendo do tipo real da entidade em tempo de execução é escolhida a semântica usada na passagem de parâmetro: por referência ou por valor

25 abstract interface abstract interface Describable { string get_description(); }; interface Example { void display (in Describable anObject); }; interface Account : Describable {// by reference // Métodos de Account }; valuetype Currency supports Describable {// by value // Métodos de Currency };

26 Tipo Any Pode armazenar valores de qualquer tipo de dado representável em IDL O tipo de seu conteúdo só pode ser verificado em tempo de execução struct NameValuePair { string name; any value; };

27 Módulos Permite definir espaços de nomes para as interfaces e tipos definidos no arquivo IDL Podem ser aninhados module tecgraf { module openbus { module DRMAA {... }


Carregar ppt "Tecgraf PUC-Rio setembro de 2013 IDL. Interface Definition Language Linguagem neutra Define a interface dos objetos CORBA struct Book { string author;"

Apresentações semelhantes


Anúncios Google