Goodbye OO

一、第四单元作业架构设计

1. 第一次作业 

  第一次作业的需求是对类图进行分析,在类图中最顶层的模块就是类和接口,接着有下属的属性、方法,方法有下属的参数。关系是类与类之间的继承关系,类与接口之间的实现关系。

  基于这种分析,我建立了对应的类,定义MyUmlClass存储其父类、属性、实现的接口、方法;定义MyUmlInterface储存其继承的接口、定义的方法;定义MyUmlAttibute表示属性,可通过其查找该属性的可见性、名字;定义MyUmlOperation表示方法,可通过该类查找该方法的可见性、参数;定义MyUmlParameter来完善整个结构,使得MyUmlOperation中储存参数简单方便。

  在MyUmlInteraction中定义从id到MyUmlClass的HashMap,从而进行指令交互等。

2. 第二次作业 

  第二次作业相较于第一次作业新增了对顺序图和状态图的要求,还有在类图基础上对UmlRules的检查。

  把第一次作业所完成的UmlInteraction改成这次作业中的MyUmlClassModeInteraction,并新增MyUmlCollaboration和MyUmlStateChartInteraction来分别完成顺序图、状态图的搭建与交互。

  为完成顺序图和状态图,需要新增一些类,比如表示顺序图“画布”的MyUmlInteraction,在其中会按照id储存所有的MyUmlLifeLine,每个MyUmlLifeLine中又会储存他接收的消息。MyUmlStateMachine表示一张状态图的总集合,其下属按id分类的MyUmlState,MyUmlState中又会储存其所有能转移到的状态。

  在MyUmlGeneralInteraction中分别定义三个类的对象,从而进行指令交互。  

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

  第一单元:

  • 理解了Java基本语法
  • 初步认识面向对象的概念
  • 理解了什么是类,类在面向对象中的重要作用
  • 学习了访问控制等重要关键字,理解了package概念
  • 学会了Java中正则的用法
  • 构架主要是类与类的组合

  第二单元:

  • 学习了多线程编程这一困难问题,继承Thread和实现Runnable两种方法
  • 理解了锁的概念,什么是互斥、同步
  • 遇到了最困难的调试问题:bug不可复现
  • 学习了sleep,notify等关键字作用
  • 构架是类的组合和继承

  第三单元:

  • 与外部库交互
  • 学习了JML的写法,实现了代码模块化
  • 在Java中实现复杂数据结构
  • 一些最短路算法
  • 使用了HashMap、HashSet等Java内建数据结构
  • 构架是类的组合和继承

  第四单元:

  • 与外部库交互
  • 学习了UML类图相关概念,了解了如何构架一个Java项目
  • 大致了解了UML解析器作用,并初步实现了一个简易解析器
  • 了解了mdj文件的组织方式
  • 构架使用了大量的继承和组合

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

  • 手造数据点(极限情况、特殊情况)
  • 数据生成器随机构造
  • JUnit单元化测试

四、课程收获

  • 提高了工程代码能力
  • 初步了解了一门语言,能够用Java解决基本问题
  • 学习了当项目很大时,各个模块怎么保持协调统一:规格
  • Java测试方法
  • 由C的面向过程转向面向对象

五、想说的话

  首先首先,非常感谢课程组老师和助教做的一切,这个简洁明快的新网站,易用的官方包,老师的暖心贴等等等等。还有助教在背后默默做的努力,授课老师在课堂上:“要喷就喷老师,别说是助教的问题”的回护,彰显了新体系的活力。

  我觉得课程四个单元的方向大致是合理的,分别是Java基本使用、多线程、复杂工程、类图。这些单元分别让我们有了对Java的基本理解,多线程编程的能力,以及完成和分析工程项目的能力,但是我觉得其中也有一些问题。

  第一个单元Java基本使用中,我觉得有些偏离这个单元的主题思想(我认为的),虽然课程组一直强调的代码复用在这个单元体现的较好,但是我认为对于格式的检查过于繁琐,我觉得可以简化部分规则,比如“项的开头可以带一个负号”,增加部分规则,比如括号的规定,让格式处理更加简易,我觉得更能达到第一个单元的目的。

  对于类图这个本学习新增内容,我认为安排顺序可适当提前。在前三次博客作业中,无一不要求UML类图分析,就我个人而言,这三次博客作业时,我都有些不明白这个类图的作用。学了第四个单元之后,才明白类图的意义所在。

  通过阅读助教的代码,我认为设计模式也是个不错的内容,可以适当增加。

  

猜你喜欢

转载自www.cnblogs.com/Yang-OO-Blogs/p/11060958.html
oo