2022年面向对象和面向过程对比 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年面向对象和面向过程对比 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象和面向过程对比 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Q:面对对象和面向过程的优缺点,结合实例进行阐述A:一、个人理解, 面向对象相对于面向过程较显著的优势莫过于可扩展性、可维护性。 众所周知在软件开发过程中, 开发人员与客户需要不断的沟通,而客户的需求也往往在不断的变化,软件的功能也不是一成不变的。如果采用面向过程的方法来进行软件开发,当用户需求发生变化时, 比如要求修改现有软件功能的实现方式或者要求追加新的功能时,就需要自顶向下地修改模块的结构,有时候甚至整个软件系统的设计被完全推翻。相比之下, 面向对象所提供的可扩展性保证了当软件必须增加新的功能时,能够在现有系统结构的基础上,方便的创建新的子系统,而不需要改变软件系统现有的结构,也不会影响
2、已经存在的子系统。可维护性则保证了当用户需求发生变化时,只需要修改局部的子系统的少量程序代码,而不会牵一发动全身。举一个例子, 暴雪公司开发的魔兽争霸游戏,这个游戏里面有很多人物角色,例如我们要编程实现美杜莎这个角色的技能攻击动作。如果使用面向过程的方法来实现。本例使用C+, Visual C+ 6.0环境下调试。#include using namespace std; #define SPLIT_SHOT 1 #define MYSTIC_SNAKE 2 #define MANA_SHIELD 3 void useSplitShot() / 使用分裂箭技能 coutSplit Shoten
3、dl; void useMysticSnake() / 使用秘术异蛇技能 coutMystic Snakeendl; void useManaShield() / 使用魔法护盾技能 coutMana Shieldskill; / 输入技能快捷键switch(skill) case SPLIT_SHOT: useSplitShot(); break; case MYSTIC_SNAKE: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - -
4、 - useMysticSnake(); break; case MANA_SHIELD: useManaShield(); break; default: cout无法使用技能 endl; break; int main() useSkill(); return 0; 假如有一天玩家向暴雪反映,美杜莎这个英雄的技能太少啦,我们希望再增加一个技能。这个时候假如暴雪决定增加一个石化凝视(Stone Gaze)技能,那么需要进行以下三步:(1) 在整个系统范围内,增加一个常量:#define STONE_GAZE 4 (2) 在整个系统范围内增加一个新的石化凝视技能模块:void useStone
5、Gaze() / 使用石化凝视技能 coutStone Gazeendl; (3) 在使用技能模块useSkill()内增加以下逻辑:case STONE_GAZE: useStoneGaze(); break; 由此可见, 面向过程的开发方法制约了软件的可维护和可扩展性,模块之间的松耦合性不高,修改或增加一个模块会影响到其他的模块。如果采用面向对象的方式,则该功能可以这样实现。本例使用Java ,MyEclipse环境下调试。Skill.java publicinterface Skill /技能接口 void useSkill(); /使用技能 SplitShot.java publicc
6、lass SplitShot implements Skill /分裂箭技能类 publicvoid useSkill() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - System.out .println(Split Shot); /使用分裂箭技能 MysticSnake.java publicclass MysticSnake implements Skill /秘术异蛇技能类 publicvoid useSkill()
7、 System. out .println(Mystic Snake); /使用秘术异蛇技能 ManaShield.java publicclass ManaShield implements Skill /魔法护盾技能类 publicvoid useSkill() System.out .println(Mana Shield); /使用魔法护盾技能 SkillFactory.java import java.util.HashMap; import java.util.Map; publicclass SkillFactory /技能工厂类 publicstaticfinalintSPLI
8、T_SHOT = 1; publicstaticfinalintMYSTIC_SNAKE = 2; publicstaticfinalintMANA_SHIELD = 3; privatestatic Map skills = new HashMap(); static skills.put(new Integer(SPLIT_SHOT), SplitShot); skills.put(new Integer(MYSTIC_SNAKE ), MysticSnake); skills.put(new Integer(MANA_SHIELD ), ManaShield); publicstatic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象和面向过程对比 2022 面向 对象 和面 过程 对比
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内