第8章 面向对象数据库.pptVIP

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 面向对象数据库

第8章: 面向对象数据库 对复杂数据类型的需求 面向对象数据模型 面向对象语言 持久性程序设计语言 持久性C++ 系统 对复杂数据类型的需求 数据处理中的传统数据库应用具有简单数据类型 相对较少的数据类型, 第一范式成立 近年来复杂数据类型越来越重要 例如: 地址可处理为 单个字符串, 或者 为每个子部分用一单独的属性, 或者 复合属性 (不属于第一范式) 例如: 允许直接存储多值属性而不是创建单独的第一范式关系存储通常更方便 应用 CAD, CASE 多媒体与图像数据库, 文档/超文本数据库 面向对象数据模型 对象大体上对应于E-R模型中的实体. 面向对象是基于将与一对象有关的代码与数据封装成一个单位的思想. 面向对象数据模型是一个逻辑数据模型 (类似E-R模型). 使面向对象程序设计风格(e.g., Smalltalk, C++)适应数据库系统 对象结构 对象具有: 变量集合: 包含对象的数据. 变量值本身也是对象. 消息集合: 对象对消息进行反应; 消息可具有零, 一个或多个参数. 方法集合: 实现消息的代码体; 方法返回一个值作为对消息的反应 数据的物理表示仅对对象的实现者可见 消息与反应提供了对象的唯一的外部界面. 消息这个词不必意味着物理上的消息传递. 消息可以实现为过程调用. 消息与方法 方法是用通用语言写的程序, 具有下列特性 变量仅在对象本身内部可以直接引用 其他对象的数据只能通过发送消息引用. 方法分为read-only 和 update 方法 只读方法不改变对象的值 严格地说, 实体的每个属性都必须表示为一个变量和两个方法, 一个用于读属性, 另一个用于更新 例如, 属性 address 可用变量 address 与两条消息get-address 和 set-address表示 为方便起见, 许多面向对象数据模型都允许直接存取其他对象的变量. 对象类 相似对象组成类; 每个对象称为它的类的实例 一个类中所有对象具有相同的 具有相同类型的变量, 消息接口 方法 赋给变量的值可能不同 例如: 所有人对象组成 person 类 类与E-R模型中的实体集相似 类定义例 class employee { /*Variables */ string name; string address; date start-date; int salary; /* Messages */ int annual-salary(); string get-name(); string get-address(); int set-address(string new-address); int employment-length(); }; 在严格的封装中还需要用来读与设置其他变量的值的方法 方法单独定义 如: int employment-length() { return today() – start-date;} int set-address(string new-address) { address = new-address;} 继承 例如, 银行客户类与银行雇员类相似, 尽管有不同之处 两者可以共享某些变量和消息, 如 name 与address. 两者也各有特殊变量和消息, 如雇员的salary 和客户的credit-rating. 每个雇员是人; 所以employee 是person 的特例 同样, customer 也是person 的特例. 创建类 person, employee and customer 对所有人都适用的变量/消息与类person关联. 雇员所特有的变量/消息与类employee关联 客户所特有的变量/消息与类customer 关联 继承 (续) 类组织成一个特化 / IS-A 层次 属于类person的变量/消息被类employee 和customer继承 结果构成一个类层次 类层次定义 class person{ string name; string address: }; class customer isa person { int credit-rating; }; class employee isa person { date start-date; int salary; }; class officer isa employee { int office-number, int expense-account-number, };

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档