软件构造
lll_90
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
软件构造笔记——3.5 Equality in ADT and OOP
一、ADT的等价性主要通过三种方式定义:1.AF: R → A某数据结构所映射的抽象值相同,即 AF(a)=AF(b)2.a与b等价,倘若a与b在同一个等价类中(a与b满足某自反,对称,传递关系)3.从观察角度对两个对象的任何操作都会得到相同结果。二、== 与. equals()区别比较的是内存地址;equals()比较的是对象的内容tips:在没有被override 的equal...原创 2019-04-12 23:28:17 · 1490 阅读 · 0 评论 -
软件构造——3.4类图、重写与重载
工厂方法:在一定程度上,用接口声明的对象需要调用某种具体实现类的构造器,而这些构造器在接口的spec中没有说明,就需要使用者了解代码内部的结构,了解有那些构造器,这从一定程度上破坏了抽象性。这就需要在接口中使用静态工厂方法。tips:但是由于不同实现有不同的性能、优点,因此有时需要进行折中。类图类接口接口与实现类的关系类与类之间的继承多态方法多态性:重载(方法名相同,参数列表...原创 2019-06-24 22:13:10 · 2113 阅读 · 0 评论 -
软件构造——3.2-3.3设计specification与表示泄露
3.2要求掌握1.前置条件和后置条件的定义2.什么是不确定性3.什么是声名性规范和操作性规范4.比较规格说明的强度使用方法的用户不需要知道方法是如何工作的,我们称之为“抽象”。行为是否等价由是否满足相同的规格说明决定。可变方法:改变其参数(因为传入的非原始数据类型是引用)不可变方法:返回一个新的对象,来表示对参数的修改。如:注意:如果没有明确说明,则默认输入值是不可变的,即该方法...原创 2019-06-24 20:05:25 · 1449 阅读 · 0 评论 -
软件构造——3.1不可变ADT与snapshot
注意结合的顺序double a = (double)2/3; // a = 0.6666…Data是可变数据类型,LocalDataTime是不可变数据类型对变量赋值是在改变变量的指向,指向不同的值.改变可变变量的内容时,是在改变变量内部内容的引用.于是有了改变变量引用和改变变量值的区别。对于String是不可变类型,赋值时,付给赋给的是引用,而不是值。即改变引用,不改变值。对于St...原创 2019-06-23 23:27:54 · 1334 阅读 · 0 评论 -
软件构造——Java中的型变与泛型
型变:当子类型关系出现在更加复杂类型中时,新类型中有着怎样的类型关系?如:Cat是Animal的子类,那么List 和List有什么关系?型变有如下三种情况:Covariant(协变): 保持子类型关系List是List的子类Contravariant(逆变):反转了子类型关系 ,如List是List的子类Invariant(不变): 没有子类型关系,如List nor 和List均...原创 2019-06-22 21:34:22 · 2398 阅读 · 0 评论 -
软件构造笔记——5.1各层次的复用与外部表现
根据复用的层次不同,有多种类型的划分。Design patterns基于设计模式的复用:体现在抽象和具体对象的交互上;Component-based development:基于组件层面的复用Application frameworks:提供一些可进行调整、拓展的抽象或具体类Legacy system wrapping:只留下接口提供服务Source code层面:方法、声明实现:代码...原创 2019-06-22 17:24:07 · 1547 阅读 · 0 评论 -
软件构造笔记——Logger的使用总结
这里使用的是java.util.logging: Logger1.首先获得一个Logger对象 Logger myLogger = Logger.getLogger("com.mycompany.myapp");2.设置Logger的记录等级logger.setLevel(Level.FINE);logger有7个可见等级,分别为SEVEREWARNINGINFOCONFI...原创 2019-06-16 20:57:49 · 4070 阅读 · 0 评论 -
软件构造——实验4之debug
体会:下面debug的过程其实主要是通过eclipse中的静态检查和断点的单步调试实现的。只要根据期望输出与实际输出定位好bug的大致位置,然后仔细查看代码,判断问题可能出现的位置,缩小范围后,再进行单步调试,根据程序不合逻辑之处,找出bug所在。其实,这种调试方式是最最基础和通用的,不同于后面的多线程并发,需要通过堆栈了解程序在运行时的状况。不过那部分操作还不太熟悉,需要多加巩固。好了,下面是...原创 2019-06-15 23:18:32 · 1470 阅读 · 0 评论 -
软件构造笔记——2.1 软件开发模型与软件配置管理
这里,将Software Development Lifecycle 简写为SDCL,将Software Configuration Management简写为SCM。1.软件开发的目标是活力与较长的生命周期。2.传统设计模式从基本的,可以分为两种:线性的(瀑布模型、增量模型)与迭代的(原型法、螺旋模型)还有特殊的V模型是,基于验证的。3.最佳的开发方式主要考虑的是:用户参与(适应变化需要...原创 2019-06-15 22:51:46 · 1710 阅读 · 0 评论 -
软件构造笔记——第一章 软件构建的质量目标
1.内部质量和外部质量的区别:最重要的是外部质量,因为它是用户直接可以感受到的;而对其起着决定性作用的是内部质量。2.正确性和健壮性:取决于规格说明。符合规格说明的即为正确,异常即为规格说明没有涉及的部分,而错误是不符合规格说明。3.可拓展性:软件的体系结构越简单,模块的自治性越强就越容易适应外部变化(可拓展性)4.可复用性与兼容性:可复用性类似于库的功能;兼容性强调程序之间的信息交...原创 2019-06-15 20:48:23 · 1755 阅读 · 1 评论 -
软件构造课程——git基本命令~个性化总结
为了将每日所学整理起来,日积月累,从小白成长为大牛,我也要开启我的博客之旅啦!在这里,把今天提交代码时使用的基本命令记录下来,以及遇到的一些问题和解决方式。首先,git init 初始化本地仓库通过ls查看当前文件夹中的文件,看看所要提交的文件是否已经在当前目录中这里就假设文件名为Lab_2.zipgit add Lab_2.zip 将Lab_2.zip添加到缓存git sta...原创 2019-04-04 23:42:35 · 1419 阅读 · 0 评论 -
HIT 软件构造 Lab6
实验问题解决及经验总结:本次实验的任务是每隔一段时间,同时产生一定数量的猴子线程,各自完成过河任务。在本次实验过程中,实现多线程任务主要运用了以下四点新知识:1.通过重写Runnable接口,重写run函数完成猴子线程的运行;2.通过线程池完成多线程的启动,关闭管理。ExecutorService exe = Executors.newFixedThreadPool(monkeyGrou...原创 2019-06-15 00:52:29 · 1518 阅读 · 0 评论 -
将Map根据键值进行排序
使用TreeMap和Comparator看下面链接有更详细的介绍(包括按照键值、value排序的)https://www.cnblogs.com/ltb6w/p/7862251.html原创 2019-04-17 21:20:42 · 2945 阅读 · 0 评论 -
java的四种文件输入输出方式
BufferAndChannel.javapackage fileio;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.ByteBuf...原创 2019-07-18 22:49:04 · 3364 阅读 · 0 评论
分享