系统分析与设计IBM——4.3面向对象设计的原则课件.pptx

上传人:飞****2 文档编号:92403998 上传时间:2023-06-04 格式:PPTX 页数:25 大小:1.38MB
返回 下载 相关 举报
系统分析与设计IBM——4.3面向对象设计的原则课件.pptx_第1页
第1页 / 共25页
系统分析与设计IBM——4.3面向对象设计的原则课件.pptx_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《系统分析与设计IBM——4.3面向对象设计的原则课件.pptx》由会员分享,可在线阅读,更多相关《系统分析与设计IBM——4.3面向对象设计的原则课件.pptx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、关于关于对对象象设计设计你愿或者不愿,需求需求就在那里,日新月异你想或者不想,设计创新就在那里,始始终终持持续续 你测或者不测,BugBug都在那里,多多少少多多少少结结束束或者不结束,干系人在那里,决策决策终不由己来,面向对象的阵营里,或者,让对对象思想象思想驻驻进你的心里,默然,领会。由衷,欢喜 关于关于对对象象设计设计其实,真相是:面向对象方法本身并不能保证你的设计成为优秀的设计You can create a very bad OO designjust as easily as you can create a very bad nonOO design.面向面向对对象象设计过设计过

2、程程进行适当的领域分析撰写问题描述,确定系统的开发任务基于问题描述抽取需求开发用户界面原型识别对象类定义每个类的职责确定类之间的交互关系建立系统的设计模型面向对象建模核心理念区分接口与实现从具体到抽象最小接口原则区分接口与实现区分接口与实现接口的标准化 vs.实现的演化public void open(string name)/*some application-specific processing*/*call the Oracle API to open the DB*/*more application specific processing*/public void open(str

3、ing name)/*some application-specific processing*/*call the SQLAnywhere to open the DB*/*more application specific processing*/接口 用户 代码接口OracleDB2SQLAny用 户 代 码Using Abstract Thinking When Designing Interfaces设计抽象的接口抽象的接口抽象的接口抽抽 象象 的的 接接 口口师师傅,傅,请请送我去机送我去机场场不太抽象的接口不太抽象的接口不不 够够 抽抽 象象 的的 接接 口口右右转转右右转转左左

4、转转左左转转左左转转抽象的抽象的接 口:接 口:向向 用用 户户 暴暴 露露 尽尽 可可 能能 少少 的的 实实 现现 细细 节节让用户知道的关于类的内部实现细节越少越好:只给看必须的只看公开的只为用户的业务需求考虑最最 小小 用用 户户 负负 担担 原原 则则确确 定定 用用 户户用户是谁?重要程度高达50%面向服面向服务务的原的原则则 (Services Principle)提供服提供服务务:只要能只要能赚钱赚钱就好就好使使 用用 服服 务务 :不要太不要太贵贵喔喔识别环识别环境境约约束束环环境境对对对对象的行象的行为为施加施加约约束限制条件束限制条件 前置条件前置条件/后置条件后置条件/

5、例外条件例外条件公共接口的公共接口的识别识别用 户 使 用 出 租 车 对 象 的 时 候,需 要 以下功 能 告知司机终点付钱下 车用 户 要 用 出 租 的 时 候:有出 行地点召唤 出租 车付钱确定确定实现细节实现细节公共接口以外的内容都可以看做是公共接口以外的内容都可以看做是实现实现相关的相关的用户永远无需关注实现细节方法的命名和参数定义(name and parameter list)编码实现对实现的修改无须牵涉接实现为用户的期望提供解决方案接 口 从用 户 的 角 度 看 待对 象,实现则是对象的果核和果肉实现中包含有描述对象状态的代码开开闭闭原原则则(Open/Closed Pr

6、inciple,OCP)最初由Bertrand Meyer提出软件实体在扩展性方面应该是开放的,而在更改性方面应该是 封闭 的。例:打印输出设计设计1设计2Liskov替替换换原原则则(Liskov Substitution Principle,LSP)最早由Liskov于1987年在OOPSLA会议上提出子类可以替换父类出现在父类能出现的任何地方违违反反LSPLSP的例子的例子public class Rectangle private int topLe5X;private int topLe5Y;int width;int height;public void setWidth(int

7、width)this.width=width;public void setHeight(int height)this.height=height;public int getWidth()return width;public int getHeight()return height;问题:如果将Square作为Rectangle的子 类,则如何定义Square类的setWidth和setHeight方法??解决方法:解决方法:public class Square extends Rectangle public void setWidth(int width)super.setWidt

8、h(width);super.setHeight(width);public void setHeight(int height)super.setHeight(height);super.setWidth(height);这种解决方法是否可行??考考 虑虑 下下 面面 的的 代代 码码:public class Test public staGc void main(String args)Test t=new Test();Rectangle r=new Rectangle();Square s=new Square();t.g(r);/t.g(s);private void g(Rect

9、angle r)r.setWidth(10);r.setHeight(20);assert(r.getWidth()*r.getHeight()=200);如果传给方法g的参数是Rectangle类型的对象,则没有问题,如果是Square类型的对象,则出错。?思考思考题题:如如 何何 知知 道道 子子 类类 的的 行行 为为 符符 合合 父父 类类 的的 要要 求求?契约式设计(Design by Contract)为 了 满 足Liskov替换原则,设计时要求:子类中方法的前置条件不能强于父类中相应方法的前置条件。子类中方法的后置条件不能弱于父类中相应方法的后置条件。Liskov 替换原则要

10、求子类宽 入严出!依依赖赖倒置原倒置原则则(Dependency Inversion Principle,DIP)依赖倒置原则指的是依赖关系应该是尽量依赖接口(或抽象类),而不是依 赖于具体类。结构化设计中模块间的依赖关系面向面向对对象象设计设计中的依中的依赖赖关系关系OOD中的依赖关系接口分离原接口分离原则则(Interface Segrega:on Principle,ISP)在设计时采用多个和特定客户类(client)有关的接口要比采用一个通用的 接口要好。使用通用接口的设计使用分离接口的设计好的系统设计的特征用 户 友 好易理解可靠可扩展可移植可伸缩可 重 用简单性:实现简单,使 用 简 单,理 解 简 单,维 护 简 单软件老化的特征修改难很脆弱移植难重 用 难粘性强(设计+环境)需求变更OO设计时要注意的一些问题1.不同类中相似方法的名字应该相同2.遵守已有的约定俗成的习惯3.尽量减少消息模式的数目。只要可能,就使消息具有一致的模式,以利于理解。4.设计简单的类。类的职责要明确,应该从类名就可以较容易地推断出类的用途。5.定义简单的操作、方法6.定义简单的交互协议7.泛化结构的深度要适当8.把设计变动的副作用减至最少

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