一、第四单元架构设计

1.第一次作业

  第一次作业要求实现的只有对类图的分析。为了直观地搭建出一个类图,我新建了Manager类来处理UmlElement以及搭建树。但由于未能做好时间管理,因此第一次作业未能通过中测。

2.第二次作业

  在听过一些同学分享的第一次作业的思路与架构的讨论课后,我直接进行了重构,全部采用Hashmap以及Hashset的方式存储数据。设计架构为每一个类单独实现一个作业要求需要实现的接口,各自完成自己所需要的数据处理以及方法实现,最后再由MyUmlGeneralInteraction类对前几个类进行组合

3.第三次作业

  第三次作业与第二次作业的架构一致,仅按照要求扩充了新的类MyUmlStandardPreCheck

二、总结四个单元中架构设计及OO方法理解的演进

  第一单元由于刚刚接触oo的思想,前两次作业都是按照面向过程的方式去写的。直到第三次作业出现了求导的迭代,才被迫使用面向对象的方法,对表达式因子、项等分别构造类。求导方法如果用接口来进行管理会更好,但是当时对于接口的理解不够深,最后也没感使用。

  第二单元总体来说做的不错。主题思路是采取有限状态机的模型,对电梯进行模拟。缺陷有两点,一是未能细分电梯的功能导致电梯类十分繁杂,尤其是在后两次作业的扩展中越来越困难;二是没有优化调度算法

  第三单元做的比较无脑,就只是按照指导书上的以及接口的jml描述进行的编程,没有考虑架构的设计。

三、总结在四个单元中测试理解与实践的演进

  在本学期的学习中,在测试这一方面我始终做的不好。第一单元的测试仅仅停留在手测,自己构造数据,人脑直接检验。有很多同学都自己搭建了评测机,但由于种种因素我最后还是没能搭建出来。第二单元是多线程,多线程的测试变得更加困难,我最终也只是停留在了自己构造数据。第三单元我尝试进行了单元测试的方法,但是单元测试实际上还是需要自己构造一些足够具有代表性的边界数据出来。第四单元提供了构造数据的接口,因此也没有在测试上画大功夫。

四、课程收获

  最大的课程收获还是对于面向对象的理解。如何采用面向对象的思维,如何构造合理的架构。第一单元在实验中学习了工厂模式,第一次了解到了接口的一种用法。第二单元主题是多线程,如何利用锁来保证线程安全不发生死锁,以及生产者消费者模式,结合os课程的讲解,给了我很大的启发。第三单元重点理解jml语言,我了解了如何用规范化的语言来描述一个架构。第四单元是对uml类图、状态图和流程图的学习,用图的方式来描述和理解一个面向对象程序。

  其次就是完成作业以及实验过程中的收获了。第一是测试是十分重要的,在第三单元中如果我能进行更加全面有效的测试,就不会导致一个小错误强测挂掉的悲惨经历;第二是与同学之间的交流是十分重要的,在本学期的学习过程中,许多同学的见解都对我有很大启发。

五、给课程的建议

  1.希望理论课能更加循序渐进,在最开始上课的时候总有不知所云的感觉,许多概念性的东西一概而过,对我课程的学习有一定的影响

  2.每一单元之间的联系不是十分明显,学着这一单元的忘着上一单元的(感觉这也是所有课的通病)

  3.希望能提供更加简单易学的测试教学

六、线上学习oo课程的体会

  线上学习对我来说也是一大挑战。在线上询问他人或是进行提问都不是我所擅长的,有很多问题都是敢想不敢提。且受打字速度的影响,大多数时候线上交流很浪费时间,没有在线下交流的自在。不过线上的理论课学习还是很有优势的,有没听清的或是没能及时消化的内容都可以反复观看学习。

