电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

软件工程技术与设计第二讲学生

  • 资源ID:75498372       资源大小:2.39MB        全文页数:57页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

软件工程技术与设计第二讲学生

,软件设计模式 第二讲,一、设计过程权衡,解的完全性和正确性;静态类和动态类的安全性;多线程的安全性;容错性处理能力;保密性和鲁棒性。,执行效率,时间复杂度、消息数、带宽要求等;空间消耗,包括存储单元、对象、线程、过程、通信通道。处理器等的使用情况;增加的资源,一些随选信息;动态策略,包括公正性、平衡性、稳定性等。,模块性、封装、耦合、独立性;可延展性,包括子类、可协调性、发展性、可维护性等;可重用性、开放性、可组合性。便携性、可插入性;前后依赖性;互用性;等等。,可理解性、简单、高雅;执行中的易错性;与其他软件的共存性;系统可维护性;开发过程的影响;开发队伍结构及动态特性的影响;用户参与的影响; 生产力、时间安排、成本的影响;等等。,使用规范;人为因素,如可学习性、恢复能力等;对不断变化的环境的适应性;艺术性;医学和环境的影响;社会、经济、政治的影响;等等。,设计过程中,针对设计目标约束冲突给出的非功能性需求判断准则。,设计模式核心思想,核心共同思想原则: 重点解决软件系统可维护性和复用性矛盾。 普遍 基本 单纯 隐藏 重现,1.1软件的可维护性,可维护性好的系统应有性质(Perter Coad) 可扩展性 容易加入新的性能 灵活性 代码修改少波及其他模块 可插入性 容易抽出加入类,1.2 传统复用,传统的复用 代码的剪贴复用 算法的复用 数据结构的复用,程序,程序,程序,程序,代码/算法/数据结构,1.3可维护性和复用的矛盾,传统的复用的风险: 影响可扩展性过于僵硬 修改多个软件成分中复用源代码时,需要独立地修改检测每一拷贝。很难在一个软件系统里加入一个新功能。 影响灵活性过于脆弱 对一个地方的修改会导致另一个地方发生故障,难以跟踪代码的变异和使用。 模块 A 和 B 同时使用模块 C 的功能。那么当 A 需要 C 增加一个新的行为的时候, B 有可能不需要、甚至不允许 C 增加这个新行为。 影响可插入性粘度过高 代码、函数、模块对系统的依赖,改动意味着破坏原始意图和框架,1.4 面向对象的可维护性复用,面向对象设计的重要语言特性 数据抽象 继承 封装 多态性 实现概念和定义复用,促进系统的可维护性。,2 基本概念接口、类型、类,接口(interface): 对象全部操作(对象可以处理的所有请求)的特征(操作的名称、参数和返回值)的集合。 声明对象的类型(Type)接口标记(signature) 包括: 变量的类型声明 参量的类型声明 方法的返还类型声明 数据类型的转换等,2 基本概念接口、类型、类,接口和类的区别: 接口只描述方法的特征,而不给出方法的实现,接口把方法的特征和实现分割开来。 类不仅给出方法的特征,面且给出方法的实现。 接口常常代表一个角色(role) ,它包装与该角色相关的操作和属性,而实现这个接口的类使是扮演这个角色的演员。一个角色可以由不同的演员来演而不同的演员之间除了扮演一个共同的角色之外,并不要求有任何其他的共同之处。,2 基本概念接口、类型、类,类、类型和对象之间区别和联系: 类(class)定义了一类对象的共性实现,即对象的内部数据与其操作的实现。 类型(type)只涉及接口(即对象能作出反应的请求的集合)。 类定义了一类对象可执行的操作,也定义了对象的类型。 一个对象是一个类的实例指这个对象支持该类定义的接口。,2 基本概念接口、类型、类,同一种类型的对象共享接口部分 同一类型接口的对象可以有不同实现,即不同类的对象可以有相同的类型。一个角色可以由不同的演员来演 一个对象可以有多种类型。一个类可以同时实现几个接口。一个演员可以演不同的角色 子类型包含(继承)了超类型的接口 接口是实现构件可插入性的关键。,2.2 基本概念抽象类和具体类,抽象类 为子类定义通用接口。将实现由子类定义的操作完成。 可以拥有实例变量,以及一个或多个构造子(函数)。 构造子不能被调用来创建实例,抽象类不可以实例化。 构造子可以被子类调用,所有子类都可以有共有的实现 抽象类通常代表一个抽象概念 提供一个继承的出发点。 由于抽象类不可以实例化,因此一个抽象类一定是用来继承的。,2.2 基本概念抽象类和具体类,抽象类和接口的区别 抽象类 允许有所有派生类公共的状态和行为。 是一种相关实体聚集的方式。 关注如何设计实现并封装这些具体实体(派生类),而不会与任何特定于实现的细节相耦合。 接口 关注点派生类或实现类的对象的使用。 派生类或实现类的对象为了完成其功能应该有什么样的接口。 没有实例变量和构造子(函数),2.2 基本概念抽象类和具体类,抽象类的作用:用较少的冗余实现一组具有公共状态或行为的对象 设计一个接口 找出已定义对象的公共状态或行为 用一个抽象类实现该接口 从这个抽象类派生具有公共状态或行为的对象 优点:使实现类更简单,更容易维护。,2.2基本概念抽象类和具体类,具体类 非抽象的类称为具体类,实现由自身完成。具体类可以实例化。 可以实例化,给出一个有逻辑实现的对象模版。 具体类不是用来继承的。(可以继承),2.2基本概念抽象类和具体类,混合类 向其他类提供接口,也提供部分接口实现。 与抽象类相似,不能用实例说明。 可以继承,2.2基本概念抽象类和具体类,假设蛋代表抽象,而鸡代表具体。蛋决定鸡的性伏,鸡是蛋的“实现”,蛋的类型决定了鸡的类型。从这个角度来讲,先有蛋,后有鸡。,2.3基本概念接口继承,类继承和接口继承: 继承:一个类是另一个类的子类 类继承(实现继承) : 根据某个原有对象的实现来定义另一个新的对象的实现。 从已有类继承必要的需求。 共享编码和表示方法。 接口继承: 是一个类实现了另一个类的一个接口 何时可用一个对象替换另一个对象。 共享类型。 只继承抽象类。,2.3基本概念接口继承,问题:加入一个新的类,与现有具体类行为有不同的实现动态的具体类可插入性问题 1.使用超类继承: 在类结构中增加一个超类,声明出子类要提供的行为 为这个抽象超类提供多个具体子类,以不同的方法实现了超类所声明的行为。 客户端动态地决定使用哪一个具体子类。,2.3基本概念接口继承,如何在具体类继承结构中增加一个抽象超类: 单继承的语言,一个类只能有一个超类。 当具体类可能已经有了一个超类,不可能加上新的超类。 加新的超类到已有的超类上面,形成超超类。 或者继续向上移动,直到类等级结构的最顶端。 一个具体类的可插入性设计就变成了对整个等级结构中所有的类的修改。可插入性没有保证。,具体类,超类,新超超类,新具体类,。,与现有具体类行为有不同的实现,2.3基本概念接口继承,2.使用接口概念 在一个类等级结构中的任何类都是实现一个接口 这个接口会影响到此类的所有子类,但是不会影响到此类的任何超类。 此类将实现这个接口所规定的方法,而其子类则可以从此类自动继承到这些方法, 子类可以选择置换其中的某一些方法或所有方法。 这时候,子类就具有了可插入性。,接口类,具体类,新具体类,2.3基本概念接口继承,关联的可插入性 关联:一个对象知道其他对象 针对接口的关联: 不是针对具体类 任何实现这个接口的类都可以满足关联要求。 可以动态地将关联从一个具体类转换到另一个具体类,2.3基本概念接口继承,调用的可插入性 对象调用其他对象的方法。 针对接口的调用: 不是针对具体类,而是一个接口。 任何实现这个接口的类都可以被当前对象调用。 可以动态地决定当前对象调用哪一个具体类的实例 接口提供了方法调用上的可插入性。,2.3基本概念接口继承,软件系统的规模越大,生命周期越长,接口的重要性就越大。接口使得软件系统在灵活性和可扩展性,可插入性得到保证。,2.3基本概念多态性(多形性),相同接口具有不同的实现,对象的行为具有多种形态的特性。 简化了客户定义。使客户对象除了支持特定接口外,不做其他设定。 相同接口的对象具有了可替换性。复用对象的实现和应用,2.4 基本概念对象合成,继承和对象合成的关系 继承: 根据一个类定义另一个类的执行过程。 在编译时静态定义,直接被程序设计语言支持,使用直接。 便于修改正在复用的实现。 白盒复用 “白盒”指可见性,通过继承,父类的内部可被子类所见。,2.4基本概念对象合成,问题: 1)实际运行时不能改变在编译时所定义继承的执行过程 2)子类的依赖性: 继承把父类执行过程的细节暴露给子类,破坏了封装。 子类的物理表示、执行过程与父类有密切关系 父类执行过程的任何改变都会强迫子类发生改变。 这种依赖性限制了适应性,最终也限制了可复用性。,2.4基本概念对象合成,动态连接: 在运行时将请求连接到一个对象和该对象的一个操作上。 意味着请求不需指定特定的实现。任何有适当接口的对象都会接收请求。相同接口的对象可以互相替换。,2.4基本概念对象合成,对象合成:通过组合对象得到新的更复杂的功能。要求被组合对象有定义好的接口。特点: 对象合成在运行时动态地通过对象请求访问其他对象。 组合要求对象考虑相互的接口,精心设计接口。 任何一个对象都可在运行时被另一个有相同的类型对象替代。 黑盒复用对象的内部细节不可见,对象显得像一个黑盒。,2.4基本概念对象合成,优点: 对象只能由其接口访问,不破坏封装。 对象的实现根据接口编写,依赖性减少。 有助于类的封装,使每个类集中于一个任务。 缺点: 系统的行为不是在类中定义,而依赖于对象的相互关系。 采用对象合成优于采用类继承(合成/聚合复用原则)。,2.4基本概念对象合成,委托(delegation):对象合成的特例。 一个控制请求的执行: 继承方法:子类将请求交给父类执行。 委托方法: 接收操作的对象把操作委托给它的代理对象。 接收操作的对象把自己本身也传给委托者,以使被委托操作指向接收对象。,2.4基本概念对象合成,例 窗口类的实现 继承方法:使窗口类成为矩形的子类,继承其操作。窗口类将请求交给矩形父类执行 代理方法: 产生一个矩形实例,并代理复用矩形的行为 窗口将请求传给此矩形实例 把操作委托给矩形实例 把自己本身也传给矩形实例,以使被委托操作指向接收对象 让窗口好像是一个矩形 在运行中用圆实例代替矩形实例就适用圆形窗口,窗口,矩形,窗口,矩形,2.4基本概念对象合成,窗口类对矩型类实例的引用,2.4基本概念对象合成,优点:容易组合运行时的行为,改变行为组合的方式。 缺点:难理解、运行效率低。 依赖具体情况及设计者经验。在标准模式中使用效果较好。,2.5基本概念参数化类型,参数化类型。 定义类时不规定它所用的数据元素类型。这些类型在使用时作为参数提供。 例:列表类将元素的类型提供给列表的类型参数,实现时为列表类建立每种元素的可定制形式。 整数列表把类型“整数”作为参数。 字符串列表类型“字符串” 作为参数。,3 设计模式面向对象的可维护性复用,设计模式:更高的层次上的可复用性(宏观逻辑的抽象层次复用) 解决: 1合适的对象(类)的寻找 2对象(类)粒度的确定:如何分解粒度合适的类 3. 对象(类)接口的确定:如何定义类接口和继承体系 4对象(类)实现的确定 5. 复用机制的处理:如何建立类(类)的关键联系 6运行结构和编译结构的处理 7设计中变动的处理,3 设计模式面向对象的可维护性复用,1寻找合适的对象 系统分解为对象的困难: 多种矛盾因素兼顾:封装、粒度、依赖性、灵活性、性能、发展、可重用性。 多种分解对象方法优劣的确定: (1)问题陈述找出名词和动词构造相应的对象和操作; (2)集中考虑系统中的协作和职责; (3)构造现实世界模型,把分析得到的对象转换到设计中。 现实世界+非现实世界的类,如数组、抽象类等。 解决办法:用设计模式帮助确定设计抽象和相应的对象。,3 设

注意事项

本文(软件工程技术与设计第二讲学生)为本站会员(luoxia****01803)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.