- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 设计准则 I: 正确性和健壮性 Design Principles ICorrectness and Robustness 3.1 正确性和充分性 目标: 每个项目都要满足指定的需求, 然后一 起满足所有应用程序的需求。 Goal: That each artifact satisfies designated requirements, and that together they satisfy all of the application’s requirements. 3.1.1 实现正确的途径 3.1.1.1 达到正确性的非正式方法 在确定最终结果之前, 应该进行简单和模块化设计。 3.1.1.2 达到正确性的正式方法 包含了用数学逻辑的方法来分析变量变化的方向。 3.1.2 模块接口 3.1.2.1 类的接口 Java 部分实现代码: interface Dimensions{ public double getWidth(); public double getLength(); public double getWeight(); } …… class Shipment implements Dimensions, TransportationMeans, GoodsType{ public double getWidth(){ ……} …… } 3.1.2.2 包的接口 3.1.3 模块化 3.1.3.1 选择类 3.1.4 为正确性和充分性而重整 极限编程(extreme programming, XP)是首先为给定的需求进行设计, 然后在额外的需求变得透明时对设计和实现进行修改,这个过程称为重整(refactoring)。 3.2 健壮性 如果设计或实现能处理各种各样的异常情况,比如数据错误、用户错误、环境条件,那么这个设计是健壮的。 3.2.1 检查输入 (保证环境健壮性) 例如: 类型检查 检查与前置条件和不变式不符的输入 设计准则II: 灵活性、可用性和高效性 Design Principles II: Flexibility、Reusability and Efficiency 循环 while、for 远程调用 需要网络 LAN The Internet 函数调用 -- 如果函数调用导致以上情况发生 对象创建 * * 软件设计的目标: 正确性、健壮性、灵活性、可重用性和高效性 正确性、充分性 灵活性、可重用性 纯粹的极限程序设计 XP(extreme programming) 适应未来许多需求变化的设计 一个设计足以实现需求 设计必须完全可理解 设计非常模块化 一个正确设计 有时称为… 最小目标 接下来…… 达到这个目标的常用 方法是…… 类不变式 例 : Invariants for Class Automobile mileage = 0 mileage 1000000 vehicleID 至少为8个字符 value = -300 (300美元是一辆报废车的处理价格) originalPrice = 0 (type == “REGULAR” value = originalPrice) || (type == “VINTAGE” value = originalPrice) Automobile类的方法要考虑这些不变式,这正是我们经常将变量设为私有的原因。 Shipment 原始形式 Shipment setVehicle() perishable() getWidth() printRoute() describeType() getLength() getDuration() setType() getWeight() Dimensions getWidth() getLength() getWeight() TransportationMeans getDuration setVehicle() printRoute() GoodsType describeType() setType() perishable() Shipment Dimensions TransportationMeans GoodsType 通过接口使Shipment类的结构变清晰: 两种表示方法 purchase
文档评论(0)