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)


相关推荐

  • 2010年最有价值做的16个广告联盟是_cpa广告联盟怎么做

    2010年最有价值做的16个广告联盟是_cpa广告联盟怎么做2010年最有价值做的16个广告联盟本篇文章来源于优乐智慧传媒-网络创富门户|www.youle668.cn原文链接:http://www.youle668.cn/article/20100326/71.html2010年谷歌退出中国内地,许多站长朋友一下子束手无策了,因为大多数人之前都是依靠adsense生存的,现在一下子说要走了,还真不知道怎样才好,其实也没必要太担心,所谓条条大路通…

  • js定时器

    js定时器window.setTimeout(code,millisec);//在指定时间后运行window.setInterval(code,millisec);//每过指定时间就运行一次。具体写法如下

  • map怎么转json对象_object转jsonobject

    map怎么转json对象_object转jsonobject业务背景:因为要嵌套一些数据报表,页面点击菜单直接进行url访问,因访问受限要修改url权限,返回数据是JSONObject,防止出现异常,后台进行了一些Map于JSONObject的转换,记录下来配置得json文件格式:{“redashLinks”:[{“name”:”在盈利表”,”url”:”http://i…

  • encode和decode的区别_encoder和decoder

    encode和decode的区别_encoder和decoder从英文意思上看,encode和decode分别指编码和解码。在python中,Unicode类型是作为编码的基础类型,即:   decode        encodestr———>str(Unicode)———>str12>>>u=’中文’        #指定字符串类型对…

  • fcntl和ioctl_Liverpool fc

    fcntl和ioctl_Liverpool fc一、fcntlfcntl函数用于执行各种描述符控制操作;/*返回值:成功取决于cmd,失败返回-1;*定义:*/#includeintfcntl(intsockfd,intcmd,/*intarg*/);/*说明:*第三个参数可有可没有,根据需要给出;*/函数有下面5种功能:复制一个现有的描述符(cmd=F_DUPFD);获得/

    2022年10月30日
  • ipx防水等级表_说明知识运用的方法

    ipx防水等级表_说明知识运用的方法“××”是两位数字,第一位表示对固体的防护等级,第二位表示对液体的防护等级。固体防护等级有7个等级;液体防护等级有9个等级;防尘等级(固体防护等级有7个等级)0:没有保护1:防止大的固体侵入2:防止中等大小的固体侵入3:防止小固体进入侵入4:防止物体大于1mm的固体进入5:防止有害的粉尘堆积6:完全防止粉尘进入防水等级(液体防护等级有9个…

发表回复

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

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