程序设计心得

                          面向对象程序设计心得

      关于经历,从之前做地通讯录和ATM模拟,到这几周做了几份不同版本的图书馆管理系统,可以说也有一些写系统的思路,知识也不断的丰富着。在这些系统的设计中,遇到过许多设计性问题与知识性问题,有时真的是令人头昏脑大啊!但我也是那种死磕到底的人,思路无法实现,便换思路。知识欠缺于是通过翻课本、课件、查CSDN,总之想方设法的去学习。其实最令我感到惬意或者感兴趣的是思考如何设计一个程序,就是如何构建对象,如何对对象通过函数操作实现功能,怎么组合与继承,就好像设计一座建筑,可以肆意的去构造自己城堡,哈哈!有时上自习的时候突然有了思路,就会写下来等到晚上会宿舍疯狂敲码,也喜欢在夜深人静同时头脑清醒的时候去思考刚打过代码的可行性,或者思路是否合理,或者有没有更好的方案。

      关于心得或者说经验,主要在下面具体设计和知识等方面:

  1. 数据类与操作类的的区别与分离,数据类提供对象的属性,函数主要为get、set、以及重载输入输出,重载小于号,方便置入map的键值,数据类可以自定义一些方便的重载。操作类包含自定义数据类对象的集合,通常用向量表示,通过关键字作为键值与下标关联,方便同时快捷的查找,操作类的构造函数与析构函数可以分别可以执行下载与保存操作,重要的是操作类的函数,是类对外的接口,要确保每一步都合理。对于一些简单的类,没必要的情况下可以不分离,写在一个类中,这样可以”变量.”的形式使用。
  2. 类的构造与析构,构造函数一定要写一个含参和不含参的,不含参的在定义多个类变量同时不必再填写初始化数据,含参可以快速的初始化变量,同时构造函数可以包含一些语句与函数,比如默认密码可以截取id的后几位,或者用户登录操作,以及数据上传。析构函数的话用的不多,主要还是保存文件。
  3. Multimap与vector联合使用,对于数据量较大的类,将其置入value,需占用较大的空间,效率低,可以通过查询关键字与下标关联,修改通过multimap查找到,然后修改vector,(有时连同multimap也需修改,删除再置入),增加两者都增,需要重点写的是删除,这里有两种方式,一是,只在multimap中修改,与之同步的是要在保存时,通过multimap遍历保存,实现虚删,效率高、操作简单,个人比较喜欢使用。还有就是重建multimap,因为删除某个vector元素,导致其后顺序全变,部分multimap关联的出错,需要将出错的重建,实现比较繁琐复杂,不建议使用。
  4. 重载,对于重载,对于自定义类型变量无法像内置类型那样,进行运算与输入,重载就帮了大忙,定义友元重载输入输出,cin>>变量、cout<<变量,简单暴力。重载小于号,重载加、减号都很好用,但是不要滥用!!!
  5. 文件的输入与输出,现在会使用的只有 freopen、ifstream和ofstream 两种,打开文件,可以显试、具体的输入到某个变量后者方便,freopen重定向使加下来的输入输出全部指向文件,也就是可以跨不受函数限制,需要注意的是使用完记得返回控制台。
  6. 组合与继承,是面向程序设计一大问题!主要需要用到一个类的数据时,使用组合;主要用到一个类的功能函数时,用继承;即用到数据,又用到功能时,可以在基类中定义完整功函数,将它继承过来。在设计程序的时候,需要用到一个类的数据并形成一个向量或者集合时,一般将它定义好函数功能,使用组合,然后通过变量名引用功能。继承有时过于繁琐,并且可能出现隐藏的BUG,个人更喜欢使用组合。
  7. 多态,对于多态还没有打出过完整的代码,不过最近想了想12306,管理端和用户端如何使用多态,可以定义一个基类,包含管理端和用户端的所有操作,但定义为纯虚函数,通过基类指针使用来达到多态的目的。还有动态连编,可以让用户端不去继承火车操作端,同时管理员在可以实现用户端所有操作,就是管理员帮助用户买票,就像窗口一样,但需要登录用户,又与用户端的功能实现不同,动态连编可能能帮助实现,还是再想想吧!

       关于自己的不足,在知识方面,许多知识都为涉及,许多学过的知识因为没使用过渐渐的忘了,还有就是自己写代码的时候总是出现一些调试出错却能一眼看出的毛病,stupid error还是要少犯!!!总之学习的路还很长,希望这次课程设计能够收获颇丰。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值