OO第四单元总结

OO第四单元总结

一、UML简介

  这一单元的核心内容是UML建模语言的学习,通过理解UML语言编写类解析器。

  UML,即统一建模语言,是通过一种开放的方式,用于说明、可视化、构建以及编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。经过事实证明,在对复杂系统进行建模方面,以及软件层次架构中,UML已经被验证有效。

  UML系统开发过程中有九种类图模型:   

  
  1
       描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系, 如泛化、关联和依赖。
  2、类图
      类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。
  3、对象图
      与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
  4、活动图
      描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
  5、状态图
      描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
    6、序列图(顺序图)
      序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
  7、协作图

      和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。

  8、构件图 (组件图)
      描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
  9、部署图 (配置图)
      是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。

二、代码分析

  第13次作业

  UML单元的第一次作业,作业中关于代码输入内容的解析器主要框架已经完成,我们所要做的就是通过课程提供的官方接口,根据每个类的UML类图描述,实现其中的功能。通过分析作业需求,本次作业的核心就是分析UML的各种元素,构建自己的UML类图模型。

  类图

  OO第四单元总结_第1张图片

 由于没有完成后两次作业,因此无法给出两次作业的类图。

 总结

  这三次作业的核心内容都是围绕着uml类图的解析展开的,通过分析uml需求,构建每个类的功能,从而实现完整的类图查询功能。这一单元的作业中,课程组提供了基本的框架模型和UML元素体系,我们需要实现的是对这些独立元素的包装。

  例如第一次作业,第一次作业主要考察的是针对类图的查询,因而我们选择了UmlClass和UmlInterface两个类进行包装,通过接口中给出的规格添加类的对象,属性,元素等等。最终构建一个完整的UML类图查询模型。

三、OO课程总结

  一个学期的OO课程就这么完结了,这一学期中,OO作业一共分为了四单元的作业内容,同时伴随了实验课和研讨内容,每周都伴随着一次不同需求的完成。对我来说完成这些内容并不轻松,但是通过这一学期的锻炼,我也得到了很多。

  开始的几次作业,由于之前学习内容的影响,编程方式依然有面向过程的倾向,经过这么多次作业的改变,目前已经有了一个较为成熟的面向对象设计体系;从最开始拿到指导书就开始写作业到现在,能通过每次作业的大概框架构建出一个可扩展的模型,程序设计也逐渐避免了后续重构的麻烦。

  第一单元的核心内容是对表达式的求导,在这一单元中,通过正则表达式分析表达式筛选出后续求导所需要的关键元素是程序设计的重点之一。同时,设计合理的算法,减少程序运行时间,优化求导的算法也是工作的难点和重点之一。

  第二单元的核心内容是多线程设计模式。通过电梯搭载乘客这类问题,进行多线程设计模式的教学。由于之前对多线程设计模式的接触很少,所以在设计过程中遇到了不小的麻烦,这一单元最终设计上也出现了很大的问题。

  第三单元是JML单元,这一单元的主要任务是在给定的JML规范下,填补对应的代码,这一单元的难度个人看来比之前的几个单元小了很多,因为每个类的规格都以JML语言的形式给出,因此在设计方面,设计思路比较清晰。第四单元即我们这一阶段涉及的UML类图分析。

四、感想和体会

  由于疫情原因,这一学期的OO课程只能在线上进行。虽然信息流通上可能有些麻烦,但是线上课程比线下课程更加灵活,每次设计过程中的沟通也更加多种多样。

  在寒假的PRE实验开始,到今天OO课程即将结束,我能感受到老师和助教对这么课程的付出,虽然课程并不是十全十美的,但依然感谢老师们助教们的用心良苦。希望这门课程可以在未来变得越来越好。

你可能感兴趣的:(OO第四单元总结)