首页 > 面向对象模型的四种核心技术

面向对象模型的四种核心技术

1、分类

    类是具有相同属性结构和操作方法的对象的集合,属于同一类的对象具有相同的属性结构和操作方法。分类是把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例”(instance-of)的关系。

    同一个类中的若干个对象,用于类中所有对象的操作都是相同的。属性结构即属性的表现形式相同,但它们具有不同的属性值。所以,在面向对象的数据库中,只需对每个类定义一组操作,供该类中的每个对象使用,而类中每一个对象的属性值要分别存储,因为每个对象的属性值是不完全相同的。例如,在面向对象的地理数据模型中,城镇建筑可分为行政区、商业区、住宅区、文化区等若干个类。以住宅区类而论,每栋住宅作为对象都有门牌号、地址、电话号码等相同的属性结构,但具体的门牌号、地址、电话号码等是各不相同的。当然,对它们的操作方法如查询等都是相同的。

2、概括

    概括是把几个类中某些具有部分公共特征的属性和操作方法抽象出来,形成一个更高层次、更具一般性的超类的过程。子类和超类用来表示概括的特征,表明它们之间的关系是“即是”(is—a)关系,子类是超类的一个特例。

    作为构成超类的子类还可以进一步分类,一个类可能是超类的子类,同时也可能是几个子类的超类。所以,概括可能有任意多层次。例如,建筑物是住宅的超类,住宅是建筑物的子类,但如果把住宅的概括延伸到城市住宅和农村住宅,则住宅又是城市住宅和农村住宅的超类。

    概括技术的采用避免了说明和存储上的大量冗余,因为住宅地址、门牌号、电话号码等是“住宅”类的实例(属性),同时也是它的超类“建筑物”的实例(属性)。当然,这需要一种能自动地从超类的属性和操作中获取子类对象的属性和操作的机制。

3、聚集

    聚集是将几个不同类的对象组合成一个更高级的复合对象的过程。术语“复合对象”用来描述更高层次的对象,“部分”或“成分”是复合对象的组成部分,“成分”与“复合对象”的关系是“部分”(parts—of)的关系,反之“复合对象”与“成分”的关系是“组成”的关系。例如,医院由医护人员、病人、门诊部、住院部、道路等聚集而成。

    每个不同属性的对象是复合对象的一个部分,它们有自己的属性数据和操作方法,这些是不能为复合对象所公用的,但复合对象可以从它们那里派生得到一些信息。复合对象有自己的属性值和操作,它只从具有不同属性的对象中提取部分属性值,且一般不继承子类对象的操作。这就是说,复合对象的操作与其成分的操作是不兼容的。

4、联合

    联合是将同一类对象中的几个具有部分相同属性值的对象组合起来,形成一个更高水平的集合对象的过程。术语“集合对象”描述由联合而构成的更高水平的对象,有联合关系的对象称为成员,“成员”与“集合对象”的关系是“成员”(member—of)的关系。

    在联合中,强调的是整个集合对象的特征,而忽略成员对象的具体细节。集合对象通过其成员对象产生集合数据结构,集合对象的操作由其成员对象的操作组成。例如,一个农场主有三个水塘,它们使用同样的养殖方法,养殖同样的水产品,由于农场主、养殖方法和养殖水产品等三个属性都相同,故可以联合成一个包含这三个属性的集合对象。

    联合与概括在概念上不同。概括是对类进行抽象概括;而联合是对属于同一类的对象进行抽象联合。联合有点类似于聚集,所以在许多文献中将联合的概念附在聚集的概念中,都使用传播工具提取对象的属性值。

转载于:https://www.cnblogs.com/Athrun/archive/2007/03/15/675436.html

