面向对象和面向过程对比.docx
《面向对象和面向过程对比.docx》由会员分享,可在线阅读,更多相关《面向对象和面向过程对比.docx(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Q:面对对象和面对过程的优缺点,结合实例进行阐述A:一、个人理解,面对对象相对于面对过程较显著的优势莫过于可扩展性、可维护性。众所周 知在软件开发过程中,开发人员与客户需要不断的沟通,而客户的需求也往往在不断的变化, 软件的功能也不是一成不变的。假如采纳面对过程的方法来进行软件开发,当用户需求发生 变化时,比方要求修改现有软件功能的实现方式或者要求追加新的功能时,就需要自顶向下 地修改模块的结构,有时候甚至整个软件系统的设计被完全推翻。相比之下,面对对象所供应的可扩展性保证了当软件必需增加新的功能时,能够在现有 系统结构的基础上,便利的创立新的子系统,而不需要转变软件系统现有的结构,也不会影
2、响已经存在的子系统。可维护性那么保证了当用户需求发生变化时,只需要修改局部的子系统 的少量程序代码,而不会牵一发动全身。举一个例子,暴雪公司开发的魔兽争霸嬉戏,这个嬉戏里面有很多人物角色,例如我们要编程实现美杜莎这个角色的技能攻击动作。 C+, Visual C+ 6.0 环境下调试。 #include using namespace std;#define SPLIT_SHOT 1 #define MYSTIC_SNAKE 2 #define MANA_SHIELD 3void useSplitShot () ( coutnSplit Shotendl;) void useMysticSna
3、ke() ( coutnMystic Snakenendl;) void useManaShield() ( coutMana Shieldnskill; switch(skill) ( case SPLIT_SHOT: useSplitShot(); break;要编程实现美杜莎这个角色的技能攻击动作。 C+, Visual C+ 6.0 环境下调试。 #include using namespace std;#define SPLIT_SHOT 1 #define MYSTIC_SNAKE 2 #define MANA_SHIELD 3void useSplitShot () ( cout
4、nSplit Shotendl;) void useMysticSnake() ( coutnMystic Snakenendl;) void useManaShield() ( coutMana Shieldnskill; switch(skill) ( case SPLIT_SHOT: useSplitShot(); break;假如使用面对过程的方法来实现。本例使用/使用分裂箭技能/使用秘术异蛇技能/使用魔法护盾技能/使用技能/输入技能快捷键cas MYSTIC SNAKE:useMysticSnake(); break;case MANA_SHIELD: useManaShield()
5、; brak; default: coutcc”无法使用技能” ccendl; break; ) ) int main() ( useSkill();return 0; )假如有一天玩家向暴雪反映,美杜莎这个英雄的技能太少啦,我们盼望再增加一个技能。 这个时候假如暴雪打算增加一个石化注视(Stone Gaze)技能,那么需要进行以下三步:(1)在整个系统范围内,增加一个常量:#define STONE_GAZE 4(2)在整个系统范围内增加一个新的石化注视技能模块: void useStoneGaze ()/使用石化注视技能( coutStone Gazeendl; )(3)在使用技能模块us
6、Skill ()内增加以下规律: case STONE_GAZE: useStoneGaze(); break;由此可见,面对过程的开发方法制约了软件的可维护和可扩展性,模块之间的松耦合性 不高,修改或增加一个模块会影响到其他的模块。假如采纳面对对象的方式,那么该功能可以这样实现。本例使用Java, MyEclipse环 境下调试。 Skill. j ava public interface Skill/技能接口( void useSkill () ;/使用技能Splitshot . j ava public class Splitshot implements Skill/分裂箭技能类( p
7、ublic void useSkill()System.out.printin(Split Shot); ) MysticSnake.java public class MysticSnake implements Skill (public void useSkill() (System, out .printin (Mystic Snake11) ) )ManaShield.j avapublic class ManaShield implements Skill (public void useSkill () (System.out.printin(Mana Shield); ) )S
8、ystem.out.printin(Split Shot); ) MysticSnake.java public class MysticSnake implements Skill (public void useSkill() (System, out .printin (Mystic Snake11) ) )ManaShield.j avapublic class ManaShield implements Skill (public void useSkill () (System.out.printin(Mana Shield); ) )/使用分裂箭技能/秘术异蛇技能类/使用秘术异蛇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 和面 过程 对比
限制150内