
软件构造课程博客
风声在耳
好好学习,daydayup
展开
-
Lab4漫谈-Logger-log4j
关于Log4j的使用网上的使用教程大多不靠谱(除了关于配置文件的一些说明)需要用的jar包应该就是这些了,主要是上面3个,下面的两个是最新版本的。先说一下这个工具的使用吧,相对于自带的Logger,它的繁琐在于配置文件的编写。之前从来没写过,看网上一大堆论述,实际上提炼出来就是这个还分种类,比如web的比如java应用的(本程序中使用的),然后IDEA新建配置文件的方法就是这样了:log4j.rootLogger=debug,stdout,logfilelog4j.appender.stdo原创 2020-06-07 16:51:23 · 486 阅读 · 0 评论 -
Lab3漫谈(3)-面向对象编程重要原则汇总
关于Lab3内容涉及到的几个原则汇总今晚算是有时间来更新博客了,一方面是对Lab3中涉及到的一些知识点重新归纳,对Lab3有个交代,毕竟肝了一周才完成。另一方面考试也临近了,一点点开始复习吧。单一功能原则:在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。所有它的(这个类的)服务都应该严密的和该功能平行(功能平行,意味着没有依赖)。保持一个类专注于单一功能点上的一个重要的原因原创 2020-05-21 21:46:35 · 257 阅读 · 0 评论 -
Lab3漫谈(2)-工厂方法
简介定义:“工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。”作用:将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)哪一个类。优点:更符合开闭原则:新增产品的时候,只要增加相应的具体产品类和相应工厂类符合单一职责原则:一个具体工厂只创建一个对应产品缺点增加新产品将额外产生更多的工厂类和产品类,这种增长与后续更新的产品种类的数目正相关。而类数目的增原创 2020-05-21 21:07:00 · 264 阅读 · 0 评论 -
Lab3漫谈(1)-状态模式
前言Lab3中需要使用状态模式来控制一个计划项的运行状态,并且在五个应用中总共有两类状态转换图(状态机)。因为有一些状态是重叠的,因此可以将他们共享,二选一,我采用布尔变量控制,但是状态模式的基本“套路”还是没有变的。模式结构状态模式包含以下主要角色。环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。具体状态(Concrete原创 2020-05-15 15:12:30 · 141 阅读 · 0 评论 -
Java Lambda表达式应用:拉格朗日插值
前两天学习了Lambda表达式的一些基本用法,起因是为了编写计算方法课程实验中的拉格朗日插值程序,我想要将一个函数直接作为参数,以编写更通用的程序。但是苦寻无果,没有找到在Java中适用的、与C中函数指针一类的东西,使用了Lambda表达式,达到了相同的效果。一些基本的概念,我在菜鸟驿站上获得了。下面是实际的一个程序,也就是拉格朗日插值法。import java.util.Scanner;public class Lagrange { public static void main(S原创 2020-05-14 18:47:18 · 449 阅读 · 0 评论 -
软件构造Lab2漫谈(2)
这部分,主要说一下P3的设计和测试。除了MyChessAndGoGame是主程序入口之外,其余均为辅助类。思路是自底向上的:首先游戏要有两个玩家,所以设计了Player类。这个也是最简单的,因为游戏的核心在于操作,而不是玩家本身的属性,当然如果你将操作作为玩家的方法,那另当别论。此外游戏肯定要有一个棋盘,所以设计一个board类,那么棋盘有哪些属性呢。这里我认为应该把棋子归到棋盘,而不...原创 2020-04-12 12:22:04 · 144 阅读 · 0 评论 -
软件构造Lab2漫谈(3)
Lab2的博客为什么放一天来写呢,其实大家都知道之前课程的进度和实验进度脱节。所以我的实验也是在最后一周再做的。这次说说P3吧,讨论一下围棋和象棋游戏中几个操作的关键逻辑。我看到有些大佬是写了GUI的,奈何小弟不才,只能写控制台了…给出我的程序流程图:接下来讨论一下象棋和围棋关于移动棋子的逻辑的相同和不同,这关系到你如何去写,因为相比其它的什么跳过操作,这部分是核心。1.移动棋子:象...原创 2020-04-08 17:38:28 · 275 阅读 · 0 评论 -
软件构造Lab2漫谈(1)
这次分为三部分。第一部分主要是考察对泛型编程的理解和应用。还有关于Set,Map,List等泛型数据的掌握情况。总结几个在实验中遇到的问题:1.如何删除List中的元素 List<Piece> all=this.board.Piece(); Iterator<Piece> iterator =all.iterator(); while(iterator....原创 2020-04-08 17:15:45 · 177 阅读 · 0 评论 -
GitHub远程仓库管理的常用命令
初始化操作就不提了。就软件构造实验的提交来说。一般需要会如下操作:1.创建仓库git remote add [仓库名称] url;2.删除不用的仓库git remote rm [仓库名称]3.添加本地文件git add [文件名]git add. 第二种是将当前目录下所有文件添加到暂存区。4.添加注释git commit -m "备注信息"5.push和pull...原创 2020-04-08 16:54:09 · 202 阅读 · 0 评论 -
软件构造Lab1-Social Net
继续接着之前的博客,来分享一下Lab1剩余的部分,也就是Social Net。这个可以说是最简单的了,我们要做的就是完成一个图的数据结构,并实现相应的方法即可。下面分享一下我的数据结构:按照实验已经给出的,我们要实现的java文件为FriendshipGraph.java那么主类就是FriendshipGraph,Person和Relation是辅助FriendshipGraph实现的两个...原创 2020-03-05 20:01:23 · 529 阅读 · 0 评论 -
软件构造Lab1-Part3总结
断断续续的写了几天,现在只剩下最后的Social Net没有写,暂且分享一下之前的几个部分吧。第三部分我们需要补充几个函数,实现它们的功能:主要围绕多边形展开,有很早就学过的多边形内角外角和相关的,还有一个凸包问题和个性绘图。转角的那个还是比较简单的,只需要考虑东西 和南北,然后具体划分到东北、东南这种相对关系,然后注意反三角函数得到的值的符号以及需要使用Math.toDegree()方法转...原创 2020-03-03 17:08:40 · 199 阅读 · 1 评论 -
软件构造Lab1-Part2总结
java的文件操作稍微熟悉了一点。直接进入正题。第二部分的核心是在讲java中的异常抛出机制,我们从程序异常运行(n为偶数和负数)抛出的信息来看,生成幻方的方法中肯定不支持这两种,至于为什么,需要分析该方法才能得知。首先,负数不支持很好理解:生成的二维数组变量不可能大小是负数。在这里就异常了,可以单步调试看一下。其次可以试着带入一个奇数观察这个方法的赋值过程,另外还需要了解一下魔方矩阵的一个重...原创 2020-02-27 23:42:54 · 224 阅读 · 0 评论 -
软件构造Lab1-Part1总结
首先分析一下,这题的要求就是判断输入的矩阵是不是一个幻方矩阵(记得MATLAB中的magic命令就可以生成)。那么检查条件从矩阵特点入手即可。要满足:1.矩阵为方阵2.每列求和,列列之间和相等。行同理,对角线求和也和列/行求和相等。思路:有五个文件需要读取,并且我们需要处理字符串,由于不同文件中的间隔符可能不一致,需要处理不同的情况,显然单纯的利用spilt方法是不行的。这里最合适的方法...原创 2020-02-27 21:33:33 · 269 阅读 · 0 评论 -
HIT2020春季软件构造课程之注册Piazza
注册全流程如下(希望能有帮助)1.首先是输入www.pizza.com进入之后找到Sign Up进入注册页面2.找到哈尔滨工业大学,支持模糊搜索,输入harbin即可看到3.选择课程,课程码已经在老师的录播视频中给出,这里输入CS322074.这里输入注册邮箱,请使用常用的邮箱,之后可能有用5.然后填写账号信息,因为老师要求实名, 所以Full Name可以直接填写自己的中文名...原创 2020-02-24 14:45:56 · 1300 阅读 · 4 评论