《面向对象设计》PPT课件

上传人:公**** 文档编号:584504715 上传时间:2024-08-31 格式:PPT 页数:28 大小:640.81KB
返回 下载 相关 举报
《面向对象设计》PPT课件_第1页
第1页 / 共28页
《面向对象设计》PPT课件_第2页
第2页 / 共28页
《面向对象设计》PPT课件_第3页
第3页 / 共28页
《面向对象设计》PPT课件_第4页
第4页 / 共28页
《面向对象设计》PPT课件_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《面向对象设计》PPT课件》由会员分享,可在线阅读,更多相关《《面向对象设计》PPT课件(28页珍藏版)》请在金锄头文库上搜索。

1、面向对象设计面向对象设计2 2 2设计中的设计中的SoCn n设计比比较复复杂时任任任任务务被分隔开被分隔开被分隔开被分隔开只考只考只考只考虑虑一个一个一个一个问题问题,这这个个个个问题问题具有一定的独具有一定的独具有一定的独具有一定的独立性立性立性立性n n用面向用面向对象的思想象的思想设计软件件 以数据以数据以数据以数据为为中心中心中心中心3 3 3n n设计的本的本质是用黑箱及其接口描述系是用黑箱及其接口描述系统每个部件通每个部件通每个部件通每个部件通过过其接口提供一些服其接口提供一些服其接口提供一些服其接口提供一些服务务相相相相对对来来来来说说,其他部件是,其他部件是,其他部件是,其他

2、部件是这这些服些服些服些服务务的用的用的用的用户户( (客客客客户户) )客客客客户户只需了解服只需了解服只需了解服只需了解服务务的接口的接口的接口的接口, , 而而而而实现细节对实现细节对客客客客户户无关无关无关无关紧紧要要要要服服服服务组务组件只管提供服件只管提供服件只管提供服件只管提供服务务的的的的实现实现, , 不管客不管客不管客不管客户户如如如如何何何何应应用用用用设计中的设计中的SoC4 4 4自顶向下设计与自顶向下设计与OODn n自自自自顶顶向下向下向下向下设计设计 函数是黑箱函数是黑箱函数是黑箱函数是黑箱 客客客客户户只要知道函数接口即能使用之只要知道函数接口即能使用之只要知

3、道函数接口即能使用之只要知道函数接口即能使用之 函数函数函数函数实现细节实现细节被封装在函数定被封装在函数定被封装在函数定被封装在函数定义义中中中中n nOODOOD: : 对对象是黑箱象是黑箱象是黑箱象是黑箱 对对象的能力由象的能力由象的能力由象的能力由类类定定定定义义 类对类对外提供的接口即方法外提供的接口即方法外提供的接口即方法外提供的接口即方法 方法的方法的方法的方法的实现对实现对外部客外部客外部客外部客户户是不重要的是不重要的是不重要的是不重要的5 5 5OOD设计指南设计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用

4、的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象n n考考考考虑问题虑问题描述中的名描述中的名描述中的名描述中的名词词( (事物事物事物事物) )n n这这些事物有什么行些事物有什么行些事物有什么行些事物有什么行为为n n例如:例如:例如:例如:图图中中中中PointPoint6 6 6OOD设计指南设计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象 确定确定确定确定实实例例例例变变量量量量n

5、n对对象信息象信息象信息象信息n n如:点的如:点的如:点的如:点的x,yx,y坐坐坐坐标标7 7 7OOD设计指南设计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象 确定确定确定确定实实例例例例变变量量量量 确定接口确定接口确定接口确定接口n n考考考考虑问题虑问题描述中的描述中的描述中的描述中的动词动词( (对对象行象行象行象行为为) )n n对对对对象数据的所有操作要在提供的方法中完成象数据的所有操作要在提供的方法中完成象数据的所有

6、操作要在提供的方法中完成象数据的所有操作要在提供的方法中完成n n点:点:点:点:显显示、移示、移示、移示、移动动、读读坐坐坐坐标标、写坐、写坐、写坐、写坐标标等等等等8 8 8OOD设计指南设计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象 确定确定确定确定实实例例例例变变量量量量 确定接口确定接口确定接口确定接口 复复复复杂杂方法的自方法的自方法的自方法的自顶顶向下逐步求精向下逐步求精向下逐步求精向下逐步求精9 9 9OOD设计指南设

7、计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象 确定确定确定确定实实例例例例变变量量量量 确定接口确定接口确定接口确定接口 复复复复杂杂方法的自方法的自方法的自方法的自顶顶向下逐步求精向下逐步求精向下逐步求精向下逐步求精 反复反复反复反复设计设计n n可能会不断增加新可能会不断增加新可能会不断增加新可能会不断增加新类类或方法或方法或方法或方法n n不能期待以不能期待以不能期待以不能期待以线线性、系性、系性、系性、系统统的方式的方式的方式

