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

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

Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL.

Apresentações semelhantes


Apresentação em tema: "Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL."— Transcrição da apresentação:

1 versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL

2 versão 1 - julho/2013 IDL 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 versão 1 - julho/2013 Mapeamento de IDL para uma linguagem de programação A 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 versão 1 - julho/2013 Conteúdo Elementos principais da IDL: Interface Tipos primitivos Tipos estruturados (user-defined) Tipo ANY Módulos

5 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 Tipos primitivos

13 versão 1 - julho/2013 Tipos user-defined struct sequence array typedef enum union valuetype

14 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 enum Permite definir um tipo para representar uma lista enumerada enum TrafficLight { red, yellow, green };

19 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 valuetype Podem ser estendidos usando herança valuetype Time : Date { public short minutes; public short seconds; void next_time(); void previous_time(); };

24 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 versão 1 - julho/2013 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 "Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL."

Apresentações semelhantes


Anúncios Google