更多相关:

  • 点云PCL免费知识星球,点云论文速读。文章:DSP-SLAM: Object Oriented SLAM with Deep Shape Priors作者:Jingwen Wang Martin Runz Lourdes Agapito编译:点云PCL代码:https://github.com/JingwenWang95/DSP-S...

  • RAM缓存 新RAM缓存算法(CLFUS) 新的RAM缓存使用的创意来自许多缓存替换策略和算法,包括LRU,LFU,CLOCK,GDFS及2Q,它被命名为时钟周期内最小频繁使用大小算法CLFUS(Clocked Least Frequently Used by Size)。它避开了任何专利算法,具有如下特性: 均衡最近性(Rec...

  • MP4 |视频:AVC,1280×720 30 fps |音频:AAC,48 KHz,2 Ch |时长:2h 12m 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:560M C4D是一个有抱负的运动图形艺术家和设计师的重要工具。借助C4D,您可以使用3D对象、动态效果和动画来增强运动图形、模型和可视化效果。本课...

  • 文章目录先说问题:再说解决尝试1:尝试2(该尝试建议先在自己环境搭配对应业务测试通过后再现场尝试): 感谢 学无止境996同学的陪伴和vigourtyy美丽女友的支持,直到这个解决问题的深夜 先说问题: ceph 12.2.1生产环境:3副本 tier + 3副本data 机房在拥有业务的情况下重启集群交换机,产生如下场景...

  • 这周主要学习了java中的类和对象的知识点,发现和C++中的类和对象极为相似,对于类和对象的概念理解起来也简单。同时在自学的过程中也把类的知识重新复习巩固了一下(如类的三大特征:继承,封装和多态,构造,成员对象的访问权限,构造,无参有参函数的调用等),同时也了解到一些新的概念,比如类对象创建和引用占据堆内存和栈内存,输出对象时默认调...

  • 文档树Document Object Model (DOM) 为文档对象模型, 它使用对象的表示方式来表示对应的文档结构及其中的内容。下面为一个样例 p 元素在文档中的对象所包含的所有属性。控制台:p#domaccessKey: ""align: ""assignedSlot: nullattributeStyleMap: Style...

  • 1、封装 什么是封装?   1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口     注意:封装有隐藏的意思,但不是单纯的隐藏     学习封装的目的:就是为了能够限制外界对内部数据的访问   python中属性的权限分为两种:   1.公开的     没有任何限制,谁都可以访问   2.私有的     只有当前类本身能狗...

  • jquery:js框架; 主要区别在dom的操作 jq需要引入文件并且引入顺序在最上面; 找元素 操作元素 js:doucument.getElementById..classname,tagname,name jq:$(选择器) dom是js对象 jqDom是jquery对象 操作内容 js:dom.innerHTML(非表单元素)...

  • Mock.js 的语法规范包括两部分: 数据模板定义规范(Data Template Definition,DTD)数据占位符定义规范(Data Placeholder Definition,DPD)1.数据模板定义规范 DTD 数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值: // 属性名 name // 生...

  • vue   vue.js 是用于构建交互式的 Web 界面的库。它提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。从技术上讲, Vue.js 集中在 MVVM 模式上的视图模型层,并通过双向数据绑定连接视图和模型。实际的 DOM 操作和输出格式被抽象出来成指令和过滤器。相比其它的 MVVM 框架,Vue.j...

  • 一次手贱更新了上面这个驱动,结果: Fn+F2/F3不能控制亮度win+X弹出来的下面这个窗口“显示器亮度”不见了 电源选项里面底部“屏幕亮度”也不见了 我研究了三天,各种骚操作都试过了,最后找到解决方案: win+R 输入 devmgmt.msc 回车,按照下图操作,瞬间亮度恢复正常 ...

  • 第一种:需要刷新当前页面重复执行的操作——使用场景:刷点击率 、秒杀活动、抢沙发   //自动化循环操作方法 var doLoop = function (dom) {dom || (dom = document);//这里写循环操作的代码dom.querySelector("sel").innerHTML = "舒工的骚操作!!...

  • Ubuntu常用操作外观操作修改应用icon图标终端美化内存管理内存查询分区管理日志清理操作执行自动执行多条命令...

  • 文章目录前言工业级 LRU Cache1. 基本架构2. 基本操作2.1 insert 操作2.2 高并发下 insert 的一致性/性能 保证2.3 Lookup操作2.4 shard 对 cache Lookup 性能的影响2.4 Erase 操作2.5 内存维护3. 优化...

  • 最近利用vim做一些文本处理时 发现vim 支持的键盘宏是一个好东西啊,高效优雅得处理大量需要重复性操作的文本,让人爱不释手!!! 希望接下来对键盘宏的分享能够实际帮助到大家。 后文中描述的一些vim操作会汇集成指令字符串,方便大家参考。 1. 场景描述 在分享键盘宏之前,先看这样一个文本操作需求: 对如下文本增加ma...