8、的方式设计设计程序程序程序程序101010OOD设计指南设计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象 确定确定确定确定实实例例例例变变量量量量 确定接口确定接口确定接口确定接口 复复复复杂杂方法的自方法的自方法的自方法的自顶顶向下逐步求精向下逐步求精向下逐步求精向下逐步求精 反复反复反复反复设计设计 尝试尝试其他途径其他途径其他途径其他途径n n会大量会大量会大量会大量经历经历“ “尝试尝试- -失失失失败败” ”的的的的过过程程程

9、程111111OOD设计指南设计指南n nOOD: OOD: 对给对给定定定定问题问题找出并定找出并定找出并定找出并定义义一一一一组组有用的有用的有用的有用的类类的的的的过过程程程程 确定有用的确定有用的确定有用的确定有用的对对象象象象 确定确定确定确定实实例例例例变变量量量量 确定接口确定接口确定接口确定接口 复复复复杂杂方法的自方法的自方法的自方法的自顶顶向下逐步求精向下逐步求精向下逐步求精向下逐步求精 反复反复反复反复设计设计 尝试尝试其他途径其他途径其他途径其他途径 力求力求力求力求简单简单编程实例编程实例: 壁球壁球n n回回回回顾顾 模模模模拟拟两位球两位球两位球两位球员员的壁球比

10、的壁球比的壁球比的壁球比赛赛,记录记录比比比比赛统计结赛统计结果果果果n n需求需求需求需求变变化化化化 还还需要需要需要需要统计统计shutoutshutout的次数的次数的次数的次数( (一方一方一方一方7 7分,一方分,一方分,一方分,一方0 0分分分分) )12编程实例编程实例: 壁球壁球n n对对象象象象: : 一局比一局比一局比一局比赛赛: : 输输入两个球入两个球入两个球入两个球员员的技的技的技的技术术水平水平水平水平, , 提供提供提供提供playplay()()n nRBallGameRBallGame 得分得分得分得分统计统计: : 统计统计比比比比赛结赛结果果果果, ,

11、提供提供提供提供update(), printReportupdate(), printReport()()n nSimStatsSimStats13编程实例编程实例: 壁球壁球n n对对象象象象: : 一局比一局比一局比一局比赛赛: : RBallGameRBallGame 得分得分得分得分统计统计: : SimStatusSimStatusn n主程序核心代主程序核心代主程序核心代主程序核心代码码: :stats = SimStats()stats = SimStats()for i in range(n):for i in range(n): theGame = RBallGame(pr

12、obA,probB) theGame = RBallGame(probA,probB) theGame.play() theGame.play() stats.update(theGame) stats.update(theGame)14151515编程实例编程实例: 壁球壁球(续续)n n设计设计一个一个一个一个类时类时会会会会获获得其他得其他得其他得其他类类的的的的设计设计思路思路思路思路 例如例如例如例如: :实现实现SimStatsSimStats的的的的update(aGame)update(aGame)时时, ,需要需要需要需要aGameaGame的分数的分数的分数的分数, , 由

13、此想到由此想到由此想到由此想到RBallGameRBallGame类类应应提供提供提供提供getScoresgetScores方法方法方法方法 又如又如又如又如: :实现实现RBallGameRBallGame时时, , 发现发现技技技技术术是属于球是属于球是属于球是属于球员员而非比而非比而非比而非比赛赛的的的的, , 因此因此因此因此应设计应设计PlayerPlayer类类n n各各各各类间类间的关系可用的关系可用的关系可用的关系可用图图来表示来表示来表示来表示编程实例编程实例: 壁球壁球(续续)n n完整程序完整程序完整程序完整程序: :objrball.pyobjrball.py16编程

14、实例编程实例:Dice Pokern n游游游游戏规则戏规则: : 玩家开始玩家开始玩家开始玩家开始时时有有有有$100$100 每每每每轮轮花花花花$10$10进进行游行游行游行游戏戏 先投先投先投先投掷掷一手一手一手一手5 5个骰子个骰子个骰子个骰子 然后有两次机会重然后有两次机会重然后有两次机会重然后有两次机会重掷掷部分或全部骰子部分或全部骰子部分或全部骰子部分或全部骰子 最后根据右表最后根据右表最后根据右表最后根据右表结帐结帐17两对两对两对两对$5$5三同三同三同三同$8$8一对加三同一对加三同一对加三同一对加三同$12$12四同四同四同四同$15$15顺子顺子顺子顺子(1-5(1-

15、5或或或或2-6)2-6)$20$20五同五同五同五同$30$30编程实例编程实例:Dice Pokern n图图形界面要求形界面要求形界面要求形界面要求 显显示余示余示余示余额额 玩家破玩家破玩家破玩家破产时产时自自自自动终动终止止止止 玩家也可玩家也可玩家也可玩家也可选择选择退出退出退出退出 提示程序状提示程序状提示程序状提示程序状态态及用及用及用及用户户如何响如何响如何响如何响应应的信息的信息的信息的信息18编程实例编程实例: Dice Poker(续续)n n模型模型-视图(model-view)设计方法方法将复将复将复将复杂杂程序分解程序分解程序分解程序分解为为模型和用模型和用模型和

