类设计的内在一致性,可以理解为“逻辑一致性”。所谓逻辑一致性,比如说,网络上流传甚广的“俗话说,俗话又说”系列,“宰相肚里”vs “有仇不报非君子”。

  • (1)同一类内部;
  • (2)继承关系的父类与子类之间。

一个类定义是一个整体,它描述了一种程序对象。类定义比较复杂,其中可以有许多成分,特别是可能定义了许多方法,每个方法定义是类定义中的一个独立片段,编程语言对不同方法之间的关系没有任何约束,也不对这样一组方法定义做任何相互关系上的检查。但是,作为同一个类定义的成分,这些方法需要相互协调,保持一致,才能保证所定义的程序有意义。这件事需要编程序的人考虑和保证。

以持有尾部节点的单链表为例,存在两种可能的设计,

  • 1.要求在表空的时候,_head_rear 的值都是 None
  • 2.只要求这时,_headNone

基于这两种设计都能正确地实现这个类,但是一旦选定了一种设计,类中的所有方法都必须遵照这种设计来定义,包括所有的插入和删除操作。

一般情况下,在设计一个类时总需要考虑一套统一的规则。类的初始化方法建立起的对象应满足这些规则,操作也不能破会规则,这样定义的类才是有效的。

当然不同规则可能影响类定义的细节和复杂程度,采用后一种设计更为简单,需要维护的关系少一点。还考虑到基类的已有设计,尽可能逾期保持一致,以便更多地利用已有的功能。

面向对象 —— 类设计(九) —— 类设计的内在一致性相关推荐

  1. python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

  2. 编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌

    编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人. 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌 2)定 ...

  3. 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。...

    编写程序描述影视歌三栖艺人.需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人. 实现思路: 1) 分析影视歌三栖艺人的特性:可以演电影,可以演电视剧,可以唱歌 2) 定义多个接口描述特 ...

  4. python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

    编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...

  5. 编写程序描述卡车信息 某公司要开发“X出租公司车辆管理系统”,请用面向对象的思想设计卡车类。

    一.练习题目 编写程序描述卡车信息 二.问题描述 某公司要开发"X出租公司车辆管理系统",请用面向对象的思想设计卡车类. 设定: 属性:车牌号.车型.颜色.日租金.载重量 方法:租 ...

  6. 机器人技术第三次作业:用面向对象的思维设计相关类,从而实现直线与直线、直线与圆、直线与矩形的交点。

    用面向对象的思维设计相关类,从而实现直线与直线.直线与圆.直线与矩形的交点. 基本思想: 直线与直线,直线与圆:利用公式直接求解 直线与矩形:分解成直线与直线的交点: #include <ios ...

  7. JAVA:使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同。

    使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同.如一般会员卡消费打9折:VIP会员卡打7折:超级VIP卡打5折.其具体的实现效果如下所 ...

  8. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  9. C++面向对象程序设计实验题:有理数类(分数类)设计

    C++实验题:有理数类(分数类)设计 问题描述: 根据main测试函数设计有理数类CRational,数据成员由分子.分母组成(都是整型,应表示成最简形式),完成分数显示(如用户输入的分子是4,分母是 ...

最新文章

  1. qregexp限制数字范围_计算一列数字的平均值
  2. iOS—如何申请苹果公司开发者账号流程详细图文介绍(包括邓白氏编码的申请方法详细介绍)...
  3. red5安装时候出现服务不能启动异常
  4. myeclipse修改编译器版本的方法 .
  5. Schnorr身份识别方案
  6. BugkuCTF-MISC题神秘的文件
  7. Qt creator5.7 OpenCV249之pyrDown函数(含源码下载)
  8. ansible 并发设置_如何使用Ansible通过Prometheus设置系统监视
  9. 第3章 java的基本程序设计结构
  10. go语言项目目录文件的管理样式
  11. wordpress获取home_wordpress各种获取路径和URl地址的函数总结
  12. 双网口工业路由器 网络传输层的“常青树”
  13. 银行开发专业术语解释和银行系统开发架构的设计思想
  14. 混合线性模型笔记2:概念解释
  15. 人人都是产品经理2.0-04章摘要
  16. 学生学籍系统 按班级查找按学号查找
  17. Unity3d中最简单物体的旋转移动
  18. 将一个整数分解为质数的乘积
  19. 更改iTunes(macOS下)备份路径至移动硬盘
  20. 内网渗透之跨路由访问

热门文章

  1. mysql并发参数查看_MySQL Innodb 并发涉及参数
  2. 错误 对‘pcl::console::print(pcl::console::VERBOSITY_LEVEL, char const*, ...)’未定义的引用
  3. E9流程表单中动态自定义添加button js代码
  4. 郑大网教育计算机2017,2017郑大计算机操作系统(计算机).docx
  5. Spring Data JPA 条件查询 分页查询
  6. vue状态管理存取数据_Vue中的数据通信和状态管理
  7. 文本编辑器查看 cprintf颜色_做生信,你需要一款好用的文本编辑器
  8. LeetCode 435. 无重叠区间(贪婪算法)
  9. mysql text类型效率_mysql使用笔记:vachar,char,text比较
  10. 【转】TIOBE 12 月排行榜:古老的 C 和后起之秀 Kotlin,谁是年度编程语言之王?...