码迷,mamicode.com
首页 > 其他好文 > 详细

OO第四单元

时间:2021-06-28 19:05:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:输入   时间   面向   对象   语言   实现   分时   概念   生成随机数   

第四单元架构设计


本单元代码的迭代开发与架构设计基于里氏替换原则,将每次新增的任务分派到新增的解析器类中,交互类只需调用解析器类中相应的

方法即可实现对输入查询指令的相应输出。由于采用新增解析器类的方式,不需要更改任何旧代码,只需新增若干个类,并在交互类

新增若干行代码,创建关联新增类即可。

第一次

本次作业是对UML类图进行解析,除了官方规定要实现的MyUmlnteraction类与主类MainClass,另外构造了ClassGraph类作为

UML类图的解析器。对每个MyUmlnteraction类接收到的查询指令,通过调用ClassGraph类中相应的方法实现查询,即将核心任、

务交由解析器类来做,作业代码的UML类图如下。

技术图片

第二次

本次作业保持了第一次作业对类图的解析,新增了对顺序图与状态图的解析。第一次作业中通过构建ClassGraph类,将所有类图

查询指令的执行过程全部封装到该类中。本次作业同理,新构造Sequence类与State类将顺序图、状态图的查询过程分别封装到

其中,最后让MyGeneralnteraction交互类关联构造这两个类即可实现交互类功能的扩充,作业代码类图如下。

技术图片

第三次

这次在第二次作业基础上新增合法性检查功能,与之前采用的策略相同,新建一个Check检查类,将检查过程封装到该类中,让交互

关联创建该类即可实现功能拓展,作业代码类图如下。

技术图片

架构设计与OO方法理解的演进


直观理解

在OO课程开始前的上个学期学习过java,了解了java中的类、抽象类、接口等概念,了解了面向对象的封装、继承、多态特性,只知道

面向对象语言的设计有利于对具体事物进行抽象,但未理解该种语言的特点在实践开发中具体能够起到什么作用。第一单元前期,事实

上对OO理解还不深刻,没有建立架构的思维,甚至出现了将所有代码写到一个类中的情况。第一单元后期,才逐步有意识使用继承、实

现。但当时认为对不同对象通过继承、实现的方式提取出相似点便是OO,理解还未深入。

初步理解

在第二单元中开始对OO有了深入认知,接触到了消费者生产者的设计模式。在第二单元中可以说尝到了好架构带来的甜头,当把电梯与

等待队列二者的线程交互框架搞定后,在代码迭代开发中基本只要关新电梯的策略模式算法即可,大的框架基本不用动,个人感觉第二单

元大部分时间花在电梯的策略优化上,当然这也是本单元的一个难点。经历了第二单元,对OO的理解上升到了设计模式层次,设计模式

是前人在实践中总结出的便于代码迭代开发的框架,通过在不同场合准确利用面向对象语言的三大特性,降低了代码开发的难度。

深入理解

经历了第四单元,发觉设计原则(如开闭原则、依赖倒置原则、迪米特法则等)在OO中比设计模式更具有指导意义...

测试理解与实践的演进


  • 手动测试: 前期主要使用手动构造样例的方式进行简单测试。一般是同学之间相互交流,构造一些复杂样例。

  • 自动化随机测试:中期在手动构造基础上通过编写一些随机样例生产器生成随机数据进行测试

  • 自动化覆盖测试:后期开始思考怎样使得样例生成器生成的样例覆盖面广。

课程收获


  • 理解并学会使用java中的各种方便的容器

  • 写代码有了架构思维,学到了设计模式在开发上带来的好处

  • 有了预见后期需求的意识,并以此选择代码架构

改进建议


  • 多教授一些设计模式与原则

  • 前两次作业的算法门槛有点高,建议不要把考察重点放在算法上。

  • 公开一些好的代码(同学、助教、老师写的都可)

OO第四单元

标签:输入   时间   面向   对象   语言   实现   分时   概念   生成随机数   

原文地址:https://www.cnblogs.com/20xuewei/p/14939161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!