今天是对最近十天代码的一个总结。
1.面向对象和面向过程的区别:
面向过程就是按照自己的逻辑思路把问题梳理清楚,一步一步的去解决这个问题,是为了解决这个问题才去设计的一个个函数,在解决问题的时候一个个调用函数。
面向对象是把构成问题的每个组成部分理解为一个一个的对象,建立对象的目的也不是为了完成某一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。利用各个对象之间的接口让他们互相有关系。
在此我借用别人的一个例子:
例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。
而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
例子引用自:
2.比较顺序表和链表的异同和优缺点
同:都是线性表;都可以进行增删改查的基本操作。
不同:顺序表的空间利用率较高,存储单元是连续的,链表则较低;
顺序表可以支持随机访问,链表不支持;
顺序表的增删操作需要移动大量的元素,时间复杂度高,而链表不会。
所以这决定了两种存储方式使用条件的不同。顺序表适用于高效存储和适合随机访问的情景,而链表适合在经常进行删除和插入操作的情景。
优缺点:链表释放和申请内存空间是动态的,顺序表无法实现这一点。而顺序表不用另外开辟空间作为指针,而链表则需要。
3.分析链队列与循环队列的优缺点
循环队列使用的顺序存储,链队列使用的链式存储。就相应的自带了各自的特点。链队相比顺序队列,元素出队时不需要大量的移动现有节点,移动队头指针即可;链队相比需要增加一些额外的存储空间。
循环队列申请的空间是永久的,可以一直使用。而链队列是系统分配的。
循环队列的存储空间大小一旦确定了就不做更改了,而链队列可以动态的增加或减少。
4.分析调拭程序常见的问题及解决方案
其实遇到的大多数系问题通过eclipse自带的调试都可以解决。
5.第 18 天建立的两个队列, 其区别仅在于基础数据不同, 一个是 int, 一个是 char. 按这种思路, 对于不同的基础数据类型, 都需要重写一个类, 这样合理吗?
我觉得不合理。这样写真的太麻烦了。面向对象就是为了方便一些,从面向对象的逻辑来看,可以创建一个类,每次改写其一部分。(这方面我也不太理解,我觉得我应该再学习学习)