![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 50
qq_42601311
这个作者很懒,什么都没留下…
展开
-
软件构造相关
设计可复用的类具体的技术有封装和信息隐藏、继承和重写、多态、子类型、重载、泛型编程本节讲解:行为子类型、lsp(李氏原则)、委派、组合Behavioral subtyping and Liskov Substitution Principle (LSP)子类型多态客户端可用统一的方式处理不同类型的对象行为子类型(java)compiler强制:子类型可以增加方法,但不可删除子类型需要实现抽象类型中所有未实现的方法子类型中重写的方法必须有相同的或者满足协变的返回值子类型中重写的方原创 2021-07-06 19:50:57 · 64 阅读 · 0 评论 -
软件构造相关
关于如何创建类的新实例的模式(creational patterns)工厂方法模式(factory method pattern)什么时候使用当客户端代码不知道要创建哪个类的实例的时候当客户端不想在client代码中指明具体的要创建的类时给出一个例子现在这里有一个接口Trace,FileTrace和SystemTrace分别是继承这个接口的两个子类,正常使用如下:Trace log = **new SystemTrace();**log.debug( "entering log" );.原创 2021-07-06 19:48:33 · 52 阅读 · 0 评论 -
软件构造相关
Static vs. Dynamic testing静态测试:用眼睛看,评审、走查、检查等动态测试:使用测试用例集进行测试测试套件每个测试集的目标和说明测试运行的配置说明使用这些测试的前置条件单元测试(unit test)含义:针对软件的 最小单元模型开展测试,隔离各个模块,容易定位错误和调试单元测试需要考虑的问题:模块接口、本地数据结构 、保证模块中的所有语句都被测试覆盖到、测试边界条件junit使用使用入门,点这里覆盖度分析含义字面意思测试内容函数覆盖、语句覆盖原创 2021-07-05 18:38:47 · 74 阅读 · 1 评论 -
软件构造相关
bug存在说明什么代码错误需求没有完成用户需求理解错误设计文档中有逻辑错误测试不足在复现bug的时候需要控制什么控制软件版本控制环境相同控制输入数据相同调试的过程复现错误(repreduce)在进行错误复现的时候,要控制软件版本、运行环境、输入数据不同的版本的spec是不一样的不同的环境,比如不同的操作系统在控制输入的时候,一定要尽量减小input的size如果你不能控制输入,那么请使用推断输入和记录输入定位错误(diagnose)先猜想错误的位置(抽象),然后做实验进原创 2021-07-05 18:38:03 · 63 阅读 · 0 评论 -
软件构造相关
Error 和 ExceptionError:一般是内部错误,一旦发生就无法挽回,所以就只能终止程序的运行。例如:空指针、资源枯竭Error分类:用户输入错误,设备错误,物理限制Error举例:VirtualMachineError 虚拟机坏了或者资源枯竭OutOfMemoryError 内存告罄StackOverflowError 爆栈InternalError 意想不到的内部错误LinkageError 描述在依赖关系中的错误NoClassDefFoundError 一个类的实例引用原创 2021-07-05 18:37:16 · 40 阅读 · 0 评论 -
软件构造相关
build-time viewsidea =>requirement=>design=>code=>installable/executable package代码层面:代码的逻辑组织component层面:代码的物理组织moment层面:特定时刻的软件形态period层面:软件形态随时间的变化Build-time, moment, and code-level view如何使用基本程序块逻辑地组织源代码,如函数、类、方法、接口等,以及它们之间的依赖关系源代码、语法原创 2021-07-05 18:36:32 · 55 阅读 · 0 评论 -
软件构造相关
coding从用途上划分:编程语言、建模语言、配置语言、构建语言从形态上划分:基于语言学的构建语言、基于数学的形式化构造语言、基于图形的可视化构造语言编程语言建模语言建模语言是一种用于展示结构中的信息的人工语言,它的目标是可视化地理解、验证、交流一个系统的设计配置语言配置文件配置程序的参数和初始设置,为了改变软件在运行时的行为XML,YAML,JSONreview and static code analysis代码评审形式:结对编程、走查、正式评审会议、自动化评审(checks原创 2021-07-05 18:35:40 · 41 阅读 · 0 评论 -
软件构造相关
设计可复用的库和框架library和framework被称为系统层面的复用,是因为它们不仅定义了可复用的接口/类,并且定义了这些类之间的交互关系、调用关系术语API:应用编程接口,库和框架的接口client:使用api的codeplugin:定制框架的客户端代码extension point:框架内预留的空白,开发者开发出符合接口要求的代码,框架可调用,从而相当于开发者扩展了框架的功能protocol:客户和api之间预期的交互序列callback:框架将调用一个插件方法来访问定制功能l原创 2021-07-05 18:34:01 · 42 阅读 · 0 评论 -
软件构造相关
结构型模式adapter(适配器模式)什么时候使用将某个类/接口转换为client期望的其他形式同故宫增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类模型结构其实它的本质就是使用一个中间的类,将原来的方法隔离,为原来的方法重新定义接口,并提供给client使用decorator(装饰器模式)什么时候使用为对象增加不同侧面的特性对每一个特性构造子类,通过委派机制增加到对象上同时使用了子类型和委托机制模型结构decorator中有一个rep,用来原创 2021-07-05 18:33:17 · 38 阅读 · 0 评论 -
软件构造相关
Specification: Programming for communicationspecification输入/输出的数据类型功能和正确性性能只讲“能做什么”,不讲“怎么实现”behavioral equivalence(行为等价性)站在客户端角度看行为等价性根据规约判断行为是否等价两个函数符合这个规约,故它们等价规约结构(前置条件、后置条件)前置条件:对客户端的约束,在使用方法时必须满足的条件,使用关键字requires后置条件:对开发者的约束,方法结束时必须满足的条件原创 2021-07-05 18:29:48 · 51 阅读 · 0 评论 -
软件构造相关
名词解释进程(Process)和线程(thread):并发编程的两个基本单元。进程:(1)和同一个机器上的其他进程是彼此隔离的。(2)拥有私有的内存空间,运行时不能共享变量。(3)通过IPC(pipe/socket)进行通信。线程:(1)共享所在进程的内存空间(2)共享可变对象的共享时,需要同步(使用synchronization关键字维护线程安全)。(3)有独立的运行时栈,就像一个普通的函数。(4)杀死线程不安全。Concurrent(并发):在单核机器上,“多进程”并不是真正的多个进程在同时执行,而原创 2021-07-05 18:28:34 · 51 阅读 · 0 评论 -
设计模式总结
Java中部分设计模式的总结Strategy模式:使某个类拥有一系列接口变量,用一系列方法类来实现接口以实现其中的相关算法。创建类的时候指定需要使用哪些具体的方法类来给接口变量赋值,即可达到代码重用的目的。Observer模式:某对象状态变化时,通知所有的订阅者。这个对象要拥有所有订阅者的列表。该对象实现IObservable接口,内部有notify add remove等方法,而订阅者实现IObserver接口,内部有update方法。此方法避免了观察者对观察对象的不断检查。Decorator模原创 2020-07-17 11:58:11 · 74 阅读 · 1 评论 -
JAVA文本输入输出
Java能实现文本文件输入输出的类种类繁多,正确使用的难度极大。本文旨在总结各种IO的实现方法。以下六个函数分别完整实现了六种IO,希望对大家有所帮助。package apis;import java.io.*;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class Readfile {/**a method of readfile./public static void main(Strin原创 2020-07-17 11:57:05 · 177 阅读 · 0 评论 -
2020-03-14
lab1实验有感原创 2020-03-14 18:07:57 · 83 阅读 · 0 评论