以下是老猿在学习《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. (软件工程复习核心重点)第十章面向对象设计-第一节:面向对象设计的基本概念与准则

    文章目录 一:面向对象设计概念 (1)定义 (2)设计与分析的关系 (3)分类 二:面向对象的设计准则 (1)模块化 (2)抽象 (3)信息隐藏 (4)低耦合 A:交互耦合 B:继承耦合 (5)高内聚 ...

  2. (软件工程复习核心重点)第十章面向对象设计-第四节:设计人机交互子系统和设计任务管理子系统

    文章目录 一:设计人机交互子系统 (1)概念 A:主要内容 B:重要性 (2)设计策略 A:分类用户 B:描述用户 C:设计命令层次 ①:研究现有的人机交互含义和准则 ②:确定初始的命令层次 ③:精化 ...

  3. 谈谈8年C++面向对象设计的经验体会

    六年前,我刚热恋"面向对象"(Object-Oriented)时,一口气记住了近十个定义.六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是"面向对象 ...

  4. C语言的面向对象设计-对X264/FFMPEG架构探讨

    本文贡献给ZSVC开源社区(https://sourceforge.net/projects/zsvc/),他们是来自于中国各高校的年轻学子,是满怀激情与梦想的人,他们将用自己的勤劳与智慧在世界开源软 ...

  5. 深入PHP面向对象、模式与实践读书笔记:面向对象设计和过程式编程

    注:本文内容来<<深入PHP面向对象.模式与实践>>中6.2节. 6.2 面向对象设计与过程式编程   面向对象设计和过程式编程有什么不同呢?可能有些人认为最大的不同在于面向对 ...

  6. uml 时序图_面向对象设计与统一建模语言UML

    面向对象设计 自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来. 首先要提出一个问题,就是设计的工作是要做什么? 它包括的范围其实是很广泛的,从搜集用 ...

  7. C语言的面向对象设计 —— 对 X264/FFMPEG 架构探讨

    类似题目的文章已经不新鲜了,这里,我仅仅总结自己的一些代码经验,结合两款在视频开发领域比较常用的开源软件探讨C语言的应用问题. 1.为什么要用C语言 曾几何时,我也不熟悉C,最早接触C的是在大学四年级 ...

  8. 设计模式-合成复用原则-》面向对象设计原则

    合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚 ...

  9. [软件工程] 面向对象设计

    面向对象设计 面向对象设计 一. 面向对象设计的准则 (一) 模块化 (二) 抽象 (三) 信息隐藏 (四) 弱耦合 对象之间的耦合可分为两大类: (1) 交互耦合 (2) 继承耦合 (五)强内聚 ( ...

最新文章

  1. WCF从理论到实践(15):响应变化
  2. libxml解析的attributes参数理解
  3. 家校通Android源码,基于Android的家校通系统设计与实现
  4. 最小代价生成树Prim/Kruskal(c/c++)
  5. SQLServer2014 安装错误:等待数据库引擎恢复句柄失败
  6. mongodb用户管理简单记录
  7. 20个python代码_有用的20个python代码段(4)
  8. Form表单基础知识和常用兼容方法笔记(二)
  9. java将date类型转成yyyymmdd_java中的Date怎么转换成YYYYMMDD形式?
  10. python读取大文件的坑_Python读取大文件的坑“与内存占用检测
  11. mysql左外连接条件_mysql – 左外连接的MAX条件
  12. Ceylon 1.0.0
  13. Vue- Markdown 使用大全
  14. mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云
  15. 学习JSP大学实用教程
  16. 在EXCEL中生成服从三角分布随机数的方法
  17. 技术日记2021/2/12 “牛气飞天”恶作剧
  18. (Linux目录操作命令)零基础小白学习_入门到精通03 程序员阿沐
  19. windows 修改密码 在计算机管理中,管理员如何在Windows 10中更改其他用户的密码...
  20. axurerp出现错误报告_Windows 应用程序无法安装 事件查看器报错

热门文章

  1. 用Matlab读取、显示并保存图片
  2. Matlab 自编雅可比矩阵 (jacobi) 函数与官方的Jacobian matrix(雅可比矩阵)函数对比及创新
  3. Spring—xml和注解
  4. background:rgba()
  5. 【服务器】vim使用
  6. 管程模型解决并发编程
  7. Nginx配置详情-配置说明-参数优化(一)
  8. 荒野白茶特点及口感如何
  9. 【模式识别1】PCA+FLD人脸识别
  10. windows下启动redis命令(笔记)