学友郑*:
我本来学过一点C语言,不过没学深,后悔了。水平很菜,处于面向过程没学好,面向对象又不懂的阶段。我所理解的软件编程,就是用函数拼凑的。以前用VB6.0的时候,只知道双击Button按钮,里面捣鼓点代码进去。现在学.net。面对这么一个末知王国,有点晕。真不知道门在哪里?学了金老师的《.NET 编程语言与面向对象理论基础》继承,接口,多态。有点通了。光记概念很枯燥,学不会。想把哪个“七天”的程序用面向对象的方法写。
现在我用类来重新封装。简单说一下方法:我用一个抽象基类Shape()来抽象所有的图形。抽象基类Shape中定义一个DrawPicture()的抽象方法。其他圆Circle()线段Line()扇形Sector()多边形Polygon()都继承于Shape()类,实现DrawPicture()方法。原来的参数控制类不变DrawArgu(),New对象类的时候可以把DrawArgu()类作为参数传过去。
具体代码贴不下,在我的博客里
http://blog.csdn.net/iceberg2008/archive/2008/12/11/3500596.aspx
这个程序让我思考如下:
1、多态真的不错, sp.DrawPicture()方法在不同的对象中有不同的做法。
2、以后程序扩展只要编写不同的图形类就可以了。而且各个类互不干扰。
3、图形类都继承基类的DrawPicture()方法,使得对外部都可以用
Shape sp=new 图形类(DrawArgu argu);
sp.DrawPicture()
来画具体不同的图形。所以修改起来也很方便,外部几乎不用改,只要修改类里的DrawPicture()方法就行了。
4、图形类不用全部实例化,只要根据基类的DrawShope字段来判断,需要哪个New哪个就行了。
我原来想吧,参数控件类DrawArgu类,并到基类中,可是基类是抽象类,抽象类是不能实例化的,所以基类只有一个抽象方法。
这只是我一点不成熟的想法,还请老师提出意见,对于“七天”的这个绘图程序,怎样用面向对象的方法做好?我这个程序肯定有很多不对的地方,请老师指正!
————————————————————————————————————
回复老师:金旭亮
多态的应用要适可而止。因为多态代码的可读性不太强。一般情况下,只有的确需要动态扩展的部分使用多态,而不太可能变化和扩展的地方还是用最简单最直接的方法实现就行了。面向对象分析与设计理论及软件工程中都有专家指出过“滥用多态”所存在的一些弊端。
对于“七天学会绘图”这个示例,由于是设计来作为教学用的,实在没必要引入多态以增加软件的复杂性。除非你打算开发一个矢量绘图程序,那么,设计一个合理的图形对象继承体系就非常关键了。然而,在.NET下,使用GDI+开发矢量绘图程序又不是必要的了,WPF更适合,WPF拥有一个精心设计的图形类继承体系,你可以看一下,它是如何设计的。如果你想了解多态的应用,在.NET中太多了,随便在MSDN中找一个接口(比如IComparable<>接口),再看看实现这一接口的类,找一些示例代码,你就发现多态的妙用。
.NET Framework本身的设计就有许多可圈可点之处,毕竟是一群全世界一流的人集体开发出来的,是学习的好材料。
另外,要注意各种技术都有最适宜的应用场景,避免用一种你最喜欢的技术去“包打天下”。比如,过去曾有C++的Fans要用C++开发他所遇到的所有程序,津津乐道于C++的强大与灵活,其实,这未免走向了另一个极端。
总之,这种积极探索的精神非常好,许多优秀的软件工程师在他们初始学习技术的阶段其表现都是类似的,呵呵,这些年来我见过一些,这些学生都在日后的工作中表现不错,相信发展也会很好。
呵呵,继续努力啊!
————————————————————————————————————————
乐知学堂.NET专家培练营详情请见xuetang.itcast.net/
分享到:
相关推荐
5. “留面子效应”:在学龄期,张学友关注到孩子的社交行为。当孩子在与其他孩子互动中出现问题,他以理解和尊重的方式处理,让孩子明白行为的后果,同时维护孩子的尊严,避免过度批评,以此促进孩子的自尊心和道德...
- **管理角色认知**:从技术骨干转变为管理者,需要意识到管理不仅是技术技能,更涉及人员管理和团队建设。 - **组织结构与职权**:清晰的组织结构和职权分配有助于避免冲突,促进团队效率。 - **沟通与团队建设*...
《SQL学友:数据库实战与学习的探索之旅》 在当今信息化社会,SQL作为数据库查询语言,已经成为数据处理和分析领域不可或缺的工具。"SQL学友"作为一个专为学习数据库设计的实验系统,旨在提供一个实战化的训练平台...
- 分级教程:从入门到精通,逐步提升难度,满足不同水平的学习者需求。 - 实战案例:结合真实业务场景,提供丰富的实例,加深对SQL概念的理解。 - 自测与评估:内置测试题库,帮助用户检验学习效果,及时发现和...
7. **ASP的生命周期**:理解一个ASP页面从请求到响应的完整过程,包括解析、编译、执行和发送回客户端等步骤。 8. **状态管理**:学习如何使用Session、Application和Cache等机制来管理用户的会话状态和应用程序...
综上所述,这个压缩包提供的资源涵盖了从基础的SWF教程到多媒体制作,包括Photoshop和办公软件的学习资料,对于想要提升相关技能的用户来说是一份宝贵的教育资源。同时,压缩包内的文件提供了可能的运行环境或辅助...
歌神终于出新专辑了,叫“醒着做梦”,小编是学友的忠实粉丝,虽然还没有听到,歌神的新歌,但是找到了这个专辑的歌词,都是LRC格式的,打包,分享给大伙 张学友醒着做梦新专辑歌词包括 我醒着做梦.lrc歌词 白自在....
这款软件的出现,无疑降低了Photoshop的入门门槛,让更多人有机会接触到专业级别的图像编辑工具。 在提供的压缩包文件中,我们看到有以下几个关键文件: 1. `caips60.exe`:这是Photoshop学友版的主要程序文件,...
这是一个用来观看Flash动画的多功能播放软件。本软件对Flash里原有的FlashPla播放器功能上的一些缺点进行了改善和增强,...更多的功能您将会在以后的使用过程中接触到,这样的一款Flash播放器应该还是值得您试一试的。
学习这个示例代码,你可以了解Web前端开发中3D图形的实现,掌握如何将3D模型集成到网页中,并提供互动体验。这对于希望提升Web开发技能,尤其是对3D内容感兴趣的人来说,是一个有价值的实践项目。
《学友平面设计教材》是一本专为平面设计与室内装潢设计初学者精心编写的教程,它旨在帮助读者快速掌握设计基础知识,并熟练运用相关工具进行创作。在本教材中,"PS"标签表明了其重点是教授Adobe Photoshop这一全球...
使用SQL学友软件v4.0,初学者可以依照学习进度,从简单到复杂逐步深入。软件的界面设计简洁直观,用户无需花费太多时间在软件操作上,便可以快速地进入学习状态。同时,对于已经具备一些SQL基础的学习者,软件中的...
内置FTP客户端,可以直接发布和更新网站到远程服务器,简化了网站部署流程。 7. **扩展和插件**: Dreamweaver支持社区开发的扩展和插件,增强了软件的功能,如代码提示、代码检查等。 8. **代码提示和自动完成*...
《学友》学习帮助软件的开发团队通过深入研究大学生的学习习惯和需求,发现了学生在资料查找、个性化学习、互动交流等方面存在的问题,并据此设计出《学友》这款应用,希望它能成为学生学习过程中的得力助手。...
Word学友 V5.0 手把手动画语音教你学习Word排版,一天学会Word,三天成为排版高手,本软件由浅入深,逐步讲解,让你短期成为办公高手,立竿见影!
10. **3D功能**:Photoshop还提供了创建和编辑3D对象的功能,可以将2D图像转化为3D效果,或者将3D模型融入到2D场景中。 "Photoshop学友 v5.0"很可能包含了以上这些内容的讲解,通过语音教学的方式,使得学习更加...
总的来说,Dreamweaver学友 6.61提供了全面的学习资源,帮助用户从零开始掌握这款强大的网页设计工具。通过深入学习和实践,不仅可以提升网页设计技能,还能提高工作效率,适应各种Web开发需求。
Photoshop学友_6.9 芯友网电脑学习软件
活动 明星 唱歌 学习 张学友歌友会 在为中华崛起而读书 ppt模板下载
Excel可以这样用:Excel函数范例实战精粹(速查版)》是严学友编著的一本面向Excel用户的专业书籍,尤其适合商务人士和数据分析爱好者。这本书全面覆盖了Excel在数据处理、分析和图表制作等多个方面的实用技巧,旨在...