软件构造
1190201810
这个作者很懒,什么都没留下…
展开
-
软件构造期末复习11 软件构造的多维视图与质量指标
一、软件构造的多维度视图二、质量指标外部质量指标正确性健壮性可扩展性可复用性兼容性性能可移植性易用性Functionality及时性内部质量指标LOCcoupling, cohesionReadabilityUnderstandabilityClearnessSize...原创 2021-07-07 20:48:19 · 106 阅读 · 0 评论 -
软件构造 抽象工厂
工厂接口public interface IFactory { public IDatabase createDatabase(); public IEmail createEmail();}产品接口public interface IDatabase { void InsertUser(User user); User getUser(String name, int id);}public interface IEmail { public voi原创 2021-07-06 22:01:47 · 58 阅读 · 0 评论 -
软件构造期末复习10 健壮性与正确性
一、健壮性与正确性健壮性 : 让用户变得更容易, 出错也可以容忍,程序内部已有容错机制,例如Exception正确性 : 让开发者变得更容易, 用户输入错误(不满足precondition的调用),直接结束,例如assert二、Exception运行时异常 : 程序员编程时本可以避免非运行时异常 : 程序员编程时不可避免RuntimeException和Error都是unchecked的Exception是checked的三、throws方法签名不包括throws后面的异常th原创 2021-07-06 18:58:58 · 130 阅读 · 0 评论 -
软件构造期末复习09 设计模式
一、工厂方法 (创建型)想法 : new等于具体,想要抽象就要摆脱new二、适配器 (结构型)三、装饰器 (结构型)注 : ConcreteComponent也可以有多种具体实现注 : Decorator中的Component字段若为protected,则Decorator无须实现Component接口;若Decorator中的Component字段为private,则Decorator中必须实现Component接口以达成多层修饰四、策略模式 (行为型)想法 : 将ADT中原创 2021-07-06 14:01:44 · 108 阅读 · 0 评论 -
软件构造期末复习08 Construction for Change
一、SOLID1. Single Responsibility PrincipleADT中不应该有多于1个原因让其发生变化,否则就拆分开2. Open-Closed Principle对扩展开放,对修改封闭3. LSP里氏代换原则4. Interface Segregation Principle不能强迫客户端依赖于它们不需要的接口,只提供必需的接口避免接口污染避免胖接口5. Dependency Inversion Principledelegation的时候,要通过int原创 2021-07-01 15:55:07 · 80 阅读 · 0 评论 -
软件构造期末复习07 Construction for Reuse
一、Behavioral subtyping (LSP)设A类被B类继承,那么有前置条件不能强化后置条件不能弱化不变量要保持,B可以增加新的不变量子类型方法参数:逆变(继承树向上走,更加抽象) java视为overload子类型方法的返回值:协变(向下兼容,即继承树向下走,更加具体)异常类型:协变例:java中的数组是协变的,即对于数组T[], 向下兼容,即可以容纳T的子类型区分:Type of an object vs. Type of a reference Inte原创 2021-06-30 16:22:34 · 106 阅读 · 0 评论 -
软件构造期末复习06 ADT与OOP中的等价性
immutable类型的等价性一、从三种角度定义等价性等价关系AF(a)==AF(b)观察等价性 :对两个对象调用任何相同的操作,都会得到相同的结果,则认为这两个对象是等价的注 : 前两种等价是完全相同的二、 ==对于primitive,==判断的是值是否相等对于reference,==判断的是内存地址是否相等三、equalsThe contract of equalsequals必须定义等价关系:自反、传递、对称除非对象被修改了,否则调用多次equals应是同样的结果遇原创 2021-06-29 21:24:05 · 100 阅读 · 0 评论 -
软件构造期末复习05 继承,重写,泛型
一、在接口中实现方法default关键字static关键字二、几种关键字的区别作用域当前类同一包内子孙类(不同包)其他包publicTTTTprotectedTTTFdefaultTTFFprivateTFFF三、Overload和Overwrite区分Overload和Overwrite前者是不同的signature,后者是相同的signatureOverload在编译时决定,Overwrite在运行时决原创 2021-06-29 19:54:38 · 49 阅读 · 0 评论 -
软件构造期末复习04 ADT
一、ADT操作分类creator : 从无到有producer : 从有到新observer : 观察器mutator : 变值器,改变对象属性二、测试ADT针对creator、producer、mutator的测试 : 利用creator针对creator的测试 : 利用creator、producer、mutator三、Representation概念Representation : 内部数据结构Invariant表示泄露 : client不应该有权限直接更改Rep原创 2021-06-29 13:19:42 · 83 阅读 · 0 评论 -
软件构造期末复习03 Specification
一、Pre-condition和Post-condition前置条件:对客户端的约束,在使用方法时必须满足的条件后置条件:对开发者的约束,方法结束时必须满足的条件契约:如果前置条件满足了,后置条件必须满足二、Specification撰写@param : 表明参数的前置条件@throws : 表明异常@effects : 表明函数运行结果,包括函数可能会对参数造成的影响@returns : 表明后置条件三、确定性与陈述性确定性(deterministic) : 仅有一个合法输出原创 2021-06-28 21:29:13 · 139 阅读 · 0 评论 -
软件构造期末复习01 测试
一、测试用例的划分设函数F为X到Y的映射测试策略既可以是针对X中某一个成员的划分也可以是针对X中几个成员关系的划分每一种划分都可以,都算作测试策略中的一个维度二、在注释中撰写测试策略在测试函数的spec中记录划分方法,包括特殊值,边界等每一个assert标明属于测试策略的哪一部分三、覆盖率函数覆盖:所有函数都被调用?语句覆盖(statement): 所有语句都执行?分支覆盖条件覆盖路径覆盖:所有分支的组合都被测试?...原创 2021-06-28 15:32:49 · 69 阅读 · 0 评论 -
软件构造期末复习02 数据类型与类型检验
一、原始类型(primitives)包括:int, long, byte, short, char,float, double, boolean除去这8种数据类型,其他(包括class,数组)都是引用(reference)类型java中,int类型的1和boolean类型的true之间不能互相替换二、静态检查静态检查仅仅检查类型,不检查值三、immutable和mutable1. 改变变量与改变变量的值改变一个变量:改变这个变量指向的地址改变一个变量的值:改变这个变量指向的地址原创 2021-06-28 19:04:11 · 69 阅读 · 0 评论