PDF de programación - PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.3: Slice: Specification Language for Ice

Imágen de pdf PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.3: Slice: Specification Language for Ice

PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.3: Slice: Specification Language for Icegráfica de visualizaciones

Publicado el 14 de Enero del 2017
617 visualizaciones desde el 14 de Enero del 2017
217,8 KB
35 paginas
Creado hace 14a (16/12/2009)
PROGRAMACION CONCURRENTE Y DISTRIBUIDA

VIII.3: Slice: Specification Language for Ice

José M. Drake
L.Barros

Notas:

Posibilidades que ofrece Java para la comunicación en red: Socket,RMI y URL.

1

Los lenguajes de especificación abstracta de interfaces es la herramienta
básica para desacoplar la especificación de la implementación de los
servicios.
Slice formula el contrato entre un servidor y sus clientes de forma
independiente a las características de la plataforma, y con independencia
del lenguaje con el que se implementa el cliente y el servidor.
Slice es un lenguaje puramente declarativo, describe la interfaz, pero no
proporciona ningún detalle de como se implementa.
La especificación Slice de una interfaz se compila con una herramienta
específica para cada lenguaje de programación, y genera un conjunto de
ficheros en código fuente que enlazados con el código de negocio permite
generar servidores y clientes ejecutables.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

2

Notas:

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

3

Notas:

Ficheros Slice

Los ficheros con especificaciones Slices son ficheros de texto
cuyo nombre debe tener la extención “.ice”.

Ejemplo: Printer.ice

El formato es libre se pueden utilizar espacios, tabs, Line
feed, return, etc de forma libre. Los espacios son separadores.
Los constructores Slice (modulos, interfaces, tipos, etc)
pueden aparecer en cualquier orden, pero cualquier
identificador debe ser declarado antes de ser referenciado.
Cometarios: Igual que java:
/*
* Esto es un comentario
*/
// Esto también

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

4

Notas:

KeyWord en Slice

Slice usa un conjunto de palabras claves que están reservadas. En ellas el
tipo de carácter (Mayúscula/minúscula) debe ser respetado.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

5

Notas:

Identificadores Slice

Los identificadores comienzan por una letra y le sigue cualquier numero
de letras y números.
No se admiten letras no inglesas (p.e. á, ü, ...)
No se admite el carácter “_” (undescore)
Los identificadores con las mismas letras pero con mayúsculas/minuscula
diferentes son idénticos. Sin embargo Slice exige que el identificador se
escriba siempre de igual manera.
Las keywords de los lenguajes se pueden utilizar, y el compilador las
mapea añadiéndole un prefijo:
Por ejemplo: switch

en java => _switch
en C++ => _cpp_switch

