2019年北航OO第4单元(UML)总结】的更多相关文章

1 架构设计 经过了接近一学期的程序设计训练,在这一单元的第一次作业中我就非常注重架构的设计,竭力避免像之前一样陷入"第一次作业凑合,第二次作业重构"的不健康的迭代模式.整体上来说,我对我本次作业的架构还是很满意的.废话不多说了,直接上类图: 从类图也可以看出来,整体的架构非常工整.MyUmlGeneralInteraction类是整个程序的中心,负责实现接口UmlGeneralInteraction的全部方法,以及输入的读取和分配.它下面所属的三个类是ClassModel, Stat…
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化程度.基本复杂度高意味着非结构化程度高,难以模块化和维护. Iv(G):模块设计复杂度,用来衡量模块判定结构,即模块和其他模块的调用关系.模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离.维护和复用. v(G):模块判定结构复杂度,数量上表现为独立路径的条数. 从上面三张图可以看出,整体上3个…
北航OO第四单元--UML图解析 作业要求简析 刚接触本次作业可能需要花上一会才能搞清楚到底是要我们写个啥,在这里简单说一下: UML图的保存格式.mdj文件是以json文件的形式存储的,将每一个UmlElement作为其parent的属性挂载到其中.可以自己随便用starUML画一个,然后看看源文件内容 课程组将这一个个UmlElement单独拿出来逐条输入,以此在我们的程序中建立起UML类图 然后输入查询指令,查询有关于UML图的各种信息并输出 作业思路及架构 由于许多大作业.考试全部堆在这…
第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及需要回溯至顶级父类逐层查询的指令. 实现方案 本次作业需要我们对类图中的组成元素进行重新建模,建模时需要考虑类中的属性.类的继承关系.接口的继承关系以及类/接口之间的关联.为了达成以上目标,我选择将类和接口分别重新抽象为ClassInfo和InterfaceInfo类以记录其属性:对于类和接口之间存…
一.JML简介 1.1 JML与契约式设计 说起JML,就不得不提到契约式设计(Design by Contract).这种设计模式的始祖是1986年的Eiffel语言.它是一种限定了软件中每个元素所必需的责任与义务的开发模式,程序设计中的每个元素都需要用规范的语言精准地限定其前置条件(Preconditions).后置条件(Postconditions)和不变式(Invariants).通过这三项限定,我们可以清晰地获得对一个函数功能的刻画,从而达成设计与实现的分离,便于优化.测试和生成文档.…
1 三次作业的设计策略 经过了上一单元的训练,我也积累了一些设计策略上的经验.在这一单元的一开始,我便尽可能地把问题中的各个功能实体区分开来,分别封装成类,以便于随后作业中新需求的加入.与此同时,我也在有意地控制住方法的规模,依照程序逻辑层次化地设计方法,使得每个方法都不至于过分臃肿,从而增加代码的可重复利用性,减轻编程负担. 接下来,具体介绍每次作业的设计策略及其演进. 1.1 第1次作业 第一次作业的需求较为简单,只需实现单电梯先来先服务算法的调度模拟即可.为了尽可能模拟出电梯运行的真实行为…
1 JML语言的理论基础及应用工具链 1.1 JML语言 Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为.它结合了Eiffel的"契约设计(design by contract)"方法和Larch系列接口规范语言的基于模型的规范方法,以及细化演算的一些元素.对JML语言起到理论支撑作用的文章主要是以下三篇: Leavens G T, Cheon Y. Design by Contract with JML[J]. 2006. 这篇文章解释了JML语言作为…
2020北航OO第四单元总结 一.本单元架构设计 本单元作业是实现一个UML图解析器,其中实现接口及主要框架课程组已经提供,只需要我们完成特定功能. 在第一次作业时,感到十分迷茫,不知道如何下手,最后在重新学习了类图的mdj文件的各项含义及内在关系后,我选择设置一个umlTree类进行UML的解析,然后存入自己写的MyUmlClass和MyUmlInterface中,使其根据原有的UmlClass和UmlInterface构造,在其中实现operations.attributes.associa…
2020北航OO第三单元总结 本单元要求是根据JML规格完善代码,初看是一个简单的代码照搬实现的东西,但最后才发现由于CPU时间的限制,还考察了大量优化策略及数据结构中关于图的知识,是一次非常注重细节构思的一单元,我借此机会学习并巩固了好几个图的算法,并了解了java各类容器的查插删改的效率. 一.JML理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言,它相当于一种接口,正确的JML可以给实现人员清楚的代码要求,并且针对已有代码书写…
OO第四单元(UML)单元总结 这是OO课程的第四个单元,也是最后一个单元.这个单元只有两次作业,相比前三个单元少一次作业.而且从内容上讲这个单元的作业目的以了解UML为主,所以相对前三个单元比较简单. 一.作业分析 1.第一次作业 第一次作业的目的是实现一个UML类图解析器,这个解析器需要接受由UML图生成的类图信息并根据要求返回相应的结果,是以了解UML类图为目的的作业. 由于UML解析器的输入是按照starUML中存储类图信息的方法来存储的,所以这次作业的目的其实是了解类图的存储方法,即s…