第7.2节 关于面向对象设计的一些思考
以下是老猿在学习《Python基础教程》第3版(Magnus Lie Hetland著,袁国忠译)过程中记录的一些笔记,老猿觉得这些理念非常好,因此总结出来供大家共享:
1. 将相关的东西放在一起。如果一个函数操作一个全局变量,最好将它们作为一个类的属性和方法;
2. 不要让对象之间过于亲密。方法应只关心其所属实例的属性,对于其他实例的状态,让它们自己去管理就好了;
3. 慎用继承、尤其是多重继承。继承有时很有用,但在有些情况下可能带来不必要的复杂性。要正确地使用多重继承很难,要排除其中的bug更难;
4. 保持简单。让方法短小紧凑。一般而言,应确保大多数方法都能在30秒内读完并理解
5. 对于其余的方法,尽可能将其篇幅控制在一页或一屏内。
确定需要哪些类以及这些类应包含哪些方法时,尝试像下面这样做(老猿认为,下面这些思想有点敏捷开发的味道):
1. 将有关问题的描述(程序需要做什么)记录下来,并给所有的名词、动词和形容词加上标记;
2. 在名词中找出可能的类,在动词中找出可能的方法,在形容词中找出可能的属性。将找出的方法和属性分配给各个类;
3. 有了面向对象模型的草图后,还需考虑类和对象之间的关系(如继承或协作)以及它们的职责。为进一步改进模型,可像下面这样做。
1) 记录(或设想)一系列用例,即使用程序的场景,并尽力确保这些用例涵盖了所有的功能。
2) 透彻而仔细地考虑每个场景,确保模型包含了所需的一切。如果有遗漏,就加上;如果
3) 有不太对的地方,就修改。不断地重复这个过程,直到对模型满意为止。
4) 有了你认为行之有效的模型后,就可以着手编写程序了。你很可能需要修改模型或程序的某些部分,所幸这在Python中很容易,请不用担心。只管按这里说的去做就好
老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
欢迎大家批评指正,谢谢大家关注!
第7.2节 关于面向对象设计的一些思考相关推荐
- (软件工程复习核心重点)第十章面向对象设计-第一节:面向对象设计的基本概念与准则
文章目录 一:面向对象设计概念 (1)定义 (2)设计与分析的关系 (3)分类 二:面向对象的设计准则 (1)模块化 (2)抽象 (3)信息隐藏 (4)低耦合 A:交互耦合 B:继承耦合 (5)高内聚 ...
- (软件工程复习核心重点)第十章面向对象设计-第四节:设计人机交互子系统和设计任务管理子系统
文章目录 一:设计人机交互子系统 (1)概念 A:主要内容 B:重要性 (2)设计策略 A:分类用户 B:描述用户 C:设计命令层次 ①:研究现有的人机交互含义和准则 ②:确定初始的命令层次 ③:精化 ...
- 谈谈8年C++面向对象设计的经验体会
六年前,我刚热恋"面向对象"(Object-Oriented)时,一口气记住了近十个定义.六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是"面向对象 ...
- C语言的面向对象设计-对X264/FFMPEG架构探讨
本文贡献给ZSVC开源社区(https://sourceforge.net/projects/zsvc/),他们是来自于中国各高校的年轻学子,是满怀激情与梦想的人,他们将用自己的勤劳与智慧在世界开源软 ...
- 深入PHP面向对象、模式与实践读书笔记:面向对象设计和过程式编程
注:本文内容来<<深入PHP面向对象.模式与实践>>中6.2节. 6.2 面向对象设计与过程式编程 面向对象设计和过程式编程有什么不同呢?可能有些人认为最大的不同在于面向对 ...
- uml 时序图_面向对象设计与统一建模语言UML
面向对象设计 自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来. 首先要提出一个问题,就是设计的工作是要做什么? 它包括的范围其实是很广泛的,从搜集用 ...
- C语言的面向对象设计 —— 对 X264/FFMPEG 架构探讨
类似题目的文章已经不新鲜了,这里,我仅仅总结自己的一些代码经验,结合两款在视频开发领域比较常用的开源软件探讨C语言的应用问题. 1.为什么要用C语言 曾几何时,我也不熟悉C,最早接触C的是在大学四年级 ...
- 设计模式-合成复用原则-》面向对象设计原则
合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚 ...
- [软件工程] 面向对象设计
面向对象设计 面向对象设计 一. 面向对象设计的准则 (一) 模块化 (二) 抽象 (三) 信息隐藏 (四) 弱耦合 对象之间的耦合可分为两大类: (1) 交互耦合 (2) 继承耦合 (五)强内聚 ( ...
最新文章
- WCF从理论到实践(15):响应变化
- libxml解析的attributes参数理解
- 家校通Android源码,基于Android的家校通系统设计与实现
- 最小代价生成树Prim/Kruskal(c/c++)
- SQLServer2014 安装错误:等待数据库引擎恢复句柄失败
- mongodb用户管理简单记录
- 20个python代码_有用的20个python代码段(4)
- Form表单基础知识和常用兼容方法笔记(二)
- java将date类型转成yyyymmdd_java中的Date怎么转换成YYYYMMDD形式?
- python读取大文件的坑_Python读取大文件的坑“与内存占用检测
- mysql左外连接条件_mysql – 左外连接的MAX条件
- Ceylon 1.0.0
- Vue- Markdown 使用大全
- mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云
- 学习JSP大学实用教程
- 在EXCEL中生成服从三角分布随机数的方法
- 技术日记2021/2/12 “牛气飞天”恶作剧
- (Linux目录操作命令)零基础小白学习_入门到精通03 程序员阿沐
- windows 修改密码 在计算机管理中,管理员如何在Windows 10中更改其他用户的密码...
- axurerp出现错误报告_Windows 应用程序无法安装 事件查看器报错