16、用模型和用户户界面界面界面界面模型是程序的核心模型是程序的核心模型是程序的核心模型是程序的核心( (程序的程序的程序的程序的逻辑逻辑) )视图视图是模型状是模型状是模型状是模型状态态的展的展的展的展现现如:收音机,投如:收音机,投如:收音机,投如:收音机,投资资收益收益收益收益19编程实例编程实例: Dice Poker(续续)n n模型模型-视图(model-view)设计方法方法分开的好分开的好分开的好分开的好处处: : 对对同一模型同一模型同一模型同一模型, ,容易改容易改容易改容易改变视图变视图n n先考先考先考先考虑问题虑问题如何解决,然后再考如何解决,然后再考如何解决,然后再考如何

17、解决,然后再考虑虑如何呈如何呈如何呈如何呈现给现给用用用用户户20编程实例编程实例: Dice Poker(续续)n n模型模型-视图(model-view)设计方法方法本例中本例中本例中本例中: :n n游游游游戏戏模型模型模型模型: PokerApp: PokerApp类类n n游游游游戏戏界面界面界面界面: : TextInterfaceTextInterface或或或或GraphicsInterfaceGraphicsInterface类类注:文字界面注:文字界面注:文字界面注:文字界面简单简单,适合,适合,适合,适合调试调试; 图图形界面复形界面复形界面复形界面复杂杂,交互性好,交互

18、性好,交互性好,交互性好21编程实例编程实例:Dice Poker(续续)n n实现模型模型低低低低层对层对象象象象: :类类Dice Dice n n构造器构造器构造器构造器: : 初始化初始化初始化初始化DiceDice对对象集合体象集合体象集合体象集合体n nrollAll: rollAll: 对对5 5个骰子个骰子个骰子个骰子赋赋随机随机随机随机值值n nroll: roll: 对对部分骰子部分骰子部分骰子部分骰子赋赋随机随机随机随机值值, ,其他不其他不其他不其他不变变n nvalues: values: 返回骰子当前返回骰子当前返回骰子当前返回骰子当前值值n nscore: sco

19、re: 返回骰子的得分返回骰子的得分返回骰子的得分返回骰子的得分( (金金金金额额) )高高高高层对层对象象象象:PokerApp:PokerApp22编程实例编程实例:Dice Poker(续续)n n实现界面界面文本界面文本界面文本界面文本界面: :测试测试用用用用GUIGUI界面界面界面界面23OO概念概念:封装封装n n将数据以及相关操作打包在一起的将数据以及相关操作打包在一起的将数据以及相关操作打包在一起的将数据以及相关操作打包在一起的过过程程程程. .n n封装的封装的封装的封装的结结果就是果就是果就是果就是对对象概念象概念象概念象概念. .n n世界是相互作用的世界是相互作用的世

20、界是相互作用的世界是相互作用的对对象构成的象构成的象构成的象构成的. .n n封装使封装使封装使封装使” ”定定定定义义” ”与与与与” ”使用使用使用使用” ”的的的的SoCSoC成成成成为为可能可能可能可能. .n n封装使得代封装使得代封装使得代封装使得代码码重用成重用成重用成重用成为为可能可能可能可能(e.g. button)(e.g. button)要会使用要会使用要会使用要会使用类库类库24OO概念概念: 多态性多态性n n给对象象发了消息了消息, 具体做什么取决于具体做什么取决于该对象的象的类型型.例如例如例如例如: obj.draw(win): obj.draw(win)对对不同不同不同不同图图形形形形对对象象象象objobj将画出不同的将画出不同的将画出不同的将画出不同的图图形形形形. .25OO概念概念: 继承继承n n可以从可以从现有的有的类出出发, 定定义新新类超超超超类类与子与子与子与子类类n n子子类继承超承超类的的变量和方法量和方法, 并且另有并且另有自己的自己的变量和方法量和方法n n好好处: 代代码重用重用26作业作业2828End

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号