Notas de Aula - MAC 5759 - Sistemas de Objetos Distribuídos
Aula 3 - 7/3/2001
OMG IDL - Interface Definition Language
- Geração de stubs e esqueletos
- Muito influenciada por C++
- É uma linguagem declarativa, não uma linguagem de programação
- Elementos básicos de IDL
- Comentários: como em C++, i.e., /* */ ou //
- palavras chave sempre em minúsculas
- únicas exceções à regra das minúsculas
- identificadores
- como em C++, letra seguida de letras, números ou _
- diferentemente de C++, não pode começar com _
- Tipos básicos
- short, long, unsigned short, unsigned long
- float, double
- char
- string
- boolean
- octet
- any
- Tipos definidos pelos usuários
- tipos com nome
- typedef short Temperatura;
- enumerações
- enum Cor { vermelho, verde, azul, preto, branco, laranja
};
- enum Cor { vermelho = 3, verde = 7};
// ILEGAL, NÃO PODE!
- estruturas
- struct data {
short dia;
short mes;
short ano;
};
- uniões bem diferentes de C++
- union ColorCount switch (Cor) {
case vermelho:
case verde:
case azul:
unsigned long quantidade_em_estoque;
case preto:
float desconto;
default:
string detalhes;
};
- vetores (matrizes)
- typedef Cor VetorDeCores [10];
- typedef string TabelaDeIDs [10][20];
- Cor VetorDeCores [10];
// ILEGAL, NÃO PODE!
- typedef string TabelaDeIDs [][20];
// ILEGAL, NÃO PODE!
- seqüências
- typedef sequence<Cor> Cores;
- typedef sequence<long, 100> Numeros; // no máximo
100 números
- é um tipo bom para representação de matrizes
esparças pois só os elementos não-default são
transmitidos
- constantes
- muitos exemplos na página 75 do Vinoski
- Interfaces
- uma interface pode incluir definições de
- constantes
- tipos
- exceções
- atributos
- operações
- Exemplo: interface palheiro, página 80 do Vinoski
- interfaces se tornam tipos, instâncias destes tipos podem ser
passados como parâmetro
- Operações: tipo de resultado, nome, zero ou mais parametros
in, out, inout, exceçoes
- sobrecarga (overloading, polymorphism) não é
permitido pois seria difícil mapear para linguagens não-OO
- podem ser oneway
- Exceções: página 88 do Vinoski
- pág. 89: uso problemático de exceções
- pág. 90: consertando o problema
- system exceptions
- Atributos, pág. 98.
- atributos NÃO SÃO variáveis públicas
membras da classe!
- é apenas uma forma abreviada de escrever 1 ou 2 operações
(get ou get e set)
- Exercício em sala de aula:
- Alunos fazem uma definição de interface para controlar
uma geladeira
Próxima Aula
Aula Anterior
Página de MAC 5759
Página do Fabio
Página do DCC