zoukankan      html  css  js  c++  java
  • 20172311 2017-2018-2 《程序设计与数据结构》实验三报告

    20172311 2017-2018-2 《程序设计与数据结构》实验三报告

    课程:《程序设计与数据结构》
    班级: 1723
    姓名: 赵晓海
    学号:20172311
    实验教师:王志强
    实验日期:2018年5月27日
    必修/选修: 必修


    1.实验内容

    (1)代码规范

    http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA

    参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。

    在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。

    public class CodeStandard {
    public static void main(String [] args){
    StringBuffer buffer = new StringBuffer();
    buffer.append('S');
    buffer.append("tringBuffer");
    System.out.println(buffer.charAt(1));
    System.out.println(buffer.capacity());
    System.out.println(buffer.indexOf("tring"));
    System.out.println("buffer = " + buffer.toString());
    if(buffer.capacity()<20)
    buffer.append("1234567");
    for(int i=0; i<buffer.length();i++)
    System.out.println(buffer.charAt(i));
    }
    }
    

    (2)协同测试

    在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add . ; git commit -m "自己学号 添加内容";git push;

    提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

    (3)重构

    http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA

    完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

    (4)密码学应用

    参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
    提交学习成果码云链接和代表性成果截图,要有学号水印。


    2.实验过程及结果

    敏捷开发与XP实践-1:

    结果提交截图:

    实验最终代码链接:

    CodeStandard.java

    本实验收获:

    通过对本实验的学习了解到:
    1.编写代码一个重要的认识是“程序大多时候是给人看的”,编程标准使代码更容易阅读和理解,甚至可以保证其中的错误更少。编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
    2.编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要因素。
    3.实现代码规范的工具有很多,alibaba就是一个很好用的工具。
    4.关于代码标准,可以遵循以下原则:


    敏捷开发与XP实践-2:

    结果提交截图:
    • 图一:
    • 图二:
    • 图三:
    实验最终代码链接:

    队友Complex类码云链接
    测试代码码云链接

    本实验收获

    通过对本实验的学习了解到:
    1.结对编程是XP中的重要实践,XP的集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。结对编程对这一实践贡献良多:借由在不同的结对中工作,所有的程序员都能看到完全的代码。集体所有制的一个主要优势是提升了开发程序的速度,因为一旦代码中出现错误,任何程序员都能修正它。这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。这引出另外一个话题叫版本控制(Version Control)
    2.不论是对于团队还是个体,版本控制都提供了很多好处

    • 版本控制提供项目级的 undo(撤销) 功能。
    • 版本控制允许多人在同一代码上工作,只要遵守一定的控制原则就行。
    • 版本控制系统保存了过去所作的修改的历史记录
    • 版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候不需要整个团队的停止工作,不需要冻结代码。
    • 版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。

    敏捷开发与XP实践-3:

    结果提交截图:
    • 图一:

    • 图二:

    • 图三:

    实验最终代码链接:

    结对伙伴的ReadingMaterial.java的代码链接
    重构之后的代码链接
    2.
    结对伙伴的DVD.java的代码连接
    重构之后的代码连接
    3.
    结对伙伴的MonetaryCoin.java的代码链接
    重构之后的代码链接

    本实验收获:

    通过学习本实验了解到:
    重构的概念:
    1.重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
    2.重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。如何保证不改变软件外部行为?重构后的代码要能通过单元测试。如何使其更加易于阅读、易于维护和易于变更?设计模式给出了重构的目标。
    3.重构的动机:

    • 增加新功能

    • 原有功能有BUG

    • 改善原有程序的结构

    • 优化原有系统的性能

      4.一个完整的重构流程包括:
      
    • 从版本控制系统代码库中Check out code

    • 读懂代码(包括测试代码)

    • 发现bad smell

    • Refactoring

    • 运行所有的Unit Tests

    • 往代码库中Check in code
      5.哪些地方需要重构?有臭味道(Bad Smell)的代码。Bad Smell与相应的重构手法如下表所示:


    敏捷开发与XP实践-4:

    结果提交截图:
    • 图一:凯撒加密(参数设置 )

    • 图二:Java对称加密-DES算法(加密)

    • 图三:**Java对称加密-DES算法(解密) **

    • 图四:Java非对称加密-RSA算法

    • 图五:AB之间使用密钥协定创建共享密钥(A方)

    • 图六:AB之间使用密钥协定创建共享密钥(B方)

    • 图七:Java摘要算法- MD5

    实验最终代码链接:

    各种加密算法代码链接1
    模拟使用密钥协定创建共享密钥的另一部分

    本实验收获:

    通过对本实验的学习了解到:
    1.密码学: 主要是研究保密通信和信息保密的学科, 包括信息保密传输和信息加密存储等。
    2.密码学并不是孤立存在的,它需要有一个环境——保密通信模型。用保密通信模型来诠释这种信息传送方式, 如下图所示:

    3.根据密钥的使用方法, 可以将密码分为对称密码和公钥密码两种。
    对称密码(symmetriccryptography)是指在加密和解密时使用同一密钥的方式。
    公钥密码(public-keycryptography)则是指在加密和解密时使用不同密钥的方式,公钥密码又称为非对称密码(asymmetric cryptography)。
    将对称密码和公钥密码结合起来的密码方式称为混合密码系统(hybridcryptosystem),这种系统结合了对称密码和公钥密码两者的优势。

    • 混合密码系统加密:

    • 混合密码系统解密:


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

    • 问题:使用IDEA运行凯撒加密代码时出现如下错误:

    • 出错原因:对代码的使用目的和使用方式不清楚,没有设置加密的内容和参数。

    • 修改过后的运行结果如下:


    4.感想

    唯有坚持,才能有希望!JAVA的学习之路是漫长的!唯有坚持,才能进步!才有机会接触到更多的知识!JAVA的应用太广泛,可以用来编写让人头疼的加密和解密代码!!

    5.参考资料

  • 相关阅读:
    向MyEclipse添加Oracle数据库
    如何让搜索引擎抓取AJAX内容?
    XCode常用快捷键
    VMware Workstation 9上安装Mac OS X 10.8
    IOS学习第一篇——利用Xcode中的Interface Builder创建Hello World示例
    FM 101.7
    SqlServer游标操作
    添加COOKIE
    c#活动目录操作
    WCF服务调用方式
  • 原文地址:https://www.cnblogs.com/zhaoxiaohai/p/9105495.html
Copyright © 2011-2022 走看看