文档详情

43:基本的面向对象的分析和设计.pdf

发布:2018-03-23约1.57万字共12页下载文档
文本预览下载声明
43 :基本的⾯向对象的分析和设计 练习43.基本的⾯向对象的分析和设计 在这节练习,我想给你介绍⼀个使⽤python创建某类东西的过程,也就是“⾯向对 编 程” (OOP )。我把它叫做⼀个过程,是因为我将给出⼀系列按顺序进⾏的步骤,但 是你也不应该死板的遵循这个步骤,企图⽤它解决所有难题。它们对于许多编程问题 只是⼀个良好的开头,⽽不应该被认为是解决这些问题的唯⼀⽅法。这个过程只是⼀ 个你可以遵循的⽅法: 1. 写出或画出你的问题 2. 从1中提炼关键问题并搜索相关资料 3. 为2 中的问题创建⼀个有层次结构的类和对 映射 4 . 编写类和测试代码,并保证他们运⾏ 5. 重复并精炼 按照这个顺序执⾏流程,叫做“ ⾃顶向下”的⽅式,意思是说,它从⾮常抽 宽松的想 法开始,然后慢慢提炼,直到想法是坚实的东西,然后你再开始编码。 ⾸先我只是写出这个问题,并试图想出任何我想要的东西就可以了。也许我会画⼀两 个图表,或者某种可能的地图,甚⾄给⾃⼰写了⼀系列的电⼦邮件描述这个问题。这 给了我表达了问题的关键概念的⽅法,并探测出我对于这个游戏有什么具体的想法和 了解。 接下来,我浏览这些笔记,图表以及描述,通过这些记录我找到我需要的关键问题 点。有⼀个简单的技巧:简单地列出你的笔记和图表中所有的名词和动词,然后写出他 们是如何相关的。这⼀步其实也我为我下⼀步要写的类、对 、以及函数等提供了命 名列表。我利⽤这个概念列表,研究任何我不明⽩的地⽅,如果我需要,我还可以进 ⼀步完善它们。 ⼀旦我完成这个列表,我可以创建的⼀个简单的轮廓/树⽤来说明这些概念之间的关 系。你还可以对着你的名词列表并询问“这个名词和其他的是⼀个概念吗?或者它们 有⼀个通⽤的⽗类吗,那它们的⽗类是什么?”持续检查,直到你得到⼀个有层次结 构的类,它应该像⼀棵简单的树或者图表。然后检查你的动词列表,看它们是否可以 作为函数的名字添加到你的类树种。 随着这棵类树的⽣成,我坐下来写⼀些基本的框架代码,代码中只包括刚才提到的 类,类中包含的函数。然后我再写⼀个测试⽤例,⽤来检验我刚才写的类是正确的。 有时候我可能只需要在开始写⼀段测试代码,但是更多的时候,我需要写⼀段测试, 再写⼀段代码,再写⼀段测试...直到整个项⽬完成。 最后,在我完成更多的⼯作之前,我周期性的重复和精炼这个流程,是他变得清楚和 易于理解。如果我在⼀个没有预料到的地⽅被⼀些概念或问题卡住,我会停下来在这 ⼀⼩部分上投⼊更⼤的精⼒来分析解决,直到我解决了这问题,再继续下去。 这节练习中,我将通过建造⼀个游戏引擎带⼤家学习这⼀流程。 分析⼀个简单的游戏引擎 我打算制作⼀个叫做 Gothons from Planet Percal #25的游戏,这个⼀个⼩型的太空冒 险游戏。 写或画出这个问题 我为这个游戏写了⼀⼩段描述: “外星⼈乘坐⼀个宇宙飞船⼊侵,我们的英雄需要通过⼀个迷宫似的房间击败他们,然后 他才能逃⼊⼀个逃⽣舱到达下⾯的⾏星。游戏将更像⼀个有着⽂本输出和有趣的死法 的Zor 或冒险类型游戏。游戏将包括⼀个引擎运⾏充满房间或场景的地图。 当玩家进 ⼊房间,每个房间将打印⾃⼰的描述,然后告诉引擎运⾏下⼀个地图。” 我先描述每个场景: Death: 这是玩家死亡的场景,应该是有趣的。 Central Corridor: 这是游戏的起点,在这⾥已经有⼀个外星⼈等待英雄的到来,它们需 要被⼀个玩笑打败。 Laser Weapon Armory: 这是英雄得到了中⼦弹获得的逃⽣舱之前要炸毁的船。它有⼀ 个需要英雄猜数的键盘。 The Bridge: 和外星⼈战⽃的另⼀个场景,英雄防⽌炸弹的地⽅。 Escape Pod: 英雄逃脱的场景,但是需要英雄找对正确的逃⽣舱 现在,我可以绘制出它们的地图,或者对每个房间再多写⼀些描述,或者其他⼀些我 脑中出现的想法。 提 关键概念并研究他们 现在我已经有⾜够多的信息还提取出名词,并分析它们的类结构。⾸先我列出所有的 名词: Alien Player Ship Maze Room Scene Gothon Escape Pod Planet Map
显示全部
相似文档