1、分类

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

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

2、概括

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

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

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

3、聚集

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

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

4、联合

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

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

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

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

面向对象模型的四种核心技术相关推荐

  1. keil c语言字符型变量的值,面向51单片机的Keil uVision4的四种基本数据类型

    在标准C语言中,存在着如下六种基本数据类型: 1.char:字符型: 2.short = short int:短整型 3.int:整型 4.long = long int:长整型 5.float:单精 ...

  2. J2EE的13种核心技术

    Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...

  3. 四种主流的 API 架构风格对比

    来源 | InfoQ 本文讨论了四种主要的 API 架构风格,比较它们的优缺点,并重点介绍每种情况下最适合的 API 架构风格. 两个单独的应用程序需要中介程序才能相互通信.因此,开发人员经常需要搭建 ...

  4. C++回顾(七)—— 面向对象模型

    7.1 静态成员变量和静态成员函数 7.1.1 静态成员变量 关键字 static 可以用于说明一个类的成员: 静态成员提供了一个同类对象的共享机制: 把一个类的成员说明为 static 时,这个类无 ...

  5. 业务模型;UML类图;数据模型;概念模型;面向对象模型

    因为欣赏所以转载,原文地址 http://blog.csdn.net/sunleap/article/details/4976993 开发的流程有以下几步: 对象图 • 组织视图:组织结构的静态模型. ...

  6. python语言怎么学-Py列为黑客应该学的四种编程语言之一 新手该怎么学

    在开始前先简单和大家说一说:Python是什么.呢? 也许最初设计Python这种语言的人都没有想到今天Python会在工业和科研上获得如此广泛的使用.著名的自由软件作者Eric Raymond在他的 ...

  7. 台湾积体电路制造公司(简称为台积电(TSMC))的28nm LP、HPM、HPC、HPC+四种不同处理器工艺版本的区别?

    台湾积体电路制造公司(简称为台积电(TSMC))的28nm LP.HPM.HPC.HPC+四种不同处理器工艺版本的区别? 说起处理器工艺,相信大家都多多少少知道一些,可同样的一种工艺,也会有很多不同版 ...

  8. 【Spring】12、Spring Security 四种使用方式

    spring security使用分类: 如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1.不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo: ...

  9. C++面向对象模型初探

    c++面向对象模型初探 前言 基础知识 C++编译器如何完成面向对象理论到计算机程序的转化? 编译器对属性和方法的处理机制 总结 4 this指针 全局函数PK成员函数* 前言 C++对象模型可以概括 ...

最新文章

  1. php阿里云oss文件上传
  2. 电脑装机完没有efi_电脑装机如何选内存?看完这篇就全懂了
  3. 前端学习(2577):Nuxt解决了什么问题
  4. mysql+tushare搭建本地数据库
  5. 历史需要重写?AlexNet之前,早有算法完成计算机视觉四大挑战
  6. 强化学习组队学习task03—— 策略梯度及 PPO 算法
  7. response 设置头的类型 (转)
  8. ORACLE 数据库的级联查询 一句sql搞定(部门多级)
  9. python中的赋值运算符_整理Python中的赋值运算符
  10. 自己手动复现一个熊猫烧香病毒
  11. (可再看)深度学习学习笔记(1)
  12. promise兼容性问题
  13. html转word 自动分页,word怎样自动分页
  14. 斐讯n1安装linux安装微信,斐讯N1打造小型NAS六之armbian安装aria2
  15. prometheus+grafana简介与linux下的安装
  16. 最简单的基于FFMPEG的转码程序
  17. linux无线8179,编译安装0bda 8179无线网卡
  18. 华为荣耀笔记本linux系统怎么样,荣耀笔记本和华为笔记本有什么区别
  19. 六、Docker镜像原理
  20. 用pytorch实现对抗生成网络

热门文章

  1. oracle主从关系表查询,Oracle 主从表联合查询解决方法
  2. 用python做乘法口诀表_使用python写乘法口诀表
  3. PHP如何把三张图片均匀分布,怎么把一张图片分成9张
  4. 嵌入式linux应用程序升级,基于嵌入式Linux平台的应用升级机制的研究与设计
  5. vfp中,函数subs(计算机管理信息系统,7)返回的结果是,VFP选择题库(可发学生).xls...
  6. java thread isalive,《Java多线程编程核心技术(第2版)》 —1.4 isAlive()方法
  7. 1012. 数字分类 java_PAT-B-1012. 数字分类(Java)
  8. OpenCV中的对极几何和对极约束
  9. OpenCV(总结篇)图像逐像素访问(三种操作:指针、迭代器、at()函数)
  10. 图像指针与矩阵格式转换——Mat转uchar*及uchar*转Mat代码实现