oo第四单元总结及总课程回顾的更多相关文章

  1. oo第四单元作业总结暨课程总结

    oo第四单元作业总结暨课程总结 一.本单元作业架构设计 本单元需要构建一个UML解析器,通过对输入的UML类图/顺序图/状态图的相关信息进行解析以供查询,其中课程组已提供输入整体架构及输入解析部分,仅 ...

  2. OO第四单元作业总结以及课程总结

    第四单元总结--UML 第四单元作业架构分析 第一次作业其实是本单元三次作业中最难的一次.由于第一次是第一次作业,要考虑到搭建框架和设计架构,这次作业的思维性很强.在了解了各个类型元素(Element ...

  3. OO第四单元作业总结及课程总结

    一.本单元作业架构设计 1.第一次作业 本单元首次接触到UML以及相关概念,在面对第一次作业时首先花了很大功夫去阅读官方接口中各种UmlElement的代码,才理解了输入的模型元素中各属性的含义.总的 ...

  4. 【OO学习】OO第四单元作业总结及OO课程总结

    [OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...

  5. OO第四单元总结及课程总结

    OO第四单元总结及课程总结 一.前言 紧张刺激的OO“昆仑课程”接近尾声,经过一个学期的学习,我的收获和感触颇多,借此博客作业的机会,对自己OO这门课程做一个总结.本博客主要有以下五个方面,一是第UM ...

  6. OO第四单元——基于UML的UML解析器总结&OO课程总结

    OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...

  7. OO第四单元总结与课程总结

    OO第四单元总结与课程总结 第四单元作业架构设计 总体分析:本单元作业的需求集中于对UML类图进行查询.对于查询操作来说自然的想法是提前预见到需要查询的内容,在一开始就采用适当的数据结构将必要的信息进 ...

  8. OO第四单元与全课程总结

    OO第四单元与全课程总结 一.作业代码架构设计 1.第一次作业 作业类图如下: 具体架构设计: 第一次作业的全部查询工作都是和类图有关,需要解决的主要问题就是如何解析原有UML类图数据的结构,并形成自 ...

  9. OO第四单元

    OO第四单元总结 第四单元架构设计 第一次作业 uml类图 这次作业我采取的基本思路就是根据指令来建造一个简易的类图,用于查询,其中umlclass中包含了umlAttraibute,umlOpera ...

随机推荐

  1. CodeMirror动态修改代码(关键: editor.getDoc().setValue(data); editor.refresh();)

    在使用codemirror时,其原理是根据form中的textarea标签,自动加载其内容,获得代码行的显示.(具体使用方式参见 codemirror官网使用手册 http://codemirror. ...

  2. 从几个问题开始理解CFS调度器

    本文转载自从几个问题开始理解CFS调度器 导语 CFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器,它的基本原理是这样的:设定一个调度周期(sched_latency_ns) ...

  3. 为什么Linux需要虚拟内存

    本文转载自为什么 Linux 需要虚拟内存 导语 操作系统中的 CPU 和主内存(Main memory)都是稀缺资源,所有运行在当前操作系统的进程会共享系统中的 CPU 和内存资源,操作系统会使用 ...

  4. spring扩展点整理

    本文转载自spring扩展点整理 背景 Spring的强大和灵活性不用再强调了.而灵活性就是通过一系列的扩展点来实现的,这些扩展点给应用程序提供了参与Spring容器创建的过程,好多定制化的东西都需要 ...

  5. idea没有错误提示的解决方法(一直处于错误分析中)

    仅作记录,以防再次发生却不记得. 原文链接:https://blog.csdn.net/a755199443/article/details/90084316 问题描述:idea没有自动报错.例如随便 ...

  6. 机械硬盘换固态硬盘&重装系统

    起初 笔记本电脑购买于2016年底,i7四代处理器,940M显卡,4G内存,500G固态硬盘,这样的配置已经跟不上使用需求了.于是先把内存条升级成了单根8G金士顿内存条,豁然发现使用chrome浏览器 ...

  7. JUC-ThreadLocalRandom

    目录 Radndom类的局限性 ThreadLocalRandom 这个类是在JDK7中新增的随机数生成器,它弥补了Random类在多线程下的缺陷. Radndom类的局限性 在JDK7之前包括现在j ...

  8. Java RPC 框架 Solon 1.3.9 发布,更便利的支持

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  9. Java 集合(List、Set、Map 等)相关问答归纳再整理

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  10. 微信小程序 下拉刷新 上拉加载

    1.下拉刷新  小程序页面集成了下拉功能,并提供了接口,我们只需要一些配置就可以拿到事件的回调. 1. 需要在 .json 文件中配置. 如果配置在app.json文件中,那么整个程序都可以下拉刷新. ...