[BUAA-OO] The fourth unit operation summary

The fourth unit operations summary

An architecture, the present job unit twice

1. The first job

  The first job in claim analyzed for class diagram, in order to achieve a UML class diagram parser analyzes covering classes and their attributes, and visibility statistical analysis, correlation analysis and association operation ends, inheritance and the like to achieve Relationship Analysis , to achieve a similar manner on the display unit, only need to implement UmlInteraction interface for complete resolution.

  Since only the class diagram analysis, all data is stored and means to achieve a class are created in the same, as shown below:

 

  In the configuration when MyUmlInteraction class, storage UMLElement object relation id, class their attributes, relationships and associated operations, inheritance and implementation relationships; when instructed analysis, analyzed according to the stored data, and stores the analysis result, convenience at use only.

2. The second job

  The second operation is extended on the basis of the first operation, an increase of the parser parsing the sequence and state diagrams and functional verification of basic rules. Thus, in implementation, the last job retention functions for parsing class diagrams, which as a separate class, and add a new class to implement to verify the order of FIGS., The basic rules and parse the state of FIG.

 

  由于一次输入可以输入一张类图、多张顺序图和多张状态图,因此每个解析器可以持有一个规则检查器UmlCheck、一个类图解析器UmlClassMode、多个顺序图解析器UmlCollaboration和多个状态图解析器UmlStateChart,其中顺序图解析器和状态图解析器分别由其UmlInteraction和UmlStateMachine下的UMLRegion的id索引。图的解析器存储图的相关信息,并完成对图的解析;解析器根据指令得到对应的图的解析器,发出指令并得到解析结果。

 

二、架构设计及OO方法理解的演进

  • 第一单元

  第一单元通过实现多项式导函数求解的方式引导我们初步建立了对象与对象化编程的意识,明确面向过程编程与面向对象的区别,通过继承、多态、抽象等方法实现层次化设计,并针对每一次作业做出了可拓展的设计。

  从第一次作业简单粗暴的使用List方式存储所有数据,并且只使用一个类完成所有的工作,到第二次作业开始尝试使用HashMap构建数据结构存储数据,为项、多项式和输入处理建立不同的类,并各司其职的完成求导工作,再到第三次作业分别按照因子—项—多项式的函数结构和加减法—乘法—嵌套的运算结构建立类并将其组合,建立起更加逻辑清晰、简洁明了的架构层次。

  比起一边书写一边思考的方式,提前考虑好架构、数据结构与算法,通过化整为零的方式一点点完成作业,在大大降低代码书写和逻辑思考的难度的同时,对正确性也有一定的提高。

  • 第二单元

  第二单元通过对电梯的模拟带领我们学习并掌握了多线程的相关知识,初识面向对象程序的需求分析与设计原则,让我们亲身体验了“多思考,多设计,少写码”的重要性。

  通过对课上讲解的生产者-消费者模式、单例模式、工厂模式等经典模式的分析与应用,可以进一步感受到轻线程体设计、均衡层次化共享数据设计、局部化算法作用范围的思想,从而在书写自己的代码的时候进行调整与改进。通过对面向对象程序的需求分析与设计原则的学习,可以进一步明确设计的重要性。

  通过方法与类之间的合作可以使得每个方法都只负责很基础的一部分功能,从而使得架构更加简洁清晰,代码的可读性和可扩展性也可以得到进一步的加强。实现设计之后再进行设计检查,则可以快速的发现问题,加以改进。

  • 第三单元

  第三单元通过对JML规格的实现指导我们建立起设计与实现分离的思考方式,脱离代码层次,在更高一级的层次上感受面向对象的思想,进一步加深对层次化设计的理解。

  通过对JML的理解,可以从细节上理解架构,从宏观上掌握每一个方法的行为模式和作用;通过对官方代码包的分析与阅读,则可以进一步加深对架构的理解。

  另一方面,本单元注重对时间复杂度的控制,需要对复杂的中间数据模型的处理,我们需要通过分析不同代码段的使用频率,合理分配每一部分的功能,对代码具有更加全面的掌握,从而对整体时间复杂度有一个良好的把控,根据功能需要构建适应性能要求的中间数据模型和协同架构,进一步了解了性能和架构设计之间的关系。

  • 第四单元

  第四单元通过对UML类图、顺序图和状态图的分析,将格式解析与语义提取分离,实现了抽象化的处理,是面向对象设计的图形化表达的深入理解,也是针对诸多不同类型的对象构造层次和关系,在构造UML模型的过程中动态维护相关的查询数据的一次实战演练。

  从UML中,我们可以学习到模型化设计的思想,进一步训练架构与设计的能力,可以说是对之前所学内容的一次深化与应用。

 

三、测试理解与实践的演进

  • 第一单元

o     边缘测试与压力测试

o     覆盖性测试

o     异常输入测试

  • 第二单元

o     线程安全测试

  • 第三单元

o     JML规格的验证

o     JMLunit自动生成测试样例进行覆盖性测试

  • 第四单元

o    关于正确理解题意的重要性???

 

四、课程收获

  • 第一单元

o     初识面向对象编程的思想与架构意识

o     继承、多态与抽象的知识

o     Java语言进阶

  • 第二单元

o     多线程机制与其经典模型

o     线程安全设计与死锁避免

o     工程化设计思想与SOLID检查

o     Java的多线程实现

  • 第三单元

o     JML基本知识与应用

o     关于异常的处理

o     规格化的思想

  • 第四单元

o     UML类图、顺序图和状态图基本知识

        • 图、模型层次、规则检查

o     模式化设计思想

 

 

五、改进建议

1. 关于作业的关注重点

  感觉在每次作业中,同学们关注的重点或多或少都有些偏离本单元的理论知识和思想,比如第一单元疯狂优化的性能分,比如第二单元疯狂优化的调度算法,比如第三单元摆在明面上的数据结构,比如第四单元模棱两可的规则说明,而上课讲的诸如架构涉及、规格模型等思想在实际运用中考虑的反而较少。

2.关于上机实验的题目

  实验的题目与理论课联系还算紧密,但是上午学习完理论知识下午直接上机实验容易造成大面积懵圈的现象,大家对刚学习的新知识了解和掌握都不太好。

而且上机实验内容与作业的关系就不大,相关知识点几乎都是上课学会下课忘完,效果不显著。历次实验难度差别也较大,前两次实验和UML第一次实验难度显著高于其他实验,并且部分实验题意描述并不清晰。

3.关于PPT

  希望PPT能及时下发一下,尤其是下午有实验课的时候。

4.关于博客作业

  希望能换个平台,博客园的后台真的是又难用排版还丑。 

5.关于时间安排

最后一次作业和博客进烤漆真的要人命啊!!!!!

每个DDL还都在考试当天啊!!!!!

真的夭寿了马上就要考试了还一点都没复习啊!!!!!

助教大大体谅一下我们这些不是6系的崽儿吧!!!!!

 

第一单元

Guess you like

Origin www.cnblogs.com/junzy/p/11070127.html