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个,太小气了。
时间: 2023-09-26

C++程序设计课程师生互动(2012年春第13周)的相关文章

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

今天看完同学博客比较早,看空间的动态,同学们还在继续上传.从中午开始,不断地有同学上线,赶在19:00之前传完.今天看得比较粗,很多没有写总结的,我数个数也就过去了:对留了言的,由感而发对上两句:有人提出疑问是必定要解答的,甚至代码中的问题可能还需要我调试一下才能发言. 在拳场上,我们有个规矩:当徒弟的,该怎么练就怎么练,时候到了,师傅自然就会指点.徒弟要主动练,要主动接近师傅.谁投入多,在师傅面前表现多,进步快是自然的.用博文提交实验报告,建立起了师生之间交流的一个非常好的途径.尽管一个人要面

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

4班有为数不少的同学已经习惯了不提交任何作品,包括曾经的博文明星. 也许更难了.但这个可能我懂,难不难,要看做不做.不做,永远难:坚持做,没有难的.很多认真学习的同学也告诉我,这不是关键. 也许更忙了.是的,本周的学生活动多.大学生是要投入课外活动的.只是,要补上在知识学习方面的遗漏.多头兼顾,这是大学生应有的生活,会收获很多,然而如果由此放弃核心利益,那就不明智了. 也许是有其他更重要的事,只是有些事让我担忧.不知相关同学是否也忧.可以忧而出位,朝向不忧走去:也有忧而更忧,继续在圈子里打转.

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

最大的感受是,一个五一春假,不少同学的状态似乎下滑.这也正常,我也在从综合症中恢复.下半学期开始了,我们要更加刻苦,为能力提高,顺便更有那个考试,还有,可恶的老贺,要加一次期中测验. 本周的任务中,开摩托比较好玩.理解继承中的一些问题本就不该是难题,经过任务,总体感觉同学们是掌握了.让同学纠结的求直线与圆的交点提醒我们:现在是运用以前掌握知识解决问题的时候了,温故而知新,圣人说得很对. [师生交流] 程序员马虎犹如名厨切菜切手啦![我纠正错别字后,某同学的回复.] 不容易啊~~~~但把五一放假忘

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

第14周出了一次差将上课调整到了周二,给同学们造成了些小混乱.教师的各种事务,和同学们的学习,不可兼得啊.尽管将自己的出差降到最少,但这也真是不可避免. 为了综合运用,也为了将来给专业基础课的学习找些感觉,出的题目是数组类和链表类.预料会难,这也是对同学们的一次考验.以至于,周三晚上在旅馆照例打开同学们的博客看,看完了一个班的,再没有心情继续看下去:没有及时提交的同学太多了.延后一周再看,大部分同学补了上来,但未提交的比例较之前要多. 同学们,继续努力啊.. [学习心得] 拷贝构造函数是个"好函

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

[知识总结] 运算符的重载实质上就是为某一要用的运算符赋予一定的功能,使其实现自己要实现的运算.运算符的重载可读性强! 在实现友元函数时括号内忘了该怎么正确书写,最后出了好多错误啊!不过我感觉它出的值,下次就记住了,不会再犯这样的错误了! 在编写此程序时,要善于利用已实现的运算符功能,此外,要善于利用this指针. 在编写过程中要善于撞错,会有利于自己以后少出错! 为什么在比较大小的时候不能用两个分数直接做差判断是否大于零啊?[你的想法灰常好,可以这样做] 定义了运算符的重载感觉c++的功能更强

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

[关于友元函数] friend函数使两个"人"之间的关系更加密切... 通过这个题目让我学会了友元函数与成员函数以及外部普通函数的区别, 但是友元函数也要谨慎使用. 慎交友. 两个好朋友也不是无限制的,一般不定义友元类,而只是定义几个友元函数,避免产生混乱 论亲缘关系的远近,成员函数>友元函数>一般函数[精辟!] 友元函数太好了,不是成员函数却可以随便访问别人的家,但是也不是无拘无束的,必须的指定对象 有元就是牛,有了通行证,就可以用"私有物品"了,但毕

C++程序设计课程主页-2012级

本课2014级的方案更完整,视频更清晰,请有需求的人士,请移步到---->2014C++ 看贺老师的所有课程的教学资源,就到----->贺利坚教学链接 这门课的主人 教师:贺利坚--为同学设计学习任务的人,为全班学习把握节奏的人,谁不往前走踢谁屁股的人.常混迹CSDN博客和新浪博客,也可以上人人网加我好友,我的<IT学子成长指导>博客专栏,或许有些观点能够对你有用. 学生--计124-3.4班56名同学,一群渴望有美好未来的同学,可能会吃点苦头,但不管是否愿意,将和贺老师一起享受这

利用博客提交作业的程序设计课程实践模式

(本文基于本人近三年来的工作写成,发表于<计算机教育>2014年第18期) 利用博客提交作业的程序设计课程实践模式 贺利坚  卢云宏 (烟台大学 计算机学院,山东 烟台 264005) 摘  要:探讨利用博客提交作业的实践教学模式改革,在合作.模仿.主动投入理念的支持下,保证教学效果,同时也解决了作业抄袭的顽症,在养成习惯等方面给学生带来了更多的机会和额外回报.关键词:程序设计:实践:博客:互联网 0  引  言 计算机类专业程序设计课程的教学改革一直是焦点话题.无论采用案例教学,还是培养抽象

C++程序设计课程主页-2014级

前言 我和我的2014级学生将开始"程序设计基础"课程的学习,学习内容主要是C++程序设计,做本文标题延续前三届的称谓. 将"代码积累看得见"的优势将继续发挥,借助于前三年的积累,再加上新的尝试,期待再有突破. 我们的做法 借助于博客,我们将继续将"积累代码行"的实践进行下去,详见论文<利用博客提交作业的程序设计课程实践模式>. 前三级的课程主页分别是:2011级  2012级 2013级,关于这三个年级的学习情况总结,见 2011级