C++程序设计课程师生互动(2012年春第13周)

简介: 【本周感言——一点牢骚】   一些同学的状态还没有恢复。实际上,状态好的仍然保持,状态差的有持续下滑的趋势。结合期中测验的结果,如果有些同学还不改善状态,我真不看好了。近期的时间比春假前要松一些了,但完成的任务却少了。一直处于“赶上来”阶段的同学,每周的任务不去全部完成,跟不住,谈何赶上来。不少同学已经有了属于自己的电脑,是否用于学习,自己知道。反倒是,编程很疯狂的几位,依赖的仅是公共机

【本周感言——一点牢骚】

  一些同学的状态还没有恢复。实际上,状态好的仍然保持,状态差的有持续下滑的趋势。结合期中测验的结果,如果有些同学还不改善状态,我真不看好了。近期的时间比春假前要松一些了,但完成的任务却少了。一直处于“赶上来”阶段的同学,每周的任务不去全部完成,跟不住,谈何赶上来。不少同学已经有了属于自己的电脑,是否用于学习,自己知道。反倒是,编程很疯狂的几位,依赖的仅是公共机房。

  某天,下课后,几位同学站在路口,商量去哪。有一位提议:“去烟大市场吧。” 我知道了,那个地方有何吸引人的场所。


【本周重复最多的一条留言:天下的老鼠都叫Jerry吗?】

  其实对于这些同学,天下的猫还都叫Tom,……因为,形如 void Mouse::cry() const {cout<<"我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!"<<endl;}的定义,使定义的name数据成员全然失去了其意义。出题时,main()函数中再放进来一只老鼠或许就好了,但这不是办法,同学们的思维得往上靠呀,不能只图着main()函数示例的输出是那么个样子就完事。


【本周意想不到了养眼图片】我给CaoYang同学留言:你真能想得出——黑框框的艺术照。




【形象理解】

  • 抽象积累(基类)就像大将军,扛枪打仗的事交给士兵们,留给自己的只有作战框架。。。
  • 抽象类中的纯虚函数就像是一个空瓶子,在派生类中给它装什么就是什么;【空瓶子——好比喻。】
  • 多态性是“一个接口,多种方法”。就像一个四合院有一个大门,但是有多户人家,过着各家的生活!抽象类是派生类的“老爸”!
  • 抽象类就像个母亲,只要子类需要就提供方便。用指向基类的指针访问成员函数时,一定记得定义对象,在这个地方出错可倒霉。。。【有人还说:抽象类是派生类的“老爸”!】
  • Vehicle类为纯虚函数,纯虚函数没有函数体,不能实例化,所以用对象引用时会出错。(人家是老大,不能给你单独开小灶。。。)
  • 虚函数方便了指针对派生类的访问,多态性是指一个函数可以有不同的功能,抽象类就像是一个原件,为了派生类定义方便提供一个原件。
  • 对于抽象类与多态性的应用,老鼠,猫,狗,长颈鹿是 动物的 衍生。
  • 尽管“形状”没有具体的面积,但他当上了圆、矩形的头。【好玩的感悟。】
  • 仅仅是一点对于抽象类与多态性的应用,没有难度,但可以加深理解,其实抽象啊,在动物界,抽象类是动物物种,说起动物你只是一个泛泛的名词,并不特指某一种,而实际的每一种动物又属于动物的衍生,因此很好的抽象。
  • 抽象类可以把它看成是我们建房子时候的设计图,通过这些设计图,工人去实现房屋的建造。抽象类有时看似可有可无,但是也正是这些抽象类,给我们编写的每一个类都赋予了他们现实的意义,为他们之间建立了关系,总的来说就是让这些类看起来更像个对象。【有一腚道理。】
  • 通过这几个任务,我对抽象基类函数的理解,抽象基类函数不作为实类只是作为一个纽带把它的派生类连接起来使用。
  • 好一个抽象基类呀!!
  • 【累的功能是能休息了。——学生写了错别字。】
