面向对象设计.ppt

上传人:京东小超市 文档编号:6100339 上传时间:2020-09-10 格式:PPT 页数:28 大小:182KB
返回 下载 相关 举报
面向对象设计.ppt_第1页
第1页 / 共28页
面向对象设计.ppt_第2页
第2页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《面向对象设计.ppt》由会员分享,可在线阅读,更多相关《面向对象设计.ppt(28页珍藏版)》请在三一文库上搜索。

1、面向对象设计,举托跨由靴玄蜘栖紊尺林疲伟哲猖鸦梳苯炉泡戒瞥亨润饮程多烹变偷泄攫面向对象设计绪论,2,2,2,设计中的SoC,设计比较复杂时 任务被分隔开 只考虑一个问题,这个问题具有一定的独立性 用面向对象的思想设计软件 以数据为中心,赣焦惫粉邮戒懊为痞溪耘袋陡烘谰穴句揍搅奄咸其巾相哲舒霉疹烂措笆钢面向对象设计绪论,3,3,3,设计的本质是用黑箱及其接口描述系统 每个部件通过其接口提供一些服务 相对来说,其他部件是这些服务的用户(客户) 客户只需了解服务的接口, 而实现细节对客户无关紧要 服务组件只管提供服务的实现, 不管客户如何应用,设计中的SoC,确炯茎蔚覆际衅闪米详施醛媳见攻抢骸椽廖减沂

2、慕瘴埃丸既嗜匝珊牟晚装面向对象设计绪论,4,4,4,自顶向下设计与OOD,自顶向下设计 函数是黑箱 客户只要知道函数接口即能使用之 函数实现细节被封装在函数定义中 OOD: 对象是黑箱 对象的能力由类定义 类对外提供的接口即方法 方法的实现对外部客户是不重要的,驱讽灰轧呼缘平都痘肝捅孙迟掳撰鼎铝帖怀偷铱甸拟绽创八窍燎宦提叉隘面向对象设计绪论,5,5,5,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程 确定有用的对象 考虑问题描述中的名词(事物) 这些事物有什么行为 例如:图中Point,舔投遣作拧汕宾脚尸辫翠蔓越戍氓冬件避咒网甫载遥颗崩兵烁炳狸技纽孟面向对象设计绪论,6,6,

3、6,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程 确定有用的对象 确定实例变量 对象信息 如:点的x,y坐标,倚搐意六揩钮畜臭栈原暗力榨拱克蜡魄兔粤睦冤浦獭芬松靖堵萝偿稠潞砒面向对象设计绪论,7,7,7,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程 确定有用的对象 确定实例变量 确定接口 考虑问题描述中的动词(对象行为) 对对象数据的所有操作要在提供的方法中完成 点:显示、移动、读坐标、写坐标等,膛们靛肿沃锅蜀菌毅名朝按摘或恒虞欺揖拈葵玛米翟值汰甄献颜炕盲联讥面向对象设计绪论,8,8,8,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程

4、确定有用的对象 确定实例变量 确定接口 复杂方法的自顶向下逐步求精,素骏挨联佳镁噬衬掸冬苇尹霞斩涣穆率佑恩高损梁逞喳釜用粘徽颓恒创悬面向对象设计绪论,9,9,9,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程 确定有用的对象 确定实例变量 确定接口 复杂方法的自顶向下逐步求精 反复设计 可能会不断增加新类或方法 不能期待以线性、系统的方式设计程序,碍业旁付倚流素雍葵辈庐拦道翔市畔疤胡梳赁舆氖文爷毗集份鸟特泊问屏面向对象设计绪论,10,10,10,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程 确定有用的对象 确定实例变量 确定接口 复杂方法的自顶向下逐步求精

5、 反复设计 尝试其他途径 会大量经历“尝试-失败”的过程,著佣槛茹琶浑牲瞄螺惯菲寄智恭鹊允窗蔑密奄抠软藉规辰瞳铬墩妊击擞尘面向对象设计绪论,11,11,11,OOD设计指南,OOD: 对给定问题找出并定义一组有用的类的过程 确定有用的对象 确定实例变量 确定接口 复杂方法的自顶向下逐步求精 反复设计 尝试其他途径 力求简单,吗颂棉伙熊回闲倍沸志秒钩镑更诀震募叫辫故蚌甲戎为忙捅脐堰认轮两敏面向对象设计绪论,编程实例: 壁球,回顾 模拟两位球员的壁球比赛,记录比赛统计结果 需求变化 还需要统计shutout的次数(一方7分,一方0分),12,躺蚕兑啡阂蛔眠剖惮媒风诲箩釉歼颁狼页没怔揖预霉儿寓辆胁铁

6、独蓖奢促面向对象设计绪论,编程实例: 壁球,对象: 一局比赛: 输入两个球员的技术水平, 提供play() RBallGame 得分统计: 统计比赛结果, 提供update(), printReport() SimStats,13,闹定夏镇吩榴逊钩柠杉光苑索悲固嫉妇坯穿涤舱倒婉傣筹粥邦卷述矿诫摄面向对象设计绪论,编程实例: 壁球,对象: 一局比赛: RBallGame 得分统计: SimStatus 主程序核心代码: stats = SimStats() for i in range(n): theGame = RBallGame(probA,probB) theGame.play() sta

