哈工大软件构造Lab2(2022)】的更多相关文章

(防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302https://blog.csdn.net/m0_61753302本人博客园博客(同步CSDN): https://www.cnblogs.com/kalesky/https://www.cnblogs.com/kalesky/如果对你有用的话欢迎点赞关注哟! 目录 1.实验目标概述 2.实验环境配置 3.实验过程 3.1 Poetic Walks 3.1.1 Get the code and …
(防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302 本人博客园博客(同步CSDN): 何以牵尘 - 博客园 (cnblogs.com)https://www.cnblogs.com/kalesky/ 如果对你有用的话欢迎点赞关注哟! ​​​​​​​ 目录 1.实验目标概述 2.实验环境配置 2.1 实验环境 2.2 GitHub Lab3仓库的URL地址 3.实验过程 3.1 待开发的三个应用场景 3.1.1 应用场景 3.1.2 共性需求 3…
目录 一.实验目标概述 二.实验环境配置 1.安装编写java程序的IDE--IntelliJ IDEA 2.安装Git 3.安装Junit 4.GitHub Lab1仓库的URL地址 三.实验过程 1.Magic Squares (1)isLegalMagicSquare() (2)generateMagicSquare() (3)源代码 2.Turtle Graphics (1)Problem 1:Clone and import (2)Problem 3:Turtle graphics a…
本次实验训练抽象数据类型(ADT)的设计.规约.测试,并使用面向对象编程(OOP)技术实现ADT.具体来说内容如下: 针对给定的应用问题,从问题描述中识别所需的ADT: 设计ADT规约(pre-condition.post-condition)并评估规约的质量: 根据ADT的规约设计测试用例: ADT的泛型化: 根据规约设计ADT的多种不同的实现:针对每种实现,设计其表示(representation).表示不变性(rep invariant).抽象过程(abstraction function…
本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议. 由于我们学校(哈工大)大二软件构造课程的大部分素材取自此,也是推荐的阅读材料之一,于是打算做一些翻译工作,自己学习的同时也能帮到一些懒得看英文的朋友.另外,该课程的阅读资料中有许多练习题,但是没有标准答案,所给出的答案均为译者所写,有错误的地方还请指出. 译者:李秋豪 江家伟 审校:李秋豪 V1.0 Fri Mar 2 16:48:58 CST 2…
由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作  1.基本信息设置(设置签名)  命令        项目级别/仓库级别:仅在当前本地库范围内有效 git config 系统用户级别:登录当前操作系统的用户范围 git config –global ls -lA|less   查看文件内容 级别优先级:就近原则->项目级别优先于系统用户级别 1.设置用户名 git config –global user.name ‘hiter1170301015’ 2…
Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第四章 复用性方法 第五章 走进对象技术 第六章 抽象数据类型 Part C: Object-Oriented Techniques 面向对象技术 第七章 静态结构: 类 第八章 运行时结构: 对象 第九章 内存管理 第十章 泛型 第一章 软件品质 1.1 外部和内在的因素 1.2 外部因素介绍 1.…
大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSquare方法,一个是generateMagicSquare方法. 首先,是要实现isLegalMagicSquare方法,该方法是根据一个String fileName判断路径所指的文件内容重的数据能否构成一个幻方.若能,则返回true,否则返回false. 当然,这个方法要能够正确处理几种异常情况.…
在大一初学C语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成一些函数,这些函数之间的逻辑组织结构就是人所认知的逻辑结构,要完成一个教学管理系统,首先要实现一些功能:比如 1.录入学生信息 2.为每个学生分配课程 3.为每个学生分配老师 4.为每个学生录入成绩 5.进行成绩的统计. 上面这个流程很直观,而且实现起来也很流畅.我们只需要将这些函数进行实现就行了.…
[软件构造]Mutable类型与Immutable类型 1.前言 在软件构造这门课中,对mutable类型和immutable类型的深入理解,有助于后续ADT.可维护性.可复用性的学习,因此我们有必要对其进行详细的分析说明. 我们首先明确的是,mutable类型和immutable类型均属于ADT的范围,二者关系如下图: 2.概念 immutable类:类的实例创建后成员变量值不变,若修改后,引用会指向一个实例对象. mutable类:类的实例创建后可以通过类的方法就地修改值. 3.常见immu…
编写java程序时,每创建一个新的对象,都会对对象的内容进行初始化. 每一个类的方法中的局部变量都有严格的初始化要求,因此假如写出下面的程序: void f(){ int i; i++; } 编译时就会得到一条出错信息,因为java会严格检查方法内部局部变量的初始化,正如<java编程思想>中所说“未初始化的局部变量更有可能是程序员的疏忽” 但是对于类内部的字段,java并不会严格检查字段是否初始化,因为类的每一个基本数据类型成员都保证会有一个初始值,哪怕构造器什么都没做. 其实一个对象的初始…
第三章第三节 抽象数据型(ADT) 3-1节研究了“数据类型”及其特性 ; 3-2节研究了方法和操作的“规约”及其特性:在本节中,我们将数据和操作复合起来,构成ADT,学习ADT的核心特征,以及如何设计“好的”ADT. Outline ADT及其四种类型 ADT的基本概念 ADT的四种类型 设计一个好的ADT 表示独立性 不变量和表示泄露 抽象函数AF和表示不变量RI AF与RI 用注释写AF和RI Notes ## ADT及其四种类型 [ADT的基本概念] 抽象数据类型(Abstract Da…
第八章第三节 代码调优的设计模式和I/O 本节学习如何通过对代码的修改,消除性能瓶颈,提高系统性能?——代码调优.面向性 能的设计模式 Outline Java调优 代码调优的概念 单例模式(Singleton Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 对象池模式(Object Pool Pattern) 常见的Java I/O方法 Notes ## 代码调优 [代码调优的概念] 代码调优:代码调优不是为了修复bug,而是对…
版本控制与Git 转自:http://www.cnblogs.com/angeldevil/p/3238470.html 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本.有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了,当几个…
为了方便阅读和复习,转载至此,原地址:温布利往事的博客 阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序. 此外,实现此接口的对象可以用作有序映射中的键或有序集…
不需要重写equals方法: 1.     一个类的每一个实例本质上都是唯一的. 2.     不关心一个类是否提供了“逻辑相等”的测试功能 3.     超类已经改写了equals方法,并且从超类继承过来的行为对于子类也是合适的. 4.     一个类时私有的或者是package私有的,并且可以确定它的equals方法永远不会被调用.(这种情况下最好将equals方法改写成以下方式: public boolean equals(Object obj){ throws new Unsupport…
普通字符:匹配与之相同的字符        字母.数字.汉字.下划线.没有特殊定义的标点符号. 简单的转义字符: \n 换行符 \t 制表符 \\ 代表\本身 \^,\$,\.,\(,\),\{,\},\?,\+,\*,\|,\[,\] 匹配这些字符本身   标准字符集合:与多种字符相匹配的表达式        注:区分大小写,大写即相反的意思 \d 任意一个数字,0-9之间 \D:任意一个不是数字的字符 \w 任意一个字母或数字或下划线,A~Z.a~z.0~9._ \s 空格.制表符.换行符等…
第三章第四节 面向对象编程OOP 本节讲学习ADT的具体实现技术:OOP Outline OOP的基本概念 对象 类 接口 抽象类 OOP的不同特征 封装 继承与重写(override) 多态与重载(overload) 重写与重载的区别 泛型 设计好的类 Notes ## OOP的基本概念 [对象] 对象是类的一个实例,有状态和行为. 例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 概念:一个对象是一堆状态和行为的集合. 状态是包含在对象中的数据,在Java中,…
第三章第五节 ADT和OOP中的等价性 在很多场景下,需要判定两个对象是否 “相等”,例如:判断某个Collection 中是否包含特定元素. ==和equals()有和区别?如何为自定义 ADT正确实现equals()? OutLine 等价性equals() 和 == equals()的判断方法 自反.传递.对称性 hashCode() 不可变类型的等价性 可变类型的等价性 观察等价性 行为等价性 Notes ##  等价性equals() 和 == 和很多其他语言一样,Java有两种判断相…
1,新建 Parser Generator 点击project --> new 2,填写工程名字 随意取一个名字 点击OK 3,点击Project选项下的 parserwizard 分析器向导选项 这里需要填写 工程存放的目录,以及工程名字. 4,选择配置 这里选择 只lex文件,并创建main程序,单线程模式 点下一步 5,点击完成 6,程序会生成 mylexer.l 的lex空文件,我们需要建立一个简单的lex文件已作说明 将下列程序源代码覆盖生成的lex代码 %{ %} %% //表示如果…
本节转向“方法/函数/操作”如何定义 上一节是名词 这一节是动词 1.编程语言中的函数和方法 方法 使用者不需要知道方法内部如何实现,这叫做“抽象”. 参数 参数类型是否匹配,在静态检查时完成. 返回值 2.规约:程序用于沟通 (1)程序中的文档 java API 类的层次,类接口的实现列表 直接的子类,对于一个接口的实现类 类的描述 构造方法 能调用的所有方法 对于每个构造器和方法的详细说明,方法签名:返回类型,方法名,参数,例外情况. 设计文档 程序的沟通 代码中蕴含的设计决策:给编译器读…
上一节学习了ADT理论,这一节学习ADT的具体实现:OOP 1.基本概念:对象,类,属性,方法 对象 对象是状态和行为的捆绑.java中,状态=成员变量,行为=方法. 类 每个对象都定义了一个类,类定义了成员变量和方法.类的方法就是他的application Programming  interface(API) API定义了怎样和实例交互. 类中的静态和实例变量/方法 静态方法 就是类方法,静态方法无法直接调用非静态成员. 实例方法 需要引用一个类中变量和方法的实例. 2.接口和枚举类型 接口…
识别结果: 识别结果:…
根据guns开发示例,搭建汽车信息管理系统…
导入JFinal的demo 可以增删改查 根据demo以及自己的理解,使用JFinal实现学生信息管理系统.…
本实验通过解决三个问题,训练了基本的Java编程技能,并给出了Eclipse+Jdk+Junit的配置方案,以及对使用git进行项目管理的方式. 1.因此,本实验的第一个要点是配置环境.具体配置环境过程如下: Eclipse(IDE):直接从官网上安装,按默认配置进行即可. Jdk:官网下载,在eclipse中Windows->preferences->Java->Installed JREs,然后把下的jdk8的最新版本add,然后apply即可.(之前配的18,所以没遇到困难) Ju…
​ 2019年春季学期 计算机学院<软件构造>课程 Lab 3实验报告 姓名 刘帅 学号 班号 1703008 电子邮件 1609192321@qq.com 手机号码 目录 1 实验目标概述··· 1 2 实验环境配置··· 1 3 实验过程··· 1 3.1 待开发的三个应用场景··· 1 3.2 基于语法的图数据输入··· 2 3.3 面向复用的设计:CircularOrbit· 2 3.4 面向复用的设计:Track· 4 3.5 面向复用的设计:L· 4 3.6 面向复用的设计:Phy…
领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD.领域驱动设计分为两个阶段: 以一种领域专家.设计人员.开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型:由领域模型驱动软件设计,用代码来实现该领域模型:…
下面的是学C++时要注意的. 1.把C++当成一门新的语言学习(和C没啥关系!真的.): 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C++ Programming Language>和<Inside The C++ Object Model>,不要因为他们很难而我们自己是初学者所以就不看: 4.不要被VC.BCB.BC.MC.TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言: 5.不要放过任何一个看…
结对编程总结 队员:刘强(11061188) 林谋武(11061169) 结对编程: 结对编程的优点: 1.  两个人合作,相比于一个人自己奋斗而言,更能激发自己的潜能:我们在合作过程中,互相学习,互相磨合,各自发挥自己的长处,并及时提醒对方工作上的失误,能让我们的工作进行得更加顺利: 2.  两人在合作过程中彼此交流,能更快速地发现设计中出现的漏洞,及时改正错误,提高工作效率: 3.  两人合作相较于多人团队合作而言,更能促进彼此的交流,因为两人合作过程中,有什么问题可以直接提出,并在两人商讨…