一些关于面向对象的思考

Python是一门神奇的语言,看了看里面一些关于面向对象的描述。觉得挺受启发的,在C++中同样适用。主要观点出自Magnus Lie Hetland的《Python基础教程》。

1 将属于一类的对象放在一起。如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法出现。

2 不要让对象过于亲密。方法应该只关心自己实例的特性。让其他实例管理自己的状态。

3 要小心继承,尤其多重继承。继承机制很有用,但也会在某些情况下让事情变得过于复杂。尤其多重继承,更难以调试。

4 简单就好。让你的方法小巧。一般来说,多数方法都应该在30秒内读完,尽量将代码行数控制在一页或一屏之内。

当考虑需要什么类以及什么方法时,应尝试下面的方法。

(1)写下问题的描述(程序要做什么),把所有名词、动词和形容词加下划线。

(2)对于所有名词,用作可能的类。

(3)对于所有动词,用作可能的方法。

(4)对于所有的形容词,用作可能的特性。

(5)把所有方法和特性分配到类。

现在已经有了面向对象模型的草图了。还可以考虑类和对象之间的关系以及他们的作用,可以使用以下步骤精炼模型:

(1)写下一系列的使用实例,也就是的程序应用时的场景,试着包括所有的功能。

(2)一步步考虑每个使用实例,保证模型包括所有需要的东西。如果有些遗漏的话就添加进来。如果某处不太正确则改进。继续,直到满意为止。

但认为已经有了可以应用的模型时,那就可以开工了。

时间: 2024-09-28 14:56:40

一些关于面向对象的思考的相关文章

面向对象的思考

面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法. 案例是最好理解的,下面通过几个案例来说明: 1.人在黑板上画圆 通过这一句话很容易想到这几个对象 person,blackboard,circle,接下来就是画圆draw()这个方法的描述应该设计在哪个类身上呢? 要想画出一个圆出来,我们得知道圆心和半径,而这两个数据是圆的,画圆这个方法要操作圆心和半径这两个数据,根据我一开始的准则,这个方法应该设计成是圆提供的. 2.列车司机紧急刹车 思考:紧急刹车这个方法应该被设计

1.5 面向对象的思考方式

观察到的一切都是对象--面向对象的思考方式 定义 在对世界/系统进行观察/建模的时候,把它们看成一系列相互交流.互为影响的对象集(a set of objects) 世界是由相互作用的对象组成的 描述与构建由对象组成的系统 软件开发常规的两种思维方式:,面向对象和面向过程 OO strategy 适合解决不确定的时间,创新性的事件--------------------篮球赛 Structured Strategy 处理已知的事实,重要的条件都已知的场景---------------------

面向对象的思考过程

第1章 面向对象的概念简介 1.1 基本概念 1.2 对象及遗留系统 1.3 过程式编程与面向对象编程 1.4 由面向过程开发过渡道面向对象开发 1.4.1 过程式编程 1.4.2 面向对象编程 1.5 究竟什么是对象 1.5.1 对象数据 1.5.2 对象行为 1.6 究竟什么是类 1.6.1 创建对象 1.6.2 属性 1.6.3 方法 1.6.4 消息 1.7 使用类图作为可视化工具 1.8 封装和数据隐藏 1.8.1 接口 1.8.2 实现 1.8.3 接口/实现范式的一个真实示例 1.

关于面向对象的一些思考

适才在写python程序,写一个对象的集合容器类,纠结要不要实现迭代器方法来允许for in语句.突然发现,for a in obj和for a in obj.l 给人很大的不同感.我并没有一下子得到明确的思绪(这也不构成问题,仅仅是一个"问题"),想到在哲学群里的争论和一些以前的思考,决定写一篇博客. 其实写到这里,我已经有些思路了,那就是python不隐藏属性,做不到很好的封装--不过更多地,我也没有刻意区分过"状态"和"属性"(也许&quo

【原】Java学习笔记014 - 面向对象

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 面向对象思想 6 7 // 回顾编程语言思想进化之路:从面向过程到面向对象 8 9 // 面向过程 10 // 举例: 11 // 1.冰箱门打开 12 // 2.大象放进去 13 // 3.冰箱门关上 14 // [面向过程的思路的着眼点在于动作的功能,思考打开.放入.关闭均为动作] 15 16

java基础学习笔记汇总之面向对象

面向对象的概述: 举例装大象到冰箱.而谈面向对象,就一定要说说面向过程. 面向过程:打开冰箱,装入大象,关上冰箱.这三步就是面向过程的思考方式,这种思想强调的是过程,也可以叫做动作.在C中是这种方式 面向对象:冰箱打开,冰箱存储,冰箱关闭.这就是面向对象的思考方式,这种方式强调是对象,也可以说是实例.在java,C++,C#中使用. 面向对象的特点 1.面向对象的思想符合人们惯有的思考方式. 2.面向对象的出现,将问题简单化 3.面向对象将过程中的执行者,变成了对象的指挥者. 类和对象的关系:

黑马程序员--java基础--面向对象

------- android培训.java培训.期待与您交流! ---------- 面向对象的概述: 举例装大象到冰箱.而谈面向对象,就一定要说说面向过程. 面向过程:打开冰箱,装入大象,关上冰箱.这三步就是面向过程的思考方式,这种思想强调的是过程,也可以叫做动作.在C中是这种方式 面向对象:冰箱打开,冰箱存储,冰箱关闭.这就是面向对象的思考方式,这种方式强调是对象,也可以说是实例.在java,C++,C#中使用. 面向对象的特点 1.面向对象的思想符合人们惯有的思考方式. 2.面向对象的出

Java学习总结(三)——面向对象(上)

Java学习总结(三) -面向对象(上) 一.面向对象的概念及思考方式 面向对象的理解:是一种编程思想,他将对象作为解决问题的基本元素,利用对象与对象之间的相互作用来设计程序. 2.面向对象的思考方式:(1)首先确定问题域中的对象 (2)确定对象的特征与功能 (3)了解对象与对象之间的关系 例:设计一个五子棋游戏的对象:·黑白双方对象     ·绘制棋盘     ·输赢规则 二.类与对象 1.对象:用来描述客观事物的一个实体,由一组属性和行为构成. 2.类:(1)是一个模板,他描述一类对象的行为

Java学习 · 初识 面向对象基础一

面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决复杂问题时,通过面向对象的方式把握事物之间复杂的关系,方便分析整个系统:具体到微观时,仍然使用面向过程设计. 以开车为例,面向过程中思考 有一辆车 驾驶员上车 挂挡踩离合 车开动 而面向对象中思考 有车.驾驶员这两个个对象 车拥有挂挡离合这几个方法(还拥有属性,如性能外观) 人拥有挂挡踩离合这几个方