Ice 读书笔记--Slice语言

原文 http://blog.csdn.net/moxiaomomo/article/details/6709980

Slice语言

 

1. Slice(Specification Language for Ice)是一种用于使对象接口与其实现相分离的基础性抽象机制。
因为Slice描述的是接口和类型,它是一种纯粹的描述性语言;因此无法用slice语言来编写可执行语句。
2. 编译
两种情况:客户和服务器使用相同、不同的开发环境
3. 源文件
3.1 文件命名
含有Slice定义的文件必须以.ice扩展名结尾。
3.2 预处理
使用#include指令时,只允许使用<>语法来指定文件名,不能使用””。
3.3 定义次序
4. 语法规则
4.1 注释
可以使用C或者C++的注释风格。
4.2 关键字
4.3 标识符
标识符以一个字母开头,后面可以跟任意数目的字母或数字。Slice标识符不能有下划线。
5. 基本的Slice类型
6. 用户定义的类型

对于像Slice这样的规范语言而言,嵌套的类型定义并无必要。
6.1 Slice没有null串的概念
7. 接口,操作以及异常
7.1 只有操作定义能出现在接口定义内部。
7.2 Slice不支持任何形式的操作重载。
7.3 nonmutating 关键字说明,getTime操作不会改变它的对象的状态
idempotent 关键字表明某个操作可以安全的多次执行。
7.4 如果数据库查找返回空结果集就抛出异常,这是一种错误的做法。
7.5 大多数情况下,定义空接口说明在设计上存在一定的不合理性。
8. 类
8.1 简单类
Slice的类定义与结构体相似,所用关键字是class。Struct不能定义为空。
8.2 类继承
与结构不同,类支持继承。类支持单继承。
8.3 类的继承语义
类继承可以传递多态的值。
8.4 类用作联合
8.5 自引用的类
类具有值语义,而代理具有引用语义。自引用的类不仅能用于非循环图,也能用于循环图。
8.6 类 vs 结构
类提供了一些特性,是结构没有的:
a. 类支持继续  b. 类可以自引用  c. 类可以有操作 d. 类可以实现接口
8.7 有操作的类
类上的操作总是在调用者的地址空间执行,即类的操作是本地操作。
8.8 类在架构上的影响
8.9 实现接口的类
Slice类也可以用作服务器中的servant,也就是说,类的实例可以用来提供接口的行为。
一个类可以实现若干接口。除了实现一个接口,一个类还可以拓展另一个类。
8.10 提前声明
         接口和类都可以进行提前声明。提前声明可以创建互相依赖的类对象。提前声明的接口和类可以用作结构,异常,或类成员的类型,用作词典的值类型,用作操作的参数或者返回类型。
8.11 模块
         Module语言成分可以减轻全局名字空间带来的名字冲突问题。Module分别映射到C++的Namespace和java的package。
         在语法上,在另一个模块中提前声明接口是非法的。(资料P109)
8.12 本地类型
        任何Slice定义都可以用关键字local进行修饰。由于本地类型不能在服务器端和客户端之间传送,本地类型永远不能从外地调用。

8.13  Ice模块
         整个Ice API的大部分内容都是作为Slice定义表示的。
8.14 元数据
         元数据出现在一对方括号中,含有一个或者多个有逗号分隔的串直接量。元数据意在用于特定的后端,比如特定语言映射的代码生成器。
8.15 使用Slice编译器
         Ice为每种语言映射提供了单独的Slice编译器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值