面向对象 —— 类设计(九) —— 类设计的内在一致性
类设计的内在一致性,可以理解为“逻辑一致性”。所谓逻辑一致性,比如说,网络上流传甚广的“俗话说,俗话又说”系列,“宰相肚里”vs “有仇不报非君子”。
- (1)同一类内部;
- (2)继承关系的父类与子类之间。
一个类定义是一个整体,它描述了一种程序对象。类定义比较复杂,其中可以有许多成分,特别是可能定义了许多方法,每个方法定义是类定义中的一个独立片段,编程语言对不同方法之间的关系没有任何约束,也不对这样一组方法定义做任何相互关系上的检查。但是,作为同一个类定义的成分,这些方法需要相互协调,保持一致,才能保证所定义的程序有意义。这件事需要编程序的人考虑和保证。
以持有尾部节点的单链表为例,存在两种可能的设计,
- 1.要求在表空的时候,
_head
和_rear
的值都是None
- 2.只要求这时,
_head
为None
基于这两种设计都能正确地实现这个类,但是一旦选定了一种设计,类中的所有方法都必须遵照这种设计来定义,包括所有的插入和删除操作。
一般情况下,在设计一个类时总需要考虑一套统一的规则。类的初始化方法建立起的对象应满足这些规则,操作也不能破会规则,这样定义的类才是有效的。
当然不同规则可能影响类定义的细节和复杂程度,采用后一种设计更为简单,需要维护的关系少一点。还考虑到基类的已有设计,尽可能逾期保持一致,以便更多地利用已有的功能。
面向对象 —— 类设计(九) —— 类设计的内在一致性相关推荐
- python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法
面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...
- 编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌
编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人. 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌 2)定 ...
- 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。...
编写程序描述影视歌三栖艺人.需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人. 实现思路: 1) 分析影视歌三栖艺人的特性:可以演电影,可以演电视剧,可以唱歌 2) 定义多个接口描述特 ...
- python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...
- 编写程序描述卡车信息 某公司要开发“X出租公司车辆管理系统”,请用面向对象的思想设计卡车类。
一.练习题目 编写程序描述卡车信息 二.问题描述 某公司要开发"X出租公司车辆管理系统",请用面向对象的思想设计卡车类. 设定: 属性:车牌号.车型.颜色.日租金.载重量 方法:租 ...
- 机器人技术第三次作业:用面向对象的思维设计相关类,从而实现直线与直线、直线与圆、直线与矩形的交点。
用面向对象的思维设计相关类,从而实现直线与直线.直线与圆.直线与矩形的交点. 基本思想: 直线与直线,直线与圆:利用公式直接求解 直线与矩形:分解成直线与直线的交点: #include <ios ...
- JAVA:使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同。
使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同.如一般会员卡消费打9折:VIP会员卡打7折:超级VIP卡打5折.其具体的实现效果如下所 ...
- 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载
1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...
- C++面向对象程序设计实验题:有理数类(分数类)设计
C++实验题:有理数类(分数类)设计 问题描述: 根据main测试函数设计有理数类CRational,数据成员由分子.分母组成(都是整型,应表示成最简形式),完成分数显示(如用户输入的分子是4,分母是 ...
最新文章
- qregexp限制数字范围_计算一列数字的平均值
- iOS—如何申请苹果公司开发者账号流程详细图文介绍(包括邓白氏编码的申请方法详细介绍)...
- red5安装时候出现服务不能启动异常
- myeclipse修改编译器版本的方法 .
- Schnorr身份识别方案
- BugkuCTF-MISC题神秘的文件
- Qt creator5.7 OpenCV249之pyrDown函数(含源码下载)
- ansible 并发设置_如何使用Ansible通过Prometheus设置系统监视
- 第3章 java的基本程序设计结构
- go语言项目目录文件的管理样式
- wordpress获取home_wordpress各种获取路径和URl地址的函数总结
- 双网口工业路由器 网络传输层的“常青树”
- 银行开发专业术语解释和银行系统开发架构的设计思想
- 混合线性模型笔记2:概念解释
- 人人都是产品经理2.0-04章摘要
- 学生学籍系统 按班级查找按学号查找
- Unity3d中最简单物体的旋转移动
- 将一个整数分解为质数的乘积
- 更改iTunes(macOS下)备份路径至移动硬盘
- 内网渗透之跨路由访问
热门文章
- mysql并发参数查看_MySQL Innodb 并发涉及参数
- 错误 对‘pcl::console::print(pcl::console::VERBOSITY_LEVEL, char const*, ...)’未定义的引用
- E9流程表单中动态自定义添加button js代码
- 郑大网教育计算机2017,2017郑大计算机操作系统(计算机).docx
- Spring Data JPA 条件查询 分页查询
- vue状态管理存取数据_Vue中的数据通信和状态管理
- 文本编辑器查看 cprintf颜色_做生信,你需要一款好用的文本编辑器
- LeetCode 435. 无重叠区间(贪婪算法)
- mysql text类型效率_mysql使用笔记:vachar,char,text比较
- 【转】TIOBE 12 月排行榜:古老的 C 和后起之秀 Kotlin,谁是年度编程语言之王?...