【专业知识总结】
  •  void Mouse:: cry() const {cout<<"我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!"<<endl;}【天下的老鼠都叫Jerry吗?】
  • Mouse::Mouse(string name)  {this->name = name; }【数据成员是基类的,派生类的构造函数调用基类的更佳。】
  • 老师这些地方 virtual double area()  const = 0;   有必要都加上const  吗???有神吗 意义呢?【const 和纯虚函数无关,其作用是函数内不能更改成员的值,见前面的内容。】
  • 虚函数的出现,解决了无法通过基类指针去调用派生类对象中的成员函数的限制,这种功能市非常实用的。
  • 最近做任务老是先把函数在类里面定义好···等完成程序运行无错后在将函数转到类外定义···貌似之前有的程序未在类外定义啊···
  • 将公有数据在父类中定义减少了子类代码,增加了代码的复用; 将父类定义为纯虚基类,将其作为一个接口凡是其子类都必须具备此功能, 并复用。 【总结中已经是透出了Java的味道。】
  • 抽象基类一定不要忘了使用const,而且const每一步都要紧随其后!【const不是必须!关键有=0即可。】
  • 抽象基类不必要定义对象也不能定义对象!派生类的构造函数要细心想一想,有门道哟!
  • 虚函数实际上是扩充了函数的功能,通过虚函数和指针的配合,可以方便的调用类族中的函数。
  • 看其他同学的博文,发现用this 指针,才想起在上技术课时,老师要求我们以后 定义成员函数的时候,用this 指针。Mouse(string name){this->name = name;}  就不用再重新定义一个变量名了,时间久了就不知道 i 、n 代表啥了。
  • 1.当一个函数被声明称虚函数时,其派生类中的同名函数都变成虚函数;2.虚函数只能用于类的继承层次结构中;
  • 派生类是不能访问基类的私有成员的,要用protected, 不能用private。【老革命的老问题。】
  • 纯虚函数是不能被调用的,包含纯虚函数的类无法建立对象。虚函数定义在基类中,其作用是允许在它的派生类中重新定义同名函数,在类外访问时可以通过指向基类的指针去访问派生类中的同名函数。
  • 虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
  • 使用基类指针来控制有关对象,不管对象在继承层次的那一层,都可以用基类指针指向它。
  • (1)纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对他进行定义。如果在基类中没有保留函数名,则无法实现多态性。(2)因为纯虚函数是不能被调用的,所以包含纯虚函数的类是无法建立对象的。(3)虽然抽象类不能定义对象(或者说抽象类不能实例化),但是可以定义指向抽象类数据的指针变量。如Animal *pt;
  • 如果在抽象类所派生出的新类中对基类的所有纯虚数进行了定义,那么这些函数就被赋予了功能,可以被调用.
  • 在定义基类时就把保护数据成员name定义了,在派生类中就不用再重新定义,可直接访问...
  • 虚函数解决了在同一个类中定义两个名字相同,参数个数和类型相同的函数的问题。【要强调同一“类族”中】
  • 将自己做的和老师的一比才知道,自己在定义变量时用的符号有问题,自己能看懂,别人就不一定看懂,如h和height.
  • 感觉有虚函数倒是挺好的 ,只要有命令,同名函数就会做出不同的反应,比分别定义各自的函数效率提高了很多。。。
  • 利用虚函数可以实现和重载函数同样的功能,但是这二者的实现方式是完全不同的,重载函数是在函数返回值类型或者形参的类型个数存在不同的,而用虚函数用完全相同的函数体首部的,可以通过不同对象的指针调用该函数!  
  • 抽象类是没有被具体化的类,它不能定义对象但是可以定义只想抽象类数据的指针变量!抽象类是在后来的派生类中被具体化的!
  • 既然Animal不需要实例化,完全可以将Animal定义为纯虚函数,这样就可以了,以后的派生类也可以单独定义并引用重名的函数了
  • 将抽象类Animal数据成员被各个派生类使用的时候,要把此数据成员定义为public型的,只有定义为public型的,派生类才能访问此数据成员。。。。。【protected用来干什么用呢?】
  • 通过1和2的比较,我发现使用虚函数可以通过指向基类的的指针灵活的访问派生类中的同名成员函数。(这条的专业性是参考了一下雷同学的,我自己的表达不是很清楚)【设法表达清楚。能用术语讲,是又一个层次。到时候了……】
【学习心得】
  • 有了之前那几个任务做铺垫~最后这个也没有什么障碍~完成的挺顺利~
  • 一开始不理解,忘记写上 const , 结果老出错误···后来好不容易发现···就又觉得自己好傻了···
  • 做这个程序时没有遇到什么鸭梨···用尹鹏学长的一句话“好HAPPY哦~”呵呵···
  • 一开始不太理解虚函数···做完这个任务时有点头绪了呢~【这就是学习过程。】
  • 将程序分解你会感到程序并不太难!而且会很好玩!一级一级的写下去!
  • 通过前边3个函数的对比,对纯虚函数有了更深的了解。【习惯对比,这是学习的基本手段。】
  • 这个程序由基类派生出3个类,在完成时每个类时测试一下,这样可以事半功倍。【是否可称为积木式开发?】
  • 在编写有多个类构成的程序时,最好实现好一个类就测试一下它的正确与否。【有人与你有同感。】
  • 很快完成了任务,真好!!要是每次都这样多好  
  • 虽然这个任务是照着老师的做的,但是我想这也是一种进步,确实也学到了不少东西,还是要学会举一反三的!加油吧!!
  • 这周的题思路很清晰。比较容易完成。
  • 自己做出来的就是爽啊。一定要理解课本上的概念,不要死记,灵活运用。【知识永远是鲜活的,只是有人将其学死了。】
  • 头疼的抽象类啊。。【抽象类不头疼,你想疼就疼,攻克了,就永不疼了。】
  • 这应该就属于“趁热打铁,现学现卖”了吧!!我感觉今天这节课听得还可以,就上机尝试了一下,任务一做的很顺利,任务二在定义构造函数的时候出了点问题,致使编译通不过。。。。哎,课下还得继续读课本,分析代码,不能学了后面忘了前面啊,得做到深刻理解。。。。。