Mejor no utilizarlos.
Las keywords de Slice se pueden utilizar poniéndole el prefijo “\”
struct dictionary{...
(Válido)

struct \dictionary{...

(No válido)

No se pueden utilizar los grupos de letras: ICE, Helper, Prx y Ptr con
cualquier capitalización. Por ejemplo “Icecream” no es un identificador
válido.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

6

Notas:

Módulos Slice

Todos los elementos Slice deben estar incluidos en un
módulo.
Los módulos sirven para agrupar elementos relacionados y
para definir un espacio de nombres

module ZeroC{

module Client{

// Definición de elementos aquí

};
module Server{

// Definición de elementos aquí

};

};

Un módulo puede reabrirse múltiples veces y continuar
agregándole nuevos elementos.
Existe un único modulo predefinido que se denomina Ice.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

7

Notas:

Tipos Slice básicos

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

8

Notas:

Tipos enumerados

Permite definir un tipo de variable enumerando los valores
que puede tomar:

enum Frutas{Manzana, Pera, Naranja};

No se permite asignar el valor de representación de cada
valor, ni se pueden hacer hipótesis sobre el valor que se le
asigna (puede ser dependiente del lenguajes)
Cada definición de un tipo enumerado define un nuevo
espacio de nombres:

enum Frutas{Manzana, Pera, Naranja};
enum Colores{Rojo, Naranja, Verde}; // Naranja se redefine

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

9

Notas:

Tipos Struct

Permite definir un nuevo tipo agrupando un conjunto de tipos
previamente definidos:

struct HoraDelDia{

short hora; // 0 – 23
short minuto; // 0 – 59
short segundo; // 0 - 59

};

struct Punto{
short x;
short y;

};
struct Linea{

Punto inicial;
Punto final;

};

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

10

Notas:

Tipos Sequence

Permite definir un vector de algún tipo de elementos de longitud variable ( de 0
hasta un valor ilimitado):

sequence<Frutas> Frutero;

Se admite utilizar secuencia de secuencias:

sequece<Frutero> Fruteria;

La sentencia es útil para definir, colecciones, conjuntos, listas colas, stack, árboles,
etc. Depende de la semántica que se le de al orden.
Dado que las secuencias pueden estar vacías, son útiles para definir campos
opcionales:

sequence<long> NumSerieOpt;
struct Componente{

string nombre;
string descripcion;
NumSerieOpt numeroSerie; // puede tener ningún elemento o un entero long

}

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

11

Notas:

Tipo Dictionary

Es una lista de entradas de parejas de un campo que se denomina key y
otro value. El campo key no puede estar repetido.

struct Empleado{

long dni;
string nombre;
string fechaNacimiento;

}
dictionary<long,Empleado> Fichero;

Para el campo key solo pueden utilizarse los siguientes tipos:
Tipos enteros: byte, short, int, long, bool y tipos enumerados
String
Secuences con elementos de tipos enteros o string
Struct que contengan tan sólo miembros de tipos enteros o string.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

12

Notas:

Definición de constantes

Se pueden definir constantes de los siguientes tipos:
Tipos enteros: byte, short, int, long, bool y tipos enumerados
Tipos float y double
String

AppendByDefault = true;

const bool
const byte LowerNibble = 0x0f;
const string Advice = "Don't Panic!";
const short TheAnswer = 42;
const double PI = 3.1416;

enum Fruit { Apple, Pear, Orange };
const Fruit FavoriteFruit = Pear;

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

13

Notas:

Definición de constantes numéricas

Tienen un formato muy semejante a C++ o Java

const byte TheAnswer = 42;
const byte TheAnswerInOctal = 052;
const byte TheAnswerInHex = 0x2A; // or 0x2a

const float
const float
const float
const float
const float
const float

P1 = -3.14f; // Integer & fraction, with suffix
P2 = +3.1e-3; // Integer, fraction, and exponent
P3 = .1; // Fraction part only
P4 = 1.; // Integer part only
P5 = .9E5; // Fraction part and exponent
P6 = 5e2; // Integer part and exponent

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

14

Notas:

Definición de constantes string

const string AnOrdinaryString = "Hello World!";
const string DoubleQuote = "\"";
const string TwoSingleQuotes = "'\'"; // ' and \' are OK
const string Newline = "\n";
const string CarriageReturn = "\r";
const string HorizontalTab = "\t";
const string VerticalTab = "\v";
const string FormFeed = "\f";
const string Alert = "\a";
const string Backspace = "\b";
const string QuestionMark = "\?";
const string Backslash = "\\";
const string OctalEscape = "\009"; // Same as \a
const string HexEscape = "\x09"; // Ditto
const string UniversalCharName = "\u03A9"; // Greek Omega

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

15

Notas:

Interfaces y operaciones Slice

Las interfaces son el objeto básico de las declaraciones de
Slice:

struct TimeOfDay {

short hour;
short minute;
short second;

// 0 - 23
// 0 - 59
// 0 – 59

};
interface Clock {

TimeOfDay getTime();
void setTime(TimeOfDay time);

};

Dentro de una interfaz sólo se pueden declarar operaciones .
No se pueden declarar, tipos, ni datos, ni excepciones, etc.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

16

Notas:

Parámetros y valores de retorno

Una operación tiene siempre un valor de retorno (que puede
ser void, y 0 o mas parámetros.
Los parámetros son por defecto in, y si son out debe declarase
explícitamente, y colocarse detrás de los parametros in.
Slice no soporta parámetros inOut

void changeSleepPeriod(

TimeOfDay startTime,
TimeOfDay stopTime,

out TimeOfDay prevStartTime,
out TimeOfDay prevStopTime);

Slice no admote ningúntipo de sobrecarga de nombres:
Todas las operaciones de una interfaz deben tener diferentes
nombres.

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

17

Notas:

Tipos de operaciones

Nonmutating Operations: Son aquellas cuya ejecución no
cambia el estado del servidor:

interface Clock{

nonmutating TimeOfDay getTime();

void setTime(TimeOfDay time);

};

Idempotent Operations: Son aquellos que si son ejecutadas
dos veces obtienen el mismo resultado (p.e.: x=1)

interface Clock{

nonmutating TimeOfDay getTime();
idempotent void setTime(TimeOfDay time);

};

Procodis’09: VIII.3- Slice: Specification Language for Ice J. M. Drake L.Barros

18

Notas:

Excepciones Slice

El siguiente árbol declara las herencias entre excepciones:

Las excepciones de usuario deben ser declaras en la especificación Slice y
deben ser especificadas en las operaciones que las lanzan.
Las excepc
  • Links de descarga
http://lwp-l.com/pdf1037

Comentarios de: PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VIII.3: Slice: Specification Language for Ice (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad