一.JML 在第三单元的面向对象课程中我们第一次接触了JML语言以及基于JML规范的规格化设计.在之前一系列关于面向对象思想的学习认识中,我们知道了Java是一种面向对象的语言,面向对象思想的一个重要原则就是将过程性的思考尽可能地延迟.而作为Java建模语言,JML给予了我们一种全新的方式来看待Java的类和方法,其通过将一些符号语言显式地插入到Java程序代码中,来描述一个方法所要求的前提以及期望达到的效果,而将过程性的思考延迟到了方法的设计中. JML理论基础 JML是用于对Java程序进行…
一.架构设计 1.UML第一次作业——类图 第一次作业基于不同element在UML规格中的从属关系来设计架构.继承了UmlInteraction接口的MyUmlInteraction类是主要的交互层.在其构造函数中对加入进来的每一个element进行分析,判断它的ElementType并根据parentId以及其他解析出的性质决定它的存储位置. 对于不同的ElementType,我将其分为三类: 第一类是有所述其他元素的,代表java中具体的类的element,如UmlClass,UmlOpe…
一.设计策略 在第一次作业时,我刚第一次接触多线程这个东西……于是乎对于第一次VIP直上直下一次只接一个人的电梯,我借鉴了指导书中为我们提供的架构,设计了一个输入线程和一个电梯线程,并设置了一个中间类RequestQueue,开一个队列来存放异步输入的请求,并保证这个类是线程安全的.mian类之下的整体架构为“Getrequest-RequestQueue-Elevator”.在main类中仅仅只做了new了这几个类并且启动输入线程以及电梯线程的工作.当电梯运行时,GetRequest线程读入请…
一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达式进行删除空格处理.由于第一次作业仅含有带有系数的幂函数与常数项,因而我就没有专门构建针对每一个项的类,而是在本类中就定义了getitem方法,用正则表达式逐项匹配出符合要求的项.在第一次作业中我求导的基本单位为项,在构造正则表达式时我对表达式中可能出现项的类型进行枚举,分别为:(1)系数与指数均有…
主要针对第三单元的三次作业 JML语言的理论基础.应用工具链情况 JML指的是Java建模语言,全称是Java modeling language,是一种行为接口规范语言,可用于指定Java模块的行为.它结合了Eiffel的契约方法设计和Larch系列接口规范语言的基于模型的规范方法,以及细化演算的一些元素 Design by Contract with JML(由Gary T. Leavens和Yoonsik Cheon撰写)的草案解释了JML作为Java合同设计(DBC)语言的最基本用法,这…
OO--第三单元规格化设计 博客作业 前言 第三单元,我们以JML为基础,先后完成了 PathContainer -> Graph -> RailwaySystem 这是一个递进的过程,代码实现基于课程组给出的JML语言,JML是一个只关心前提与结果的建模语言,可以描述清楚对于该方法的需求,但具体实现由个人完成,实现方法不限,只需要满足需求.一定意义上,算是工程方面客户的需求,而我们依据其完成代码. JML理论基础及应用 注释结构 一般使用块注释,即/*@ annotation @*/,注释放…
在我开始写这次博客作业的时候,窗外响起了希望之花,由此联想到乘坐自己写的电梯FROM-3-TO--1下楼洗澡,然后······ 开个玩笑,这么辣鸡的电梯肯定不会投入实际使用的,何况只是一次作业.还是从中认真分析一下经验和不足吧. 作业一:FIFO单电梯 现在看起来,作业一的难度在整个单元真的仅仅相当于热身.使用线程安全的集合类ConcurrentLinkedQueue存储线程,再用while(true)轮询的方法实现电梯的获取请求,获得请求后运行电梯,运行结束后等待下一个请求即可.整个程序甚至不…
OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十三次作业: 用HashMap嵌套HashSet.ArrayList建抽象图 查询在容器里找就行了 共440行 第十四次作业: 复制上一次作业代码来解决类图查询 新建check类并复制上次作业建的图,然后完成三种check: 001: 用String(id)建容器,\(O(n^2)\)查询重复name…
(注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1  我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不到的成绩伤心欲绝(这个词用的其实并不是特别夸张),到第二单元作业在截止前两小时还在做不停地思考和调试,再到第三单元在活页纸上记下一种又一种可能的实现方法(然后还有一堆bug2333),最后到第四单元,也就是这个单元的与考期共舞,与程序广度作斗争,每个单元都是你从未玩过的船新版本(因为OO课程改革所以…
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼与熊掌不可兼得.故而,人们提出了结构化程序设计的编程思想,旨在使程序实现结构化设计的思想.这种设计思想旨在控制各个模块的程序复杂度,从而保证整体工程的正确性. 然而,由于硬件设备的快速迭代,对于软件的要求也越来越高.工程的日益庞大.面向过程程序的可扩展性差.可维护性有限,使得人们提出了面型对象程序编…