【徐同学专栏】
  • 从实验1.1到实验1.2最后到实验1.3,老师真的是良苦用心啊,从实验1.1指向基类的指针无法访问到派生类的数据一步一步让我们体会虚函数的作用:虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类的指针或引用来访问基类和派生类中的同名函数,最后到纯虚函数,为派生类保留一个函数的名字,以便派生类根据需要对它进行定义。【学会我的这种设计,当你学习新东西时,如果内容太多或太抽象,这是逐步深入的办法。】
  • 实验的第一问还是挺简单的,在老师给的代码的基础上,主要是根据主函数,添加代码就可以了,单纯的虚函数罢了,看好课本相关章节,这个问题真的挺简单的,第二个实验是在第一问的基础上进行改造,将基类改为抽象类,也只是进行略微的修改,注意在派生类里面对纯虚函数进行再定义就是了,其他照搬问题一就好了,至于实验三,看来老师真的是很有心思,还刻意在实验中想方设法的给我们机会回顾以前的知识,只需根据要求,在基函数中增加数据成员,在派生类中继承就可以了,这也是以前做过的问题,看就看你能不能想到喽!
  • 感觉还好吧!应该说好像并不难,相比之下,怎么似乎还没有前两个问题花费的时间长,因为,只考察了单一的抽象函数,没有涉及其他的什么新知识,要说有点陌生的,也就是定义的基类指针数组和最后的求和吧,当然说陌生有的是因为没怎么见过或者是用过,但是老师给出来了,也是一看就懂的动心,有的是因为好久没用的缘故,想想也就行了,真的,挺简单的问题都是。
  • 嗯~整体代码和实验三十分的类似,大体的思路也和实验三有异曲同工之感,编写上,也感觉像是在写实验三的翻版,只是,唯一的不同就在于最后的输出上,略有不同,其他的嘛~真的,没什么区别了吧,也是再考察抽象类,也是单一的抽象类,当然啊,换句话说,实验三会做了,实验四应该也不是问题吧,也是比较简单的题目,也花不了多少时间就可以搞定!

【齐同学的理解】
  • 这个结果和我之前预测的一样,对于虚函数的理解我有自己的看法:那就是我和你不一样,你可以套用我的,还可以增加你的,而我不变我就是我!这个和老贺说的拿东西原理一样。
    而多态性:书上说是面向对象程序设计的一个重要特征。这个可以设计和实现易于扩展的系统。这好比每个人有每个人得责任,这里还有一个主管,每个人都要做好自己的责任,完成主管分配的任务,比较系统化。
    抽象类:不用来定义对象而只作为一种基本类型用作继承的类,又叫抽象基类,而他的作用就是提供公共接口,他是一个类族的共同基类,或者说为一个类族提供公共接口,作用都很大啊!【真正的自己的话。】
  • 这三个小程序却涵盖了三个内容,(1)设计相关的类:将基类派生类结合复习,派生类继承基类的内容,形式等,(2)设计基类为抽象类,此时程序中基类必须含有一个纯虚函数,才能构成抽象类,因此设计了:virtual void cry() const =0;(3)要节省时间资源,将基类中数据成员能被每一个派生类使用因此设计:
    protected:  
            string name;
    构造函数:Animal(string n):name(n){} 
    而派生类中则应声明:
    动物名称+(string n):Animal(n){},此时减少了每个派生类中都要声明的数据成员的必要····
  • 事实证明有条理的来,都可以做得到,将程序大化小,逐步求精:(1)先设计出基类CSolid,并且是抽象类,其中包含的成员函数是表面积和体积,不包含数据成员,接着是设计派生类,共三个,先将类设计出,然后三个立方体的表面积体积根据公式,利用数据成员求出,实现类即定义类,三个逐个实现后在进行main函数,其中要求:定义基类指针p(CSolid *p),在前面程序中已涉及过此方法,因此写出main函数,实现整个类的过程·····【水平嘛,说来就来了……】
【老贺语录】
  • 这周才提交1个,太小气了。

目录
相关文章
|
1月前
|
存储 C++ 开发者
C++程序设计基础:构建稳固的编程基石
C++程序设计基础:构建稳固的编程基石
23 1
|
30天前
|
存储 算法 搜索推荐
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(二)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
94 2
|
30天前
|
存储 算法 C++
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(一)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
51 2
|
1月前
|
C++
C++程序设计:探索函数与模块化的魅力
C++程序设计:探索函数与模块化的魅力
15 0
|
2月前
|
存储 数据安全/隐私保护 C++
基于C++的面向对象程序设计:类与对象的深入剖析
基于C++的面向对象程序设计:类与对象的深入剖析
41 1
|
4月前
|
C++
C++程序设计—类与对象
C++程序设计—类与对象
40 0
|
4月前
|
程序员 C++
C++程序设计函数部分(定义+实例)
C++程序设计函数部分(定义+实例)
40 0
|
5月前
|
存储 C++
C++面向对象语言程序设计期末实验
C++面向对象语言程序设计期末实验
38 0
|
3天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
3天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0

热门文章

最新文章