BUAA_OO_Unit4 & 学期 总结「建议收藏」

BUAA_OO_Unit4 & 学期 总结「建议收藏」BUAA_OO_Unit4 & 学期 总结

大家好,又见面了,我是你们的朋友全栈君。

BUAA_OO_Unit4 &学期 总结

UML单元作业架构设计

       本单元学习了对UML模型的理解和解析,了解了UML模型的语义规则,主要是针对类图、时序图和状态图进行了学习。两次作业是在对UML模型理解的基础上,根据课程组发放的开源包,对UML模型进行不同程度上的解析。

       本单元的两次作业架构如下:

      

       第一次作业是构建自己的UmlClass类、UmlInterface类等,在相应的类内保存了所需要的关联对端、操作、属性等。在写相应的方法时,感觉有点大一在上数据结构时,学习“指针“部分的操作。

      

       第二次作业按照第一次作业的思想,但是架构有所改变。关于时序图和状态图的部分相对简单,与链表的数据结构类似,并且由于作业要求没有考察其与类图的一致性,相应结构做的较为粗糙。关于类图的三个新的方法,很遗憾的是考虑不够全面,没有找到合适的解法。

架构设计与OO认知

       在我的印象中,第一单元是开始了OO方法的认知,了解“对象“及有关概念;架构的有关强调应该是在第二、三单元。那就先从对OO方法的理解说起吧,第一单元的起步感觉很困难,虽然老师和同学尽可能得将这个抽象的概念讲得简单一点,但是在代码中还是没有办法找到面向对象的方法。就算是现在来说自己对OO的理解,恐怕也只是”对象是什么、它们的接口是什么“这种浅显的深度上。很多介绍书本的第一章或第二章都会讲关于”对象“的理解,如何构建程序。我认为对OO方法的理解也就体现在怎么样去分析和设计程序。

       首先是找到问题域,然后归纳问题域中的实体,找到实体间的联系图(这里就可以使用uml类图),最后构建相应的类,进行一些优化措施。这是对设计程序过程的简单概括。在后面单元学到的UML类图反过来应该是设计时就可能需要引入的概念了。

       在这几单元作业中,程序的架构设计都有考察,因为作业是逐次扩展形式展开的。其次,除了扩展的便捷性之外,还有对程序可维护性等方面的考察。印象深刻的是老师在第二单元总结中,让我们针对程序复杂度进行分析,观察bug出现位置与程序较复杂的部分的关系。很显然,如果程序部分复杂度过高,出现bug的概率就会越大。这也是架构设计要考虑的一部分。具体的内容就是第七讲的《面向对象程序的需求分析与设计原则》,这部分内容看起来较为抽象,落实在代码设计中有相当重要的作用。这部分内容练习还是不够,缺乏有效的考核形式,SOLID原则的使用仍然缺乏熟练度。

测试理解与实践

       四单元作业的测试环节占有相当大的比例,但是自己对于这部分内容做的很差。

       第一单元是多项式的求导,测试即需要我们寻找不同的多项式的样例。我在寻找样例时,是针对不同单项式的形式寻找若干样例,之后再进行一些排列组合。手工制造样例,类型有欠缺,且样例数量较少。这部分最严重的问题是:自己找样例的思维与自己设计代码的思维是一致的,如果在设计代码时忽略了某种情况,在寻找样例时也大概率地会忽略这些情况。

       第二单元的输入是包括输出时间的输出,相比于第一单元的输入更多元化,情况也更多。样例的选择自然是根据指导书的功能要求寻找样例,但是由于输入有时间的要求,在IDEA的run界面输入肯定是不行的。我自己的做法是改变输入流,选择文本输入,这也可以在0时刻同时输入若干条命令,这样就可以满足大多数的情况要求了。

       第三单元作业是关于JML的内容,测试更具单元化的特征,也逐步掌握了Junit的使用。

       第四单元作业是关于UML的内容,测试样例需要根据uml图并且由课程组提供的工具进行解析。关于图形化的不同样例我感觉是很难找的,这部分没有进行多种样例测试。

课程收获

       这学期虽然自己做的不是很好,但是仍然有了相当多的收获。在知识层次上,主要是了解了Java语言的使用,程序设计上了解了面向对象编程的思想。另外跟着课程组的安排,对完成项目时间规划有了一定的认识。根据自己这学期的表现和作业,希望能在“补给站”里,把这些知识进行巩固,尽量的熟练起来。这学期的OO内容还是很多的。

改进建议

①    作业的起点难度略高。在接触java的第一次作业与假期的预习感觉难度差距很大,没有合适的样例去模仿学习,感觉很困难。

②    实验课内容缺乏及时反馈。感觉实验课的知识考察点更针对当周新学习的知识,但是上机没有反馈,上机内容感觉没有很好地利用。

③    上课知识密度过大。可能只是我个人的想法,可能是单节课时间的减少等原因,感觉单次理论课内容太多,不能有效理解。可以考虑减少上机或者研讨课内容。

转载于:https://www.cnblogs.com/JunHaoo/p/11079603.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106757.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pytest的使用_实例调用和类调用

    pytest的使用_实例调用和类调用Pytest执行用例规则Pytest在命令行中支持多种方式来运行和选择测试用例1.对某个目录下所有的用例pytest2.对模块中进行测试pytesttest_mod.py3.对文件夹进行

  • windows无法连接到打印机错误为0x0000011b的解决办法[通俗易懂]

    windows无法连接到打印机错误为0x0000011b的解决办法[通俗易懂]今年微软更新了一波新补丁,然后很多人发现打印机或者共享打印机突然连接不上了,卸载驱动、删除打印机都没用。添加打印机出现0x0000011b的错误代码第一步:点击《控制面板》第二步:选择《程序和功能》第三步:查看已安装的更新第四步:不同版本对应的补丁名不同,参考如下:Windows10版本1507–KB5005569Windows10版本1607–KB5005573Windows10版本1809–KB5005568Windows10版本1909–KB5005566Windows1

  • CentOs6.5上安装Docker完整版

    CentOs6.5上安装Docker完整版早上上班发现之前win10更新了一次,台式机上安装的虚拟机打开变得超级慢,更不要说查看docker相关东西,烦人。只能在自己笔记本上安装docker,测试下案例。——————————————————————————————————————————————————步骤:1、在本机安装Docker需要的epel库(yum安装epel库) 命令:yum install -y epel-…

  • java打印数组元素_java Arrays快速打印数组的数据元素列表案例

    java打印数组元素_java Arrays快速打印数组的数据元素列表案例1、Arrays.toString用来快速打印一维数组的数据元素列表2、Arrays.deepToString快速打印一个二维数组的数据元素列表publicstaticstrictfpvoidmain(String[]args){String[][]arr={{“aaa”,”bbb”},{“ccc”}};for(intx=0;xfor(inty=0;ySystem.out….

  • 安装好Ubuntu18.04之后要做的事!!大全、详细教程!

    安装好Ubuntu18.04之后要做的事!!大全、详细教程!安装Ubuntu18.04之后的要做的事:1、更新源,使用软件更新器选择中国的服务器aliyun即可自动更新缓存,已经各种软件之后每天更新,shell更新:sudoaptupdatesudoaptupgrade2、安装vim、wget、curlsudoaptinstallvim配置十字光标:用户目录下vim.vimrc…

  • iOS7 UIKit动力学-碰撞特性UICollisionBehavior 下

    iOS7 UIKit动力学-碰撞特性UICollisionBehavior 下

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号