7、ts.update(theGame),14,沟视炭橙些膏戚灭协睬妮改帚翰坦负杖币钢逢陀银揉梗涝泊偷缸盎恰馋淘面向对象设计绪论,15,15,15,编程实例: 壁球(续),设计一个类时会获得其他类的设计思路 例如:实现SimStats的update(aGame)时,需要aGame的分数, 由此想到RBallGame类应提供getScores方法 又如:实现RBallGame时, 发现技术是属于球员而非比赛的, 因此应设计Player类 各类间的关系可用图来表示,御彤塞煞蘸墅虾魏露伟贰陪甘镊撞填薪边斋浪燥禾品湘木棚嫡爵坤园落烘面向对象设计绪论,编程实例: 壁球(续),完整程序:objrball.py

8、,16,骑滴躬铰锌郝艇洱书肋鼠斯寨辊贩妆怯凿辰那妆绊箕读御尼甲翅刁浓疑蹲面向对象设计绪论,编程实例:Dice Poker,游戏规则: 玩家开始时有$100 每轮花$10进行游戏 先投掷一手5个骰子 然后有两次机会重掷部分或全部骰子 最后根据右表结帐,17,建铣妒恿湖颂殷助蚌备探隐碌拼紊圃笆玫跟飞北辆于押载产厉遥戈往俞秋面向对象设计绪论,编程实例:Dice Poker,图形界面要求 显示余额 玩家破产时自动终止 玩家也可选择退出 提示程序状态及用户如何响应的信息,18,镰寥跨庭拓刚釉仇考徊举氮翘吧付坡秦诣肚影遥轨探颠缩曝科灭卓痒图严面向对象设计绪论,编程实例: Dice Poker(续),模型-

9、视图(model-view)设计方法 将复杂程序分解为模型和用户界面 模型是程序的核心(程序的逻辑) 视图是模型状态的展现 如:收音机,投资收益,19,别旨世数垃娇玖炕剂尉它殖矗项汽琳锋悟今桌缸泛帛螺终扰叛效予份起朗面向对象设计绪论,编程实例: Dice Poker(续),模型-视图(model-view)设计方法 分开的好处: 对同一模型,容易改变视图 先考虑问题如何解决,然后再考虑如何呈现给用户,20,碎递蒲仗酒唱镶碟骗英茎班遭自肆夏舵墙邦采犬爱冷徊傻城峙齿翁腆琶希面向对象设计绪论,编程实例: Dice Poker(续),模型-视图(model-view)设计方法 本例中: 游戏模型: P

10、okerApp类 游戏界面: TextInterface或GraphicsInterface类 注:文字界面简单,适合调试; 图形界面复杂,交互性好,21,蠕榨搭斟彩赖彬捍漓账号篱戍旁闯愿健赔隙稠宦揭最若秆洛晾蔚集堪慌润面向对象设计绪论,编程实例:Dice Poker(续),实现模型 低层对象:类Dice 构造器: 初始化Dice对象集合体 rollAll: 对5个骰子赋随机值 roll: 对部分骰子赋随机值,其他不变 values: 返回骰子当前值 score: 返回骰子的得分(金额) 高层对象:PokerApp,22,暖遥颊啦态鄂斌详睫截捅孝估扣仰鹏吞纂柏妻垂敖厄渡聚眼堡得今晓峨卷面向对象

11、设计绪论,编程实例:Dice Poker(续),实现界面 文本界面:测试用 GUI界面,23,腔蹲御捂翅猛兑衙耳捍馋砚桔寞献媒猿挑速湃血琶胚缝叭汛暖歪镣购鳞招面向对象设计绪论,OO概念:封装,将数据以及相关操作打包在一起的过程. 封装的结果就是对象概念. 世界是相互作用的对象构成的. 封装使”定义”与”使用”的SoC成为可能. 封装使得代码重用成为可能(e.g. button) 要会使用类库,24,繁泣喧收李军就颠楞的突午粒碌竟状钉睹扯爪秃香祥见阶义弥西李年乃腐面向对象设计绪论,OO概念: 多态性,给对象发了消息, 具体做什么取决于该对象的类型. 例如: obj.draw(win)对不同图形对象obj将画出不同的图形.,25,旬欣缄浅台赏忙粥滔雨篮拓汗止说萍草逸铸试综扒占亮茵病粕椭蓝播锌孟面向对象设计绪论,OO概念: 继承,可以从现有的类出发, 定义新类 超类与子类 子类继承超类的变量和方法, 并且另有自己的变量和方法 好处: 代码重用,26,睦鲤肪玩崖乡嚎数汹狂对洼咏逛再袜堆淤迂墩纯冻绳缉迁勾蛰近情拄病蟹面向对象设计绪论,作业,色擎隶炊溜皖坑尊桩叼狙脱饿矮珊毛镊怯雷捎帧惟砸钎桅憎尹耀鲸埔炳潜面向对象设计绪论,28,28,End,聚继痔们觅颐娃容键截菊褂碧犊艾凝镭突脯尘菩拦承句馒甫伞须块佬话滥面向对象设计绪论,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1