BUAA-OO-U4-Summary

BUAA-OO-U4-Summary

1 问题描述

本单元的主要任务是建立一个Uml类图、顺序图、流程图的解析工具,分析所建立类图、顺序图、流程图的性质及错误判断。

2 整体结构

本单元图表组成元素整体结构如下:

但可以发现,其中部分元素由于没有内部运算,并不需要单独建立一个类,因此最终的结构为:

3 bug分析

本次实验中曾出现以下问题:

  1. 在第十三次作业中,出现了空指针的报错;
  2. 在第十四次的作业中,出现了重边没有考虑的错误;

4 设计思维及OO方法理解的演进

相较于刚开始接触面向对象编程,只会参考课上实验给出的框架进行修改,现在进行架构的建立,就改善许多:

首先要进行需求的分析,明白建立的架构需要哪些功能;

其次是设计模块,完成分析出的需求;

接着进行模块间信息传递、和层次的分析,最终建立一个整体的架构。

在具体实现过程中,也要同时进行复杂度、层次性和效率间的权衡。

并且,代码风格检查checkstyle要求我们同时顾及代码的可读性和简洁性。

5 课程收获

面向对象课程的学习,是在c语言之外,利用java语言进行大规模编程的第一个尝试与训练。

首先,我学到了java的基本语法,封装、多态、继承、抽象的应用,以及层次化、模块化、多线程编程的技巧,扩充了个人的语言库。

其次,是面向对象的编程思想。不同于以往的面向过程的编程,面向对象思想将客观世界中的事物描述为对象,并通过抽象思维方法将需要解决的实际问题分解为人民易于理解的对象模型,然后通过这些对象模型来构建应用程序的功能。

面向对象具有以下四大基本特征

  1. 抽象:提取现实世界中某些事物的关键特性,为该事物建模的过程,得到的模型中一般包含属性(数据)和操作(行为);

  2. 封装: 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏;

  3. 继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

  4. 多态:允许将子类类型的引用赋值给父类类型的,将父对象设置成为和一个或更多的他的子对象相等 ,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

七大设计原则

  1. 开闭原则
    一个软件实体,如类,模块和函数应该多外扩展开发,对内修改关闭
    即不修改原有代码的前提下给程序扩展功能,增加了程序的可扩展性。

  2. 单一职责原则
    一个类只允许有一个职责,即只有一个导致该类变更的原因

  3. 依赖倒置原则
    依赖抽象而不是依赖实现,高层模块不能依赖底层模块
    即针对接口编程,而不是针对实现编程,通过抽象搭建框架,建立类与类的关联,以减少类间的耦合性。

  4. 接口分离原则
    多个特定的客户端接口要好于一个通用性的总接口;
    避免用一个接口里面包含不同职责的方法,接口责任划分更加明确

  5. 迪米特法则
    一个对象应该对尽可能少的对象有接触,只接触那些真正需要接触的对象

  6. 里氏替换原则
    所有引用基类的地方必须能透明地使用其子类的对象,而程序执行效果不变。可以检测继承使用的正确性。

  7. 合成复用原则
    尽量使用合成/聚合的方式,而不是使用继承。

6 改进建议

  1. 希望能够在考试结束后显示课上实验的得分;
  2. 希望能够提高中测的强度,至少保证一定的覆盖率;
  3. 希望调整每单元内部三次作业的作业量。
posted @ 2022-06-26 14:50  Fixed丨  阅读(16)  评论(1编辑  收藏  举报