自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Java中的枚举类型

这里复习一下Java中的枚举类型。实际上,枚举类型是特殊的类,和C语言C++中的枚举不太一样,下面我们做详细说明。关于枚举类型有一个单独的设计模式:即单例设计模式。单例类是一个类只有一个实例,那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例,这才能是枚举类。 枚举类是把变量的值一一列出来,变量的值只限于列举出来的值的范围内。枚举类型相当于特殊的类,经过编译之后同样产生一个class文件。枚举类型中可以定义方法(包括构造 方法)、属性、静态的方法和属性、继承接口、重载覆盖等,类似于cl

2022-06-13 20:04:04 6542 1

原创 异常处理与程序的鲁棒性

这里应该是本次课程的最后一次博客,主要是回顾一下日常开发中所遇到的工程上的异常处理问题与相关的程序鲁棒性与正确性。在阅读这篇博客之前,请确保我们对异常处理有了基本的了解。在第二章我们已经学习过关于健壮性的内容,就是关于软件测试和测试优先的编程那一块内容,这一块内容我们学习了如何写spec。下面我们说的是对上面的补充与发展:正确性程序按照spec加以执行的能力,是最为重要的质量指标。正确性要保证永远不要返回错误的结果。鲁棒性系统在不正常输入情况下仍然能保持正常的程度,需要做到处理意外的输入和错误,即使终

2022-06-12 23:45:25 380

原创 Java设计模式的熟悉

快要考试了,在深入理解王老师习题课3的基础上,我自己设计了一个Java的设计模式的实例,供复习使用。本例描述了一个Shape接口,其中具体实现了mySquare和myCircle类等,注意到其实我这些类的写法有的地方不是很严谨,主要是为了联系软件构造的模式与思想,一些数学方面的小细节就没有太深入研究。首先设计了Shape接口,这是本次实践的基础:接下来设计三个类实现Shape接口:接下来考虑工厂模式,通过阅读PPT我发现,工厂方法实现初始化好像有两种方法,所以这里实现了两种,一种是static的,另一

2022-06-10 16:40:25 179

原创 异常的总结

最近复习软构,对异常类及异常处理有了更多的了解与体会。Java异常均是从Throwable中继承而来的。其中又细化为Error与Exception两大类。注意,Throwable自身也是一个类而非接口,这与Iterable和Comparable形成了对比。另外,我们注意到,如果自己创建类的时候继承了Exception,则可以认为它是一个checked类,而只有继承了RuntimeException的异常才是unchecked类。我们在实践中不应该在specification中声明unchecked类,

2022-06-09 19:20:33 154

原创 对快照图的简单理解与认识

