zoukankan      html  css  js  c++  java
  • 20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

    课程:《程序设计与数据结构》
    班级: 1823
    姓名: 魏冰妍
    学号:20182330
    实验教师:王志强
    实验日期:2019年9月23日
    必修/选修: 必修

    1.实验内容

    下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。

    1. 初步掌握单元测试和TDD

    2. 理解并掌握面向对象三要素:封装、继承、多态(自己去学!)

    3. 初步掌握UML建模

    4. 完成蓝墨云上 (1)-(5)实验。

    2. 实验过程及结果

    实验一

    参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST

    http://www.cnblogs.com/rocedu/p/6736847.html

    提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。

    实验二

    参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)
    参考(http://www.cnblogs.com/rocedu/p/6736847.html)
    以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。

    实验三

    实验三 Java面向对象程序设计(http://www.cnblogs.com/rocedu/p/4472842.html)

    参考 http://www.cnblogs.com/rocedu/p/6736847.html

    对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
    用自己的学号(30)%6进行取余运算,根据结果进行代码扩充。我的题目是:
    0:让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确。
    完全没有看懂题目。准备待定

    实验四

    任务:以TDD的方式开发一个复数类Complex,要求如下:
    // 定义属性并生成getter,setter
    double RealPart;
    double ImagePart;

    实验五

    使用WhiteStarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。
    参考 http://www.cnblogs.com/rocedu/p/6736847.html

    类图中只少两个类。

    3. 实验过程中遇到的问题和解决过程

    • 问题1:根据教程无法安装JUnit,没有plugin选项,找不到JUnit。

    • 问题1解决方案:找了半天发现直接在创建test的页面选择安装JUnit即可。

    • 问题2:什么是OCP原则和DIP原则

    • 问题2解决方案:
      面向对象五大原则有SRP、OCP、LSP、DIP、ISP

    1. SRP(Single Responsibility Princple单一职责原则)一个设计元素只做一件事。之前一直在讨论这件事。
    2. OCP(Open Close Princple开闭原则)“Closed for Modification; Open for Extension”——对变更关闭;对扩展开放
    3. LSP(Liskov Substitution Principle 里氏替换原则)Liskov是这个原则的提出者。理解起来就像大于5的数一定大于2,子能存在的地方父一定可以。
    4. DIP(Dependence Inversion Principle 依赖倒置原则)关于这个的描述我只看懂了一句,要依赖于抽象,不要依赖于具体。
    5. ISP(Interface Segregation Principle 接口分隔原则)一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。

    面向对象设计的五大原则之间并不是相互孤立的。彼此间存在着一定关联,一个可以是另一个原则的加强或是基础。违反其中的某一个,可能同时违反了其余的原则。因此应该把这些原则融会贯通,牢记在心!

    • 问题3:完全看不懂题目

    • 问题3解决方法:我再学习学习。。

    • 问题4
      不太会容量问题,博客中的运行结果与我的不同?

    • 问题4解决方案:通过反复查找,跟同学讨论,最终恍然大悟。

    • StringBuffer(String s)可以指定给对象的实体的初始容量为参数字符串s的长度额外再加16个字符。
      StringBuffer.append的用途是将字符串追加进原先的字符序列,容量是先拓展好的,所以它将遵循capacity的扩容方法继续扩容。

    • capacity扩容方法:

    1. 小于当前容量时,容量不变。
    2. 大于当前容量,并且小于(当前容量+1)2,则容量变为(当前容量+1)2。
    3. 大于当前容量,并且大于(当前容量+1)*2,则容量变为用户所设置的容量。

    本代码中长度明显为12,当小于16时容量为16。博客中不知道为什么长度为17,研究了好久觉得不对,但是长度大于16所以容量为(当前容量+1)*2=34,这一点可以确定。
    这样的话加分题也就迎刃而解了。

    • 问题5
      测试出错

    • 问题5解决方法:解决了问题4,问题5就是小case了。因为长度设置的有问题所以lenth测试报错。而长度48大于默认容量16,也大于(默认容量+1)*2。所以应该是用户设定的容量64.

    • 问题6indexOf返回的是什么意思?

    • 问题6解决方法:简明说就是指定返回字符串中的第几个字符,若指定有误(大于或小于总长)则返回-1.这个文档对于学习真的很有帮助

    其他(感悟、思考等)

    1. 自己摸索解决问题的过程很艰辛,但解决之后的收获也很大,希望能够继续保持。
    2. 本次实验做的很波折,问题很多,基础知识储备还是不够,需要自己多下功夫。

    参考资料

  • 相关阅读:
    团队开发——描绘用户场景
    学习EXTJS6(2)“Hello Usegear”
    D2007从win7升级到win10下的莫名其妙问题。
    学习EXTJS6(1)安装环境
    raize5的修改。
    EurekaLog是什么鬼?
    EditorLineEnds.ttr的困扰
    dev的汉化
    cxGrid主从表删除从表记录的困惑
    痛苦的Windows下的temp目录
  • 原文地址:https://www.cnblogs.com/weiii/p/11603550.html
Copyright © 2011-2022 走看看