抄代码DAY13

今天是对最近十天代码的一个总结。

1.面向对象和面向过程的区别:

面向过程就是按照自己的逻辑思路把问题梳理清楚,一步一步的去解决这个问题,是为了解决这个问题才去设计的一个个函数,在解决问题的时候一个个调用函数。
面向对象是把构成问题的每个组成部分理解为一个一个的对象,建立对象的目的也不是为了完成某一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。利用各个对象之间的接口让他们互相有关系。

在此我借用别人的一个例子:

例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。
而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

例子引用自:

浅谈面向对象与面向过程_xiaoyuaifuxiao的博客-CSDN博客(一)何为面向对象,何为面向过程?面向对象指的是将数据和对数据的操作放在一起,作为一个整体,即对同类对象抽象出其共性,这件事情通过类来实现。通俗地来理解,即一个类是一户人家,这户人家有自己的家庭成员,有自己家里要做的事情。每家每户都提供一个窗户-----接口来进行邻里间的交往。面向过程是以事件为中心的开发方法,即自顶向下顺序执行,其程序结构是按照功能划分成若干个模块,这些模块构成一个树状结https://blog.csdn.net/xiaoyuaifuxiao/article/details/63262518?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164670762416780357258505%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164670762416780357258505&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-63262518.article_score_rank&utm_term=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E4%B8%8E%E9%9D%A2%E5%90%91%E8%BF%87%E7%A8%8B&spm=1018.2226.3001.4187

2.比较顺序表和链表的异同和优缺点

同:都是线性表;都可以进行增删改查的基本操作。

不同:顺序表的空间利用率较高,存储单元是连续的,链表则较低;

顺序表可以支持随机访问,链表不支持;

顺序表的增删操作需要移动大量的元素,时间复杂度高,而链表不会。

所以这决定了两种存储方式使用条件的不同。顺序表适用于高效存储和适合随机访问的情景,而链表适合在经常进行删除和插入操作的情景。

优缺点:链表释放和申请内存空间是动态的,顺序表无法实现这一点。而顺序表不用另外开辟空间作为指针,而链表则需要。

3.分析链队列与循环队列的优缺点

​ 循环队列使用的顺序存储,链队列使用的链式存储。就相应的自带了各自的特点。链队相比顺序队列,元素出队时不需要大量的移动现有节点,移动队头指针即可;链队相比需要增加一些额外的存储空间。

循环队列申请的空间是永久的,可以一直使用。而链队列是系统分配的。

循环队列的存储空间大小一旦确定了就不做更改了,而链队列可以动态的增加或减少。

4.分析调拭程序常见的问题及解决方案

其实遇到的大多数系问题通过eclipse自带的调试都可以解决。

5.第 18 天建立的两个队列, 其区别仅在于基础数据不同, 一个是 int, 一个是 char. 按这种思路, 对于不同的基础数据类型, 都需要重写一个类, 这样合理吗?

我觉得不合理。这样写真的太麻烦了。面向对象就是为了方便一些,从面向对象的逻辑来看,可以创建一个类,每次改写其一部分。(这方面我也不太理解,我觉得我应该再学习学习)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值