今天做一个对快照图的简单讨论。`快照图(Snapshot diagrams)作为一种图示能表示程序运行时的各种状态——栈上的状态(方法和局部变量)、堆上的状态(创建的对象)。它是位于Run-time-Moment-Code-level层级的软件视图上,也就是说它描述的是程序运行至某一时刻、堆栈上各种东西的状态。绿圈最左边即快照图所处的位置原始值(primitive values,应该是原始数据类型的值,它们有byte、char、short、int、long、float、double、boolean共8

2022-06-07 21:34:44 519

原创 try catch 与 finally

今天学习了有关try catch finally的有关知识。下面做一些简单的总结。下面我将举出一些例子做简要的介绍:按顺序执行先执行try中return之前的代码(return语句中的表达式运算也要执行),再执行finally,再执行try中的return,最后一个return不再执行,同时,finall中的内容不会再改变try中return的返回值。程序先运行了try中的语句,接着运行了finally中的语句,但是return的值在try语句执行后就确定了。如果有异常:先执行catch中return之前

2022-06-04 20:49:19 972

原创 深拷贝与浅拷贝

最近开始复习软构,想到了关于内存的一些问题,所以今天来总结一下关于深拷贝浅拷贝的相关内容。这个概念是很容易理解的,浅拷贝是会将对象的每个属性进行依次复制,但是当对象的属性值是引用类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化。即多个变量指向一块内存地址。而深拷贝复制变量值,对于引用数据,则递归至基本类型后,再复制。深拷贝后的对象与原来的对象是完全隔离的,互不影响,对一个对象的修改并不会影响另一个对象。这样很好实现了表示不泄露。首先浅拷贝有引用拷贝:这样的话,得到的对象指向同一块内存。打

2022-06-01 22:54:59 84

原创 Java正则表达式的相关使用

文章目录前言正则表达式的一般写法总结前言明天软构实验可能要进一步深入讲解正则表达式,在那之前,我先对这一段时间以来对正则表达式的理解做一个总结正则表达式的一般写法首先是一些特殊符号:==首先是.==单独的.可以匹配单个的任意字符。比如表达式t.o 可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。==然后是[]==只有中括号里的字符才可以参与匹配,并且只能从中括号中挑选一个!比如表达式t[abcd]n 只可以匹配:tan,tbn,tcn,tdn。不可以匹配:t

2022-05-31 17:06:55 1194

原创 注解的相关理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、什么是注解二、注解的用途三、注解的实现原理总结前言通过对JUnit的使用,我了解了注解这种Java的独特的语法特性,所以在这里做一些总结。一、什么是注解注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解一般常用的注解可以分为三类:一类是Java自带的标准注解,包括@Ove.

2022-05-30 17:59:58 85

原创 软构第十二天:面向复用的构建

文章目录前言一、复用的层次及基本介绍二、如何测量复用性三、设计可重用的类总结前言这节课老师说从今往后软构接下来的内容都会专注于讲解关于代码复用的相关内容。复用是软构中十分重要的思想,因为有了复用,我们能够大大地提高软件开发的效率。复用是一种外部指标,目的是构造出可以在不同应用中重复使用的软件模块。注意,Java提供了他自己的一些API,当然那些API粒度太小,我们的目标是构造出更大粒度的API。主要的目录如下:一、复用的层次及基本介绍软件复用大概有两种层次,一个是面向复用的编程,一个是基于复用的

2022-05-25 14:10:57 116

原创 软构第十一天:第二次习题课

文章目录前言一、题干二、ADT设计思路三、SPEC设计思路总结前言今天软构课主要讲了一下一个停车场的习题,下面我凭借记忆对这次习题课进行一下回忆与分析。一、题干二、ADT设计思路首先我们明确这里的名词,以寻找可以抽象并设计类的对象。首先明确了停车场、停车位、车、一次停车等名词,同时这些名词也有自己的内在属性。然后我们明确动词,因为我们知道ADT不仅有对象,而且需要一系列的方法。所以我们知道了,需要构造停车场、构造车、停车、驶离、计费、查看状态等方法。总体来说我们可以得到以下分析结果:

2022-05-23 11:44:20 65

原创 2022 哈工大计算机系统大作业

2022-05-19 12:53:50 85

原创 软构第十天:关于hashcode和equals

文章目录前言一、等价关系二、hashCode()方法总结前言本次课首先快速结束了OOP的内容,主要是又说了一下泛型和子类,PPT后面的内容王老师就没多说了。紧接着就又开了下一章即ADT和OOP中的等价性。一、等价关系根据离散数学的内容,我们知道等价关系满足自反对称传递三条性质。在OOP中,我们可以使用equals对应AF。因为如果在AF中映射到同样的结果,我们在R中应该判断他们相等。即,我们重写的equals应该是与AF紧密相关的。当然有的时候,虽然两个对象判断为相等,他们两个中的一些方法却不

2022-05-18 13:58:16 118

原创 软构第九天:OOP编程语法

文章目录前言一、OOP的基本概念二、基本概念类,对象,属性,方法三、接口四 继承与重写五 多态 子类型 重载总结前言上节课说了ADT的相关内容,这节课老师讲述了ADT思想在编程语言中的具体体现-》OOP。OOP思想我们已经很熟悉了,这次其实就算是复习。一、OOP的基本概念OOP最典型的特点就是封装,继承,多态。我们这里讲的更细一些,大概分为如下四点:二、基本概念类,对象,属性,方法设计类的时候,我们需要注意该类的行为有哪些,状态有哪些,这构成了对象或类的两个基本的内容即方法和属性。如下图

2022-05-16 17:35:49 252

原创 软构实验知识补充:什么是代码覆盖率

学习内容:关于代码覆盖率的相关知识与IDEA检测代码覆盖率的方法。背景:今天做软构lab2时需要在Eclipse下面使用Eclemma工具测试所谓的代码覆盖率。我对这个概念产生了一些好奇,于是做了一些调研。基本概念:代码覆盖率,也称为测试覆盖率,可衡量自动化测试执行的代码比例。代码覆盖率工具针对特定的编程语言。 其使用一系列标准衡量覆盖率,包括代码行数、方法或函数、分支和条件。 您可以使用代码覆盖率工具识别代码库尚未被自动化测试覆盖的部分。监测代码覆盖率指标有助于确保您保持足够的自动化测试

2022-05-12 13:21:21 1999

原创 软构第八天:RI与AF(表示独立性相关内容)

文章目录前言一、关键概念二、继续设计ADT总结前言今天讲的内容十分抽象,接下来我将分享一下课程的内容与我自己听完课后的理解。一、关键概念什么叫rep?直观来看,就是我们所实现的类中的一个个的属性。这里rep是representation的意思。表示独立性客户端在使用ADT时不需要考虑ADT内部的实现,我们对ADT内部的修改不会影响到外部spec和客户端的代码。除非我们的规约有明确说明pre-condition和post-condition,否则我们不能假定ADT采用的类型,比如一个Graph

2022-05-11 13:52:16 174

原创 软构第七天:规约设计的进一步深入与ADT的相关知识

文章目录前言一、再谈规约设计二、ADT总结前言这次软构课是第一次线下上课,王老师讲课的课堂效果很好,是一位优秀的老师。前半节课我们讲授了规约剩下的一部分知识,后半节课我们讲授了ADT设计的一些内容。一、再谈规约设计我们注意到在设计API时,只靠程序员的良心是没有办法保证程序的安全性的,所以我们考虑使用不可变数据类型(即imutable的类型)来作为返回值,这样能够有效地解耦,达到客户端与开发者相分离,提高了程序的安全性。我想到了类似Python中的元组类型,这种情况可能也是为了保持程序的安全性。在

2022-05-09 13:15:33 163

原创 软构第六天:规约的设计

文章目录前言一、规约是什么?二、规约的等价性总结前言规约是以前我们打代码时很少注意到的内容,今天的软构课教给我们在今后的软件开发语境下,对规约的一般的通识,因此我们一定要注意规约的设计规范.一、规约是什么?如上图所示代码前对其功能的大概描述就是一种规约,规约主要是为了便于程序员与他人或者未来的自己进行交流.规约的意义如下:Java中有一种特殊的注释,即注解,这种语法特性可以使得特殊的注释对主体代码产生一些影响,便于我们的测试.通过以上的认识,我们可以看到规约最大的功能就是能够提高企业

2022-05-04 18:48:07 301

原创 软构第五天:OOP与Java的一些内存机制

文章目录前言一、Data Type 和 Type Checking二、Static vs. dynamic三、可变数据与不可变数据总结前言今天主要先复习了一下前几节课的内容,然后老师又进行了Data Type和Type Checking的讲解.下面我们跳过复习内容直接进行第二部分的复习回忆.一、Data Type 和 Type Checking前几节课我们回答了什么是高质量的软件,如何从不同维度刻画软件,以及软件构造的基本过程和步骤.本章我们讲解的是更为细节的技术部分即ADT与OOP.亦即抽象数

2022-05-02 15:10:55 475

原创 软构第四天:总结一下昨天的实验课与今天的课堂内容,进一步了解Git

文章目录前言一、课堂复习二、实验一总结前言今天老师主要讲解了git的使用方法,昨天实验课上老师布置了实验一的内容.具体的实验要求大家可以自行搜索哈工大实验课lab1的题目.此时我尚且没有完成实验,但是我可以总结一下实验的要点.一、课堂复习老师今天主要讲解的是Git的入门使用,这个在以前就会用,此处不展开.另外老师还讲解了项目开发类型的演进,从瀑布式到现在的敏捷开发(增量+迭代),注意我们的软件开发是面向客户的,所以我们的开发一定要具有足够的可扩展性,而且需要客户方的参与.一些概念:SCM:软件

2022-04-27 19:20:30 932

原创 软构第三天:习题课复习回顾与 idea+git联合开发的小坑

文章目录前言一、测试样例选取二、习题课复习总结前言今天是第三节软构课,课上老师首先继续上节课讲解了测试样例的选取,具体有笛卡尔积选择法与最小覆盖选择法(这个是我自己给它们起的名字).第二节课讲了今天的习题.下面就把今天学到的知识做一下复习总结.一、测试样例选取首先以BigInteger中的multiply()方法引入今天的讨论,该方法接收两个BigInteger对象,返回一个BigInteger对象,为接收的两者的乘积.我们可以根据正负的角度来对二维输入数据空间进行划分.然后我们考虑特殊情况如-

2022-04-25 19:07:09 205

原创 软构第二天:课程复习,自己的思考与Junit的进一步学习

文章目录前言一、知识复习二、JUnit使用步骤总结前言今天上了软构的第二节课,首先我先做一下课程内容的复习,然后再对今天所学的课程做一些思考与补充.一、知识复习首先老师先讲述了软件构造的后三个维度,如下图:其中细红线框出来的就是本节课所讲述的三个.另外粗红线标注出的是我们应该着重注意的五个维度.接下来老师又讲述了软件构造视图之间的转换.具体如下图:这个部分我猜应该了解即可,并无太多需要思考的地方.紧接着就是比较重要的评价软件质量的标准,大致分为外部标准与内部标准.外部标准就是影响用户使用

2022-04-20 19:05:49 206

原创 软构第一天:JUnit和Git环境配置与基本使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Junit配置二、Git配置1.git的安装2.git的使用总结前言软构学习第一步,先配环境.本文将讲述junit和git的环境配置方法.一、Junit配置什么是JUnit?JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架.

2022-04-18 17:35:08 568 1

原创 哈工大软件构造如何上传外部博客?

前言今天新开了一门软件构造的课程,中午就开始忙有关课程的一些东西,没想到第一天就踩了一些坑233333.我今天来跟大家分享一下关于乐学网的使用问题.一、乐学网的基本页面乐学网的首页大概长这样.刚进入的时候需要先注册这学期所选的课程.输入密码之后即可接收到软件构造这门课.当时这步操作是在手机上完成的,所以没有用图片保存下来当时的详细操作,还请各位谅解!二、使用步骤首先我们点开个人主页修改一下个人信息.比如图片和电子邮件.注意这里电子邮件还挺重要的,因为各种作业是否提交成功均会以电子邮件的形式进

2022-04-18 13:17:47 141

javascript_timeline.svg

javascript_timeline.svg

2024-02-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除