20162329 张旭升 实验三:实验报告

实验三:实验报告

课程:程序设计与数据结构
班级: 1623
姓名: 张旭升
学号:20162329
指导教师:娄嘉鹏 王志强
实验日期:5月12日

实验密级: 非密级
预习程度: 已预习

必修/选修: 必修
实验序号: cs_29

实验名称: Java面向对象程序设计

实验内容

  1. XP基础

  2. XP核心实践

  3. 相关工具

实验要求


1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

  1. 完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是 运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决 办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可 以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

  2. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。


实验步骤

(一)敏捷开发与XP
(二)编码标准
(三)结对编程
(四)版本控制
(五)重构
(六)Java密码学算法

实验过程

一.敏捷开发与XP

  • 敏捷开发包括许多模式,而XP模式就是其中一种,本次实验也主要讨论的就是这种模式。

  • XP是以开发符合客户需要的软件为目标而产生的一种方法论

  • XP是一种以实践为基础的软件工程过程和思想

  • XP认为代码质量的重要程度超出人们一般所认为的程度

  • XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件

XP模式的开发中就包括了一下过程:
1.编码标准:
  • 包、类、变量用名词

  • 方法名用动宾

  • 包名全部小写,如:io,awt

  • 类名第一个字母要大写,如:HelloWorldApp

  • 变量名第一个字母要小写,如:userName

  • 方法名第一个字母要小写:setName

    当代码可以满足以上的一些标准时代码的可读性就会大大增加,代码的档次也会立马提升。

2.结对编程
结对编程的好处在于当一个人的思维总是有局限性的,当两个人坐在一起编写一个代码时就好像飞机驾驶时需要一个机长和一个僚机一样,在减少出错的同时也能提出更多的建议或者意见。
3.版本控制
1.版本控制提供项目级的 undo(撤销) 功能: 没有什么事情是终结版本, 任何错误必须很容易回滚。 假设你在使用世界上最复杂的文字处理系统。 它具备了所有的能想到的功能,就是没有支持 DELETE(删除) 键。想象你打字的时候得多么的谨慎和缓慢吧, 特别是一篇超大的文档的快临近末尾的时候, 一个不小心就要重头再来(试想你选中所有的文字, 不小心按了 DELETE 键, 因为没有撤销功能,只好重新录入)。编辑文字和版本控制相同,任何时候都需要回滚,无论是一个小时, 一天, 还是一周, 这让你的团队工作自由快速的工作, 而且对于修正错误也非常自信。

2.版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行。 再也不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。

3.版本控制系统保存了过去所作的修改的历史记录。如果你遭遇到一些惊讶的代码,通过版本控制系统可以很容易找出是谁干的, 修改了什么, 修改的时间, 如果幸运的话,还能找出原因。

4.版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不需要整个团队的停止工作,不需要冻结代码。

5.版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。 这对研究非常有用, 也是重现以前某个有问题的发布版本的基础。
4.重构

重构就是在不改变软件外部行为的基础上,改变内部的结构,使其更加易于阅读、易于维护和变更。

目前我们对于类的重构是对于IDEA菜单栏中的Refactor选项卡中的各个功能的使用学习:
  • Rename功能可以修改类的名字或变量的名字使其更符合代码的编码标准。
  • Encapsulate Field功能可以实现对类中变量的封装,并快捷生成set,get方法。
  • Extract Method功能可以用于提取重复代码然后用 Generate中相应的方法对重复代码进行重构,提高代码质量。

Java密码学算法

凯撒密码:
之前在书本学习的章节中我们就有接触过简单的密码算法,就是凯撒密码,它是一种典型的对称型密码学算法,相对其它的密码算法来说是比较简单的,原理就是将一句英文句子通过将每一个字母的```ASCLL```码都加或减去几位,可以将原来的句子编程另一个句子或者乱码从而实现明文加密的目的,同时解密的时候就是用同样的方法回移相同的位数就可以了。
其他加密算法:
在Java的JDK中已经给我们提供了许多不同种类的加密算法,而通过这次实验我们所学习的分别是以下两种加密算法:
  • 对称加密-DES算法:

这种算法的加解密的本质和凯撒密码是相同,也就是加解密所用的密钥都是一样的,不同之处在于该算法生成密钥是无规律且有很大的长度的,这就使得用该算法加密的文件是很难被破译的。

  • 非对称加密-RSA算法:

这个算法也是我在这次实验中重点研究并实际使用多次的一个加密算法,它与之前DES加密算法最大的不同之处就在于它的密钥分为公钥和私钥两种,通常明文会通过公钥进行加密,而用相应的私钥进行解密,同时公钥是可以互相交换的,而私钥是个人保存的。

  • 举个例子:

      如果你想要利用网络给“张三”传达一句非常机密的话,而你又怕直接传送不安全,你就可以用“张三”的公钥将你要传达的话进行加密处理,然后将密文用网络直接传送给“张三”,当“张三”接收到了密文后用他自己的私钥对其解密就可以正常阅读了,这样即使在传达过程中被截获也并不会泄密,因为截取密文的人并不具有“张三”的私钥。
    

实验中遇到的问题

  • 老师给的博客非常清晰,在认真对着文字和代码边实践边看的同时学习效率非常高而且并没有遇到什么问题。

实验不足

在IDEA的重构中还不熟练,在遇到一些相应的问题时第一时间还是想到自己去敲一个而不是直接运用重构的快捷方法。

实验心得


通过本次实验我充分的体会到了用集成编程环境的好处,就比如一些你忘记加却必须要加的一些代码系统会自动生成,并且在你忘记某个方法时输入相应对象它就会给你提示,这对于我们这些编程的初学者来说确实是非常实用,并且它自带的代码格式也使我们的代码变得更好看,可读性更高了。

posted @ 2017-05-12 20:55  Don't_worry  阅读(261)  评论(0编辑  收藏  举报