java面向对象综合性总结----抽象+封装+继承+多态+接口

来源:互联网 发布:淘宝教育上直通车 编辑:程序博客网 时间:2024/05/22 14:21

           在java编程中会经常遇到多个对象及多个方法杂糅在一起的问题,这里以自制游戏Demo举例:

           一.   需求分析:

                    1.设计一个勇者斗恶龙游戏,具有游戏注册、登录、查询、退出游戏功能;

                    2.游戏中主要有勇者,武器,怪物三种实体类;

                    3.勇者有AD,坦克,法师,辅助四种职业类型,各种职业有各自固定武器;

                    4.武器有弓,剑,魔法,十字架四种,同样武器也有各自的属性;

                    5.恶龙主要有:水龙,火龙,土龙三种,也有各自的属性;

                    6.玩家自选3个勇者,三种龙随机出现;勇者先攻击龙,龙后攻击勇者;轮番作战,直到一方阵亡为止;输出获胜者。

          二. 设计流程:

                     类图分析(如下图所示):------------数据线:抽象类和实体类的分析和创建------Role--Dragon+Fighter------Weapon--Bow+Sword+Magic+Cross

                    1.根据恶龙和勇者的共同属性设定抽象类Role,共同属性有:name,Health,alive行为有:getHurt和attack;

                    2.龙类勇者类均继承于(泛化Generalization)角色类(角色类的泛型是),且为实体类;

                    3.根据弓,魔法,剑的共同属性设定抽象类Weapon,共同属性有:wear,damage,name,行为有:攻击和维修

                    4.bow,magic,sord均继承于武器类,且为实体类;

                    5.接口IFix实现Realization了武器类的fix行为;

                    6.勇者(fighter)类依赖Dependency于武器类的实现;




           流程图分析(如下图所示):--------操作线-----------游戏登录注册+游戏介绍+自选3个角色+对战模式(勇者闯关模式,先对战水龙,后对战土龙,最后对战火龙)+退出游戏




       三.具体功能实现:

            数据线:抽象类和实体类的封装

             1.   抽象类角色的封装:-------Role----角色类(姓名,生命值,存活状态)




           2.勇者类实体类的封装与继承:-------Fighter-----剑士,弓手,法师(调用武器的攻击方法)





            3.恶龙类实体类封装与继承---------Dragon(多了格挡技能)


         4.抽象类武器封装-----Weapon-----弓,剑,魔法的持久度和伤害都是固有属性;





        5.实体类武器-------武器类的继承,多态,接口-----均继承于武器类,但攻击方式各有不同;均继承于接口,但维修方式各有不同

         创建维修接口:


       弓--------攻击方式:箭矢攻击-----维修方式:补充箭矢


      剑-------攻击方式:刺击--------维修方式:重铸


      魔法-------攻击方式:法力攻击------维修方式:补魔


操作线:

具体玩法的封装--------游戏登录注册+游戏介绍+对战模式

登录注册+玩法介绍:



角色创建:自由选择3个勇士,龙固定



对战模式:勇者一起攻击龙,龙随机攻击勇者,直到一方全部阵亡,判断输赢,结束游戏。




这里设定getAlive默认是1存活,0是阵亡;end=0游戏继续;end=1,勇者获胜;end=-1,龙获胜。


游戏主界面:



                                       


1 0
原创粉丝点击