软件构造笔记
文章平均质量分 76
ZYTmiss
这个作者很懒,什么都没留下…
展开
-
软件构造笔记(十六)---PPT第十二讲
面向正确性与健壮性的软件构造两个特性健壮性正确性错误与异常ErrorExceptionchecked Exceptiontry-catch-finallyunchecked Exception自定义异常类Assertions两个特性健壮性1.健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度。2.面向健壮性的编程(1)处理未期望的行为和错误终止(2)即使终止执行,也要准确/无歧义的向用户展示全面的错误信息(3)错误信息有助于进行debug尽可能保持软件运行而不是总是退出两者的比较原创 2021-07-04 11:30:20 · 213 阅读 · 0 评论 -
软件构造笔记(十五)--PPT第十一讲
面向可复用性和可维护性的设计模式Creational patterns 创建型模式Structural patterns 结构型模式Adapter 适配器模式Decorator 装饰器模式Behavioral patterns 行为类模式Strategy 策略模式Template Method 模板模式IteratorVisitor设计模式的对比共性模式1共性模式2Creational patterns 创建型模式工厂方法模式 当client不知道要创建哪个具体类的实例,或者不想在clie原创 2021-07-03 15:53:22 · 230 阅读 · 0 评论 -
软件构造笔记(十四)---PPT第十讲
面向可维护性的构造技术OO设计原则:SOLID(SRP) The Single Responsibility Principle(OCP) The Open-Closed Principle(LSP) The Liskov Substitution Principle(ISP) The Interface Segregation Principle(DIP) The Dependency Inversion PrincipleOO设计原则:SOLID(SRP) The Single Resp原创 2021-07-03 13:50:34 · 167 阅读 · 0 评论 -
软件构造笔记(十三)---PPT第九讲
面向复用的软件构造技术LSP原则-Liskov替换原则协变 Co-variance通配符逆变 Contra-variance比较Comparator< T>Comparable< T>Delegation 委派CRP委派的四种形式白盒框架黑盒框架LSP原则-Liskov替换原则一.基本内容(子类型多态)1.子类型可以增加方法,但不可删2.子类型需要实现抽象类型中的所有未实现方法3.子类型中重写的方法必须有相同或子类型的返回值或者符合co-variance的参数4.子类型原创 2021-07-03 11:21:48 · 185 阅读 · 0 评论 -
软件构造笔记(十二)---PPT第八讲
ADT和OOP中的等价性前言引用等价性对象等价性equals()函数hashcode()函数观察等价性行为等价性总结前言等价性的划分:不可变对象的引用等价性==和对象等价性equals()可变对象的观察等价性和行为等价性引用等价性== 操作符比较引用。它测试引用相等。两个引用是 == 如果它们指向内存中的相同存储。在快照图中,如果两个引用的箭头指向同一个对象气泡,则它们为==。== 对基本数据类型,使用== 判定相等对象等价性equals()函数equals()操作比较对象内容——换原创 2021-07-02 17:17:31 · 193 阅读 · 0 评论 -
软件构造笔记(十一)---PPT第七讲
面向对象的编程静态/实例方法接口接口和类静态工厂方法default三个关键字重写 Override重载 Overrload泛型静态/实例方法静态变量/方法:与类关联的变量,而不是与类的实例关联的变量。若将方法与类关联,则为静态方法 要引用类变量和方法,可以用句点(’.’)将类的名称和类方法或类变量的名称连接起来实例变量/方法:不是类方法或类变量的方法和变量称为实例方法或实例变量。 要引用实例方法和变量,必须引用来自类实例的方法和变量。总结:类变量和类方法与一个类关联,并且每个类只出现一次原创 2021-07-02 16:17:25 · 170 阅读 · 0 评论 -
软件构造笔记(十)---PPT第六讲
抽象数据类型ADTADT操作的四种类型Creator 构造器Producer 生产器Observer 观察器Mutator 变值器测试四种类型ADT特性表示独立性 Representation Independence不变量 InvariantsAF和RI两个空间抽象函数AF表示不变量RI总结抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。可变类型的对象:提供了可改变其内部数据的值的操作不变数据类型: 其操作不改变内部值,而是构造新的对象原创 2021-07-01 21:16:05 · 157 阅读 · 0 评论 -
软件构造笔记(九)---PPT第五讲
设计规约行为等价性规约前置/后置条件设计规约规约的强度行为等价性举例来说:站在客户的角度,下面两个函数行为是否等价分情况:1.当val缺失时,findFirst返回arr的长度,findLast返回-12.当val出现两次时,findFirst返回较低的索引,findLast返回较高的索引。3.但是当val恰好出现在数组的一个下标处时,这两个方法的行为是相同的。当它们调用这个方法时,它们将传入一个包含一个元素val的arr。对于这样的客户端,这两个方法是相同的。所以,其实现在没有办法准确定义原创 2021-07-01 17:15:56 · 159 阅读 · 0 评论 -
软件构造笔记(八)---PPT第四讲
数据类型与类型检查数据类型静态/动态类型检查静态类型检查原理种类动态类型检查种类两者关系可变/不变的数据类型不变的数据类型finalString特点可变的数据类型StringBuilder特点解决可变类型不安全的方法Snapshot理解数据类型数据类型基本数据类型/对象数据类型静态/动态类型检查静态类型检查原理 可在编译阶段发现错误,避免了将错误带入到运行阶段,可提高程序正确性/健壮性。 Java是静态类型语言,所有变量的类型在编译时(在程序运行之前)都是已知的,因此编译器也可以推导原创 2021-07-01 16:11:21 · 110 阅读 · 0 评论 -
软件构造笔记(七)---PPT第三讲
软件测试与测试优先测试优先编程测试优先编程1.白盒测试:对程序内部代码结构的测试2.黑盒测试:对程序外部表现出来的行为的测试3.过程:(1)先写spec(2)写符合spec的测试用例(3)写代码,执行测试,有问题再改...原创 2021-07-01 14:16:12 · 168 阅读 · 0 评论 -
软件构造笔记(六)---PPT第一讲
多维度视图和质量目标多维度试图Build-time1.build-time\moment\code-level view2.build-time\period\code-level view3.build-time\moment\component-level view4.build-time\period\component-level viewRun-time1.run-time\moment\code-level view2.run-time\period\code-level view3.run-t原创 2021-06-28 19:41:55 · 111 阅读 · 0 评论 -
软件构造笔记(五)
Java–ComparatorJava–Comparable原创 2021-06-25 22:09:36 · 58 阅读 · 0 评论 -
工厂方法--笔记四
工厂方法使用原因示例三级目录使用原因当client不知道要创建哪个具体类的实例,或不想再client代码中指明要具体创建的实例时,用工厂方法。定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。示例小A要开两个工厂做衣服,分别做短袖和长袖三级目录...原创 2021-06-21 08:37:34 · 65 阅读 · 0 评论 -
软件构造笔记(三)
判断ADT中的等价性一.引用等价性 ==二.对象等价性 equals前言:在很多场景下,需要判定两个对象是否“相等”,本文主要讨论==和equals的区别。一.引用等价性 ==对基本数据类型,使用==判定相等二.对象等价性 equals1.对对象类型,使用equals判定相等2.equals的实现:public class Object{ ... public boolean equals(Object that){ return this == that; //在对象等价性的判断是原创 2021-06-21 07:58:04 · 76 阅读 · 0 评论 -
软件构造笔记(二)
面向复用的软件构造技术一.复用基本概念(一)复用编程:(二)四类复用级别:二.LSP--Liskov Substitution Principle(一)内容:(二)协变:(三)逆变:三.Delegation一.复用基本概念(一)复用编程:1.programming for reuse 面向复用编程:开发出可复用的软件2.programming with reuse 基于复用编程:利用已有的可复用软件搭建应用系统(二)四类复用级别:1.源代码级别的复用2.模块级别的复用:类、抽象类、接口3.库原创 2021-06-12 08:54:33 · 1157 阅读 · 1 评论 -
软件构造笔记(一)
笔记一Java基本知识一. String、StringBuilder、StringBuffer类二. Map类基本用法多维度视图和质量目标总结一.描述软件系统的三个维度二. AST三.质量属性Java基本知识一. String、StringBuilder、StringBuffer类运行速度:StringBuilder>StringBuffer>String原因:String是字符串常量,StringBuilder和StringBuffer是字符串变量,String对象一旦创建之后该对象是原创 2021-05-04 23:56:52 · 153 阅读 · 0 评论