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. 本次实验做的很波折,问题很多,基础知识储备还是不够,需要自己多下功夫。

    参考资料

  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/weiii/p/11603550.html
Copyright © 2011-2022 走看看