ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

20202317向岩杰 2020-2021-2《数据结构与面向对象程序设计》课程总结

2022-01-02 19:05:30  阅读:178  来源: 互联网

标签:问题 结对 Java 岩杰 链表 2020 20202317 计算器 客户端


20202317向岩杰 2020-2021-2《数据结构与面向对象程序设计》课程总结

  • 课程内容总结

  1. 第一章
    • 简要内容

     基于命令行进行简单的Java程序编辑、编译、运行和调试。

     练习Linux基本命令。

     学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html。

     编写简单的Java程序。

    • 遇到的问题

    - 问题1:首先是在使用linux和vim编辑器的时候,由于是第一次使用这种方式操作系统,特别是对于我这种打字都有点费力的人来说,的确是一个比较大的难题。vim编辑器的使用显得手忙脚乱,刚开始估计都是这样的。
    - 问题1解决方案:这个东西的解决方法,好像也没啥特别的解决方法,自己有在尝试做一些题目,像在csdn上找了一些基础的练习题,单纯是为了练熟代码格式还有就是练手速。
    - 问题2:在安装jdk的时候出现了比较麻烦的事情,主要集中在安装Opera Jdk的时候,可能是由于先已经安装了openjdk的原因,在按照步骤装完opera jdk的时候,java -version仍然只显示openjdk。
    - 问题2解决方案:后来从老师那里知道了其实openjdk对于我们的学习已经够用了。

 

    • 心得体会

     还记得编写的第一个经典程序“hello World”。从那时起我已开始走进Java的世界。当时自己不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不-这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,就像之前学C的时候,一定是#include开头后跟int main(),学习一门计算机语言的一般都是这样,先模仿,再钻研。特别是在vim编辑器的使用显得手忙脚乱,刚开始估计都是这样的。后来自己查资料,在csdn上找到了好多我能看得懂的参考资料。接下来的学习中还是要多练习,要跟上老师的教学进度。同时也不能只是简简单单的满足于Java的学习,要利用大二的时间多开拓视野,尽可能多学习新东西。

 

   2.第二章

    • 简要内容

    (1) 编写简单的计算器,完成加减乘除模运算。
    (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
    (3) 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html)

    • 遇到的问题

    - 问题1:首先是对于构造方法过程稍微难以理解
    - 问题1解决方案:将C语言的函数和构造方法类比就好理解多了
    - 问题2:第一个计算器的输入体验不像一个计算器,所以想换一种写法
    - 问题2解决方案:多加一个循环用来定位符号,由于是两个数所以比较容易分割整个字符串但是也有缺点,就是如果想增加更多的计算种类比如科学计算器就比较麻烦。

    • 心得体会

     这次实验主要是强化了循环,对于构造方法的练习还不够。但是在想第二种方法的时候基本上Java的循环于c语言没啥区别,而且方法使得部分操作更加简单了,比如如果要将c语言中的一个字符串拆解可能十分麻烦,所以用c语言写计算器基本上就不会想到这种方法。但是第二种写的还是很麻烦,水平有限,暂时可能优化不了嘿嘿嘿。对于类与对象和构造方法的认识还不够,对于类、对象、方法之间的关系还差一些理解。之后会继续努力。

    3.第三章

    • 简要内容

 

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

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

      2. 理解并掌握面向对象三要素:封装、继承、多态

      3. 初步掌握UML建模

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

 

    • 遇到的问题

     - 问题1:junit的配置,junit3配置后仍然无法使用
     - 问题1解决方案:重新配置路径,尝试了包括junit-4.12等许多版本,最后一股脑全部放进去才搞定
     - 问题2:在(2)中test charAt时,出现预期与实际情况一样但是仍报错
     - 问题2解决方案:检查代码后发现单引号用成了双引号- 问题1:junit的配置,junit3配置后仍然无法使用

     - 问题3:对于设计模式的格式和具体方法不清楚,包括Byte等的包装类不熟悉
     - 问题3解决方案:查阅资料

    • 心得体会

      这次实验对于TDD和设计模式这些新的东西有了更深的体会,特别是对于产品代码和测试代码的理解,产品代码相当于一个类,测试代码通过调用这个类中的方法来验证这个类是否发挥了作用。其次是设计模式中的工厂方法模式,老师提供的示例中主要是使用这个模式,还有包括抽象工厂模式(AbstractFactory)等许多模式,通过代码扩充,对于设计模式的可重用性、可扩充性、可维护性和灵活性好等特点有了更进一步地理解。

    4.第四章

    • 简要内容

 

    (一)Java Socket编程

    1.学习蓝墨云上教材《Java和Android编程》“第16章 输入/输出 ”和“第22章 网络”,学习JavaSocket编程
    2.结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端。
    3.截图加学号水印上传蓝墨云,代码push到码云,并撰写实验报告。

    (二)Java和密码学

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

    以结对的方式完成Java密码学相关内容的学习(帖子中所有代码和相关知识点需要学习)。提交学习成果码云链接和代表性成果截图,要有学号水印。

    (三)编写有理数/复数计算器  

    结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。截图加水印上传蓝墨云,代码push码云。

    (四)远程有理数计算器

    结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。
    客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。截图加水印上                传蓝墨云,代码push码云。

    (五)远程复数计算器  

    结对编程,结对伙伴B编程实现客户端,结果伙伴A实现服务器端。
    客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴A(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端B,B收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。
    注意实验四(4)和实验四(5),一个人不能仅实现客户端,必须实现一个客户端和服务器,否则两个实验均不得分!!!

    • 遇到的问题

    - 问题1:关于有理数计算器的编写时,由于像个憨批忘记有nextToken这个方法无法从输入的算式中提取数字
    - 问题1解决方案:用for 循环定位空格,记录空格的位置,用substring提取数字和运算符
    - 问题2:对于IP地址稍做了研究因为在我尝试多次修改地址时发现并不会影响链接
    - 问题2解决方案:后来了解到从127.255.255.255到127.0.0.1都是本机地址,称为环回地址

    • 心得体会

    这次还是学到了很多的东西,特别是自己尝试去研究特定的方法,像一开始忘记了有nextToken这东西,然后研究出靠空格来定位,用数组来记录空格位置,再分割算式的方法提取数字和运算符,总的来说还是非常棒的(说不定就是nextToken的底层代码呢嘿嘿嘿),包括实现客户端和服务器的循环问答,下次继续加油。

    5.第五章、第六章

    • 简要内容

 

    1.链表练习,要求实现下列功能:

    通过键盘输入一些整数,建立一个链表;
    这些数是你学号中依次取出的两位数。 再加上今天的时间。  
    例如你的学号是 20172301
    今天时间是 2018/10/1, 16:23:49秒
    数字就是
    20, 17,23,1, 20, 18,10,1,16,23,49
    打印所有链表元素, 并输出元素的总数。
    在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是
    int nZhangSan = 0; //初始化为 0.
    做完这一步,把你的程序签入源代码控制(git push)。

    2.链表练习,要求实现下列功能:

    实现节点插入、删除、输出操作;
    继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;
    从磁盘读取一个文件, 这个文件有两个数字。
    从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。 保留这个链表,继续下面的操作。
    从文件中读入数字2, 插入到链表第 0 位,并打印所有数字,和元素的总数。 保留这个链表,并继续下面的操作。
    从链表中删除刚才的数字1. 并打印所有数字和元素的总数。

    3.链表练习,要求实现下列功能:

    使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;
    如果你学号是单数, 选择冒泡排序, 否则选择选择排序。
    在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。
    在(2)得到的程序中继续扩展, 用同一个程序文件,写不同的函数来实现这个功能。 仍然用 nZhangSan (你的名字)来表示元素的总数。

    • 遇到的问题

    - 问题1:一开始写的deleteElement方法有大问题,从头结点开始遍历链表的时候一直到tail都不能找到目标元素。
    - 问题1解决方案:没有解决(9#%&#),但是学到了怎么使用debug和设置断点,而且也大概发现了问题,在进入deleteElement方法的时候,头指针并不为空,而且元素在比较时可能存在内容无法比较,可能需要重写equals(人类极限了属于)。
    - 问题2:在冒泡的时候首先遇到的问题是element的比较。因为一开始的代码中链表的元素是Time类,就是上面截图中的Time类,但是两个类怎么比较。。。。直接蚌埠住了,再加上跟deleteElement死磕了好几个钟,所以放弃思考了
    - 问题2解决方案:把Time类删了,删干净了,全部换成Integer,这样冒泡的排序也很好写。

 

 

 

(按顺序)总结所做过的作业

 

  • 作业1:xxx

 

(按顺序)实验报告链接汇总

 

  • 实验一 实验名称:简要内容

实验二 实验名称:简要内容

……

 

代码托管链接:

 

  • 给出statistic.sh的运行结果,统计本学期的代码量。

 

课程收获与不足

 

  1. 自己的收获(投入,效率,效果等)
  2. 自己需要改进的地方

标签:问题,结对,Java,岩杰,链表,2020,20202317,计算器,客户端
来源: https://www.cnblogs.com/A20202317-xiang-yanjie/p/15757959.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有