HIT软件构造
文章平均质量分 79
Apologise�
这个作者很懒,什么都没留下…
展开
-
软件构造—AF、RI
在复习过程中,重新整理一下AF、RI:1、首先要理解两个空间:表示空间、抽象空间①表示空间里面包含的是值具体的实现实体。一般情况下ADT的表示比较简单,有些时候需要复杂表示。②抽象空间里面包含的则是类型设计时支持使用的值。这些值是由表示空间抽象出来的,也是使用者关注的。③ADT实现者关注表示空间,而用户关注的是抽象空间。④R->A(表示空间->抽象空间)映射特点(1)每一个抽象值都是由表示值映射而来 ,即满射:每个抽象值被映射到一些rep值(2)一些抽象值是被多个表示值映射而来的,原创 2020-07-06 16:48:09 · 558 阅读 · 0 评论 -
软件构造—集合类—Collections简介
1、简介:Collections用于对一个集合进行各种操作,返回指定要求的Collection2、主要方法介绍(1)static boolean addAll(Collection<? super T> c, T… elements)添加所有元素至某集合(2)static int binarySearch(List<? extends Comparable<? super T>> list, T key)通过二分搜索查找指定元素(3)static void c原创 2020-06-27 20:21:36 · 207 阅读 · 0 评论 -
软件构造—实现类的可比较—Comparable 和Comparator
在Java中如果要对两个对象实现比较(排序),可以通过Comparable 和Comparator两个接口实现,本篇文章对这两个接口实现分别进行介绍。1、Comparable简介如果一个类需要实现比较,则可以直接extends Comparable,然后Override其中的CompareTo方法即可,注意:①如果一个对象x与传入的y进行比较,即a.compareTo(b),若返回负数,则表明a<b,若返回0,则表明a=b,若返回正数,则表明a>b②该compareTo方法必须与equa原创 2020-06-23 17:15:51 · 254 阅读 · 0 评论 -
软件构造—设计模式—适配器模式(Adapter Pattern)
在软件构造的实验中介绍了两种模式,现在承接继续介绍第三种——适配器模式(Adapter Pattern)1、概念理解:简单的理解,就是比方说手机的内容想要进行投影,然而手机是Type-c接口,而投影仪却是VGA接口,这时我们便需要一个转换器才能将手机与投影仪连起来,这个转换器起到的作用就是适配器。2、实现我们就以上面的例子进行实现,来介绍适配器模式(1)、我们定义一个手机类,其为Type-c接口public class Phone{ public void Typec(){ System.原创 2020-06-22 22:06:26 · 127 阅读 · 0 评论 -
软件构造Lab4实验总结—equals()和hashCode()
在实验四debug修正完善过程中,发现自己的代码中很多类都只写了equals()方法,却没有完成hashCode()方法,故对这两个方法进行学习并在此进行记录。原创 2020-06-11 11:49:52 · 103 阅读 · 0 评论 -
软件构造Lab4实验总结—spotbugs
在实验四中要求使用spotbugs发现并修改软件中的bug,故我在本篇文章中简要记录一下spotbugs的使用的以及一些常规的bug及其处理。1、简介:SpotBugs是Findbugs的继任者,用于对代码进行静态分析,查找相关的漏洞。 目前SpotBugs 3.1.3 自带检测器,其中有90余种Bad practice,155余种Correctness,9种Experimental, 2种 Internationalization,17种Malicious code vulnerability,46原创 2020-06-06 15:37:03 · 403 阅读 · 3 评论 -
软件构造Lab4实验总结—日志
在实验四完成之后,对完成过程中的问题进行一些记录便于日后查看。这篇文章主要介绍日志。我在本次实验中使用的是Java自带的日志类。1、概念:日志的作用在于记录软件执行过程中出现的问题,便于日后查找修改2、日志级别:DEBUG:程序调试bug时使用INFO:程序正常运行时使用WARNING:程序未按预期运行时使用,但并不是错误ERROR:程序出错误时使用,如:IO操作失败CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使 用默认的是WARNING等级,当原创 2020-06-05 20:28:18 · 130 阅读 · 0 评论 -
软件构造Lab3实验总结—设计模式
本次继续在总结在软件构造实验三中遇到的问题—设计模式由于本次实验需要实现的三个App存在很多相似性,因而如果可以高效率的实现代码复用的话,无疑会给实验降低大量的难度。而说到复用,我们首先想到的就是继承,将可以复用的代码全部都放到父类,然后子类去继承实现复用。然而这样做是有很多问题的:一是代码的耦合度太高,在后期进行修改维护时会存在“牵一发而动全身”的情况,另外就是如果存在菱形继承(即一个父类被两个子类继承,而这两个子类又被一个子类继承,形成了菱形结构),那么最下端的子类在调用父类的方法时显然会造成混乱,诸原创 2020-06-05 17:48:04 · 274 阅读 · 0 评论 -
软件构造Lab3实验总结——状态(State)
前言:在漫长的实验三过去之后,经历了无数的踩坑之后总算是完成了,因而再次分几个部分记录一下遇到的问题及解决方案状态(State)模式这是我们在开发程序时候会经常遇到的事情,一个程序在不同的上下文环境中,不同的方法可能会有不同的返回值,或者是对于某些方法,在部分状态中实现,而在另一些状态中则不予实现。因而我们就需要实现状态模式的开发。在此见要说明一下状态模式的设计过程:首先我们需要抽象出一个状态类,考虑到程序中所有与状态有关的方法(主要为状态转移方法),全部在这个类中完成抽象方法的定义(在我的设计模式原创 2020-05-21 11:35:28 · 374 阅读 · 0 评论 -
软件构造Lab2实验总结
软件构造Lab2随笔1、每写一个方法之前先完成方法的规约,是一个非常好的习惯,可以时刻提醒我们在完成整个方法的过程中不要跑偏,注意条件限制,而为了完成实验要求而在方法全部写完之后完成规约是一个十分低效且浪费时间的行为。2、因为在实验过程中完全从无到有编写了P3的test文件,遇到许多问题在此记录一下,以备后用①、junit中几个常用的annotation:(1)@Before:初始化方法 ...原创 2020-04-13 19:59:57 · 120 阅读 · 0 评论 -
软件构造Lab1实验总结
截至今日,软件构造的Lab1已经全部完成,故编写本篇博客记录在实验一过程中遇到的问题以及相应的解决方法。一、P2中的凸包问题我使用了gift-wrapping算法,再此对其进行一个简要的介绍算法简介:以任意凸包上的点建立坐标系,该点连接其他点形成的极角中,绕该点逆时针方向的位于凸包上的点到该点极角最小。而在本算法中,找到点集中位于最左下角的点,该点必然在凸包上,然后以该点为起点,利用向量的叉...原创 2020-03-18 14:30:37 · 186 阅读 · 0 评论