Tecgraf PUC-Rio setembro de 2013 IDL. Interface Definition Language Linguagem neutra Define a...

27
Tecgraf PUC-Rio setembro de 2013 IDL

Transcript of Tecgraf PUC-Rio setembro de 2013 IDL. Interface Definition Language Linguagem neutra Define a...

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

Tecgraf PUC-Riosetembro de 2013

IDL

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

IDL

• Interface Definition Language• Linguagem neutra• Define a interface dos objetos CORBA

struct Book {string author;string title;

};

typedef sequence<Book> BookSeq;

interface Biblioteca {boolean addBook(in Book pbook);BookSeq getBooks();Book getBook(in string title);

};

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

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

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

Conteúdo

• Elementos principais da IDL:• Interface• Tipos primitivos• Tipos estruturados (user-defined)• Tipo ANY• Módulos

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

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

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

Interfaceinterface 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

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

Herança de Interface

• Uma interface pode estender uma outra interface

interface Account { ...};

interface Savings : Account { //Inherits all Account definitions //then adds Savings definitions ...};

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

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);

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

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();

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

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);

};

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

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; };

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

Tipos primitivosTipo IDL Significadoboolean boolean value (0 ou 1): TRUE or FALSE

char 8-bits character (Ex: ISO latin-1)

wchar 16-bits character

octet 8-bits (byte)

string ISO Latin-1(tamanho não definido)

wstring conjunto de wchar (tamanho não definido)

short integer-signed 16 bits (-215 … 215-1)

unsigned short integer-unsigned 16 bits (0…216-1)

long integer-signed 32 bits

unsigned long integer-unsigned 32 bits

long long integer-signed 64 bits

unsigned long long integer-unsigned 64 bits

float IEEE single-precision floating point (32 bits)

double IEEE double-precision floating point (64 bits)

fixed Número de ponto fixo até 31 dígitos

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

Tipos user-defined

• struct• sequence• array• typedef• enum• union• valuetype

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

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; };

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

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<string> address;sequence<string, 30> address;

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

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];

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

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<string> StringSeq;

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

enum

• Permite definir um tipo para representar uma lista enumerada

enum TrafficLight { red, yellow, green};

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

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;};

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

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();};

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

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;};

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

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

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

valuetype

• Podem ser estendidos usando herança

valuetype Time : Date { public short minutes; public short seconds; void next_time(); void previous_time();};

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

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

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

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};

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

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;};

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

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 {...}