20192301张晨宇 2019-2020-2《数据结构与面向对象程序设计》课程总结

20192301张晨宇 2019-2020-2《数据结构与面向对象程序设计》课程总结,第1张

概述20192301张晨宇2019-2020-2《数据结构面向对象程序设计课程总结一、课程内容总结第一章绪论本章介绍了Java程序设计语言和基本的程序开发过程。介绍了面向对象的开发方法,包括相关的概念和术语。了解Java程序设计语言,了解程序编译运行的步骤,理解问题求解的一般方法,了解 20192301张晨宇 2019-2020-2《数据结构与面向对象程序设计》课程总结一、课程内容总结第一章 绪论

本章介绍了Java程序设计语言和基本的程序开发过程。介绍了面向对象的开发方法,包括相关的概念和术语。

了解Java程序设计语言,了解程序编译运行的步骤,理解问题求解的一般方法,了解软件开发的一般过程,了解面向对象技术相关概念,面向对象的程序设计,类是对象的蓝图,虚拟机介绍与安装,IDEA介绍与安装。

第二章 数据和表达式

介绍了Java中使用的基本数据类型及执行计算时表达式的使用。讨论了数据类型之间的转换,以及如何借助于Scanner类交互地从用户读入输入。

字符串print及println方法字符串连接转义字符变量和赋值变量赋值语句常量基本数据类型整型和浮点型字符类型boolean类型表达式算术运算符运算符优先级自增及自减运算符赋值运算符数据转换转换技术读输入数据Scanner类第三章 使用类和对象

本章介绍了讨论对象的创建及对象引用变量的使用,探讨String类提供的服务,探讨Random类和Math类提供的服务。

创建对象String类包Random类Math类第四章 条件和循环

本章主要介绍了if和switch语句执行基本的判定,分别使用while、do、和for循环重复执行语句,探讨用于判定的布尔表达式,为了分析并读入文本文件中的重复输入,再次讨论了Scanner类。

if语句可以让程序选择是否执行一条特定的语句。循环语句可让程序多次执行同一条语句。可用逻辑运算符构造复杂的条件。if-else语句可在条件为真时实现一个 *** 作,在条件为假时实现另一个 *** 作。在嵌套的if语句中, else子句与最近尚未匹配的if相匹配第五章 编写类编写类类的定义:属性+方法;类的封装、形参实参;构造方法不应该有返回值;构造方法提倡封装;程序的测试;第七章 数组

本章主要讲了定义并使用数组来组织数据,讨论边界检查及容量管理技术,讨论数组作为对象及对象数组的问题。

数组数组实例化;数组越界问题排查与预防;第八章 继承

本章主要讨论类继承的设计机制,说明抽象类的目的及使用方法,讨论与继承有关的可见性问题

继承继承是从已有类派生出新类的过程;父类与子类;子类可以复写父类的方法;抽象类不能实例化;第九章 多态

探讨了绑定的概念,以及它与多态的关系。之后研究了如何使用继承或接口来完成多态引用。与多态相关的设计问题也在这一章介绍。

多态多态引用可以在不同的时候指向不同类型的对象;接口是一组抽象方法,所以不能被实例化;方法的参数可以是抽象的;第十章 异常

介绍了异常处理及不捕获异常时的后果。探讨了try-catch语句,分析了异常的传播。本章还介绍了处理输人/输出时的异常使用,给出了一个编写文本文件的例子。

异常异常代未正确处理的对象;trycatch语句可以处理特定类型的异常;I/O异常及其处理;第十一章 递归

介绍了递归的概念、递归的实现及其正确的用法。

递归递归允许方法调用自己;每次递归调用某一方法时,都创建了新的局部变量和参数;第十二章 算法分析

讨论了包括递归算法在内的算法复杂度的分析技术,介绍了大0符号。

第十三章 查找与排序探讨了线性查找和二分查找算法,还介绍了5个排序算法,其中包括平方阶及O(n logn)的算法。同时还研究了这些算法的效率。

查找与排序

高效的查找可以减少查找次数与时间;二分查找等查找算法各自适用于不同的情况;选择排序、插入排序等排序方法也是需要面对不同情况具体分析;
第十四章栈

介绍了集合的概念,确立了将接口与实现分开的重要意义。我们将栈作为集合的第一个例子,介绍了栈的动态及定长的两种实现方式。

栈后进先出;集合的介绍;链表的介绍;栈、链表各有优劣第十五章 队列

介绍了队列的概念,然后作为工具来帮助我们解决问题,最后研究所使用的数据结构。讨论了基于数组和动态链表的两种实现方式。

队列

队列的介绍;
先进先出;

第十六章 树

介绍了树的术语和相关概念,讨论了不同的实现策略,详细介绍了递归的链式实现方法。

第十七章 二叉排序树二叉查找树左子树小于结点,右子树大于结点;最有效的二叉查找树是平衡的;可以对二叉树进行旋转使其达到平衡;第十八章 堆和优先队列

介绍了查找树的概念,以及典型的二叉查找树的链式实现。

堆堆是一个完全二叉树;大顶堆、小顶堆;堆中元素的添加、删除;第十九章 图图无向图、有向图;邻接,路径;边的权;邻接矩阵;图的遍历:广度优先与深度优先;第二十章 哈希算法

涉及创建哈希表以便于存储及获取对象的相关概念。本章还介绍了Java API中与哈希相关的几种应用。

二、总结所做过的作业安装虚拟机;实践一,虚拟机编写简单程序;编写简单的类;测试一复数计算器类的继承概念常识问答测试二;栈实践;二分查找实践;树——计算;二叉树建立,层序遍历实践;哈夫曼编码实践;测试三;地图染色实践;迪杰斯特拉算法实践;拓扑排序;最小生成树测试;英语打卡;三、实验报告链接汇总实验一 linux基础与Java开发环境

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

(2)练习linux基本命令;

(3)学习Java程序的JDB调试技能。

(4)编写简单的Java程序。

实验报告博客链接:https://www.cnblogs.com/dengziyan/p/13781579.html

实验二

(1)编写简单的计算器,完成加减乘除模运算。

(2)要求从键盘输入两个数,使用判定语句选择一种 *** 作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。

(3)编写测试代码,测试验证。

实验报告博客链接:https://www.cnblogs.com/dengziyan/p/13789694.html

实验三

下载安装并使用IDEA,完成下面实验。

(1)初步掌握单元测试和TDD

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

(3)初步掌握UML建模

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

实验报告博客链接:https://www.cnblogs.com/dengziyan/p/13806990.html

实验四

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

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

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

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

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

(6)实验报告
在规定时间前发表博客,标题“学号 实验四 《数据结构与面向对象程序设计》实验报告”

实验五

(1) AndroID Stuidio的安装测试: 参考《Java和AndroID开发学习指南(第二版)(EPUBIT,Java for AndroID 2nd)》第二十四章:

参考http://www.cnblogs.com/rocedu/p/6371315.HTML#SECANDROID,安装 AndroID Stuidio
完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分
学习AndroID Stuidio调试应用程序
(2)Activity测试: 参考《Java和AndroID开发学习指南(第二版)(EPUBIT,Java for AndroID 2nd)》第二十五章:

构建项目,运行教材相关代码
创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
(3)UI测试: 参考《Java和AndroID开发学习指南(第二版)(EPUBIT,Java for AndroID 2nd)》第二十六章:

构建项目,运行教材相关代码
修改代码让Toast消息中显示自己的学号信息
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
(4)布局测试: 参考《Java和AndroID开发学习指南(第二版)(EPUBIT,Java for AndroID 2nd)》第二十七章:

构建项目,运行教材相关代码
修改布局让P290页的界面与教材不同
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
(5)事件处理测试: 参考《Java和AndroID开发学习指南(第二版)(EPUBIT,Java for AndroID 2nd)》第二十八章:

构建项目,运行教材相关代码
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分

实验六

(1)通过键盘输入一些整数,建立一个链表(1分);
这些数是你学号中依次取出的两位数。 再加上今天的时间。

(2)实现节点插入、删除、输出 *** 作(2分,3个知识点根据实际情况酌情扣分);从磁盘读取一个文件, 这个文件有两个数字。
从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。 保留这个链表,继续下面的 *** 作。
从文件中读入数字2, 插入到链表第 0 位,并打印所有数字,和元素的总数。 保留这个链表,并继续下面的 *** 作。
从链表中删除刚才的数字1. 并打印所有数字和元素的总数。

(3)使用冒泡排序法或者选择排序法根据数值大小对链表进行排序(2分);
如果你学号是单数, 选择冒泡排序, 否则选择选择排序。
在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。

实验七

(1)定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。

(2)重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)

(3)参考http://www.cnblogs.com/maybe2030/p/4715035.HTML ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图

(4)补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)

实验八

(1)用JUnit或自己编写驱动类对自己实现的linkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息

(2)基于linkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树

(3)自己设计并实现一颗决策树

提交测试代码运行截图,要全屏,包含自己的学号信息

(4)输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)

实验九

(1) 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)

(2) 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)

(3) 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)

(4) 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)

(5) 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)

四、代码托管链接- 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?- 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得加点代码和改点代码体现在对代码负责和精益求精的精神上。同时编程中难免会遇到问题,在deBUG时通过编译或者调试,也经常加点代码改点代码来一点点前进。另一方面,代码创新不一定要自己全部打完所有的代码,站在巨人的肩膀上,学会理解应用别人的代码、变成自己的东西,也是非常必要的。- 积极主动敲代码做到没?教材实践上有什么经验教训?基本做到了。代码能自己敲的尽量自己敲,课本上的代码也通过自己敲来理解,比单纯的看更有效果。敲教材代码时让我理解到了代码不能过于独立,经常会遇到需要前面代码来铺垫实现后续代码的情况,不能敲完一个代码扔一个。五、课程收获与不足- 自己的收获(投入,效率,效果等)投入了相比其他科目更多的时间,收获也非常大,虽然课时相对不多,但每节课都很充实,课上时常有听不懂的地方,课下自学的效率也因此提升很多,码云代码几千行大多都是自己打的,效果感觉还可以。- 自己需要改进的地方如果后期有更多的时间,java学习就能投入更多了,当然也与自己的惰性有关。后期有些地方不求甚解,只求吧作业做完,这些都需要改进。- 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议同宿舍的人每次试验都会相互询问,互相交流试验进度,交流试验知识等。班级群内也经常有人发布自己找到的学习资料,结对学习非常成功。我的个人理解比较欠缺,经常受到宿舍的帮助,前期也为宿舍的学习提出自己的看法。六、问卷调查- 你平均每周投入到本课程有效学习时间有多少?开学到期中后每次课后和周末都会学很长时间,开始安卓后很多地方不懂,投入非常大量的时间。期中到期末其他科目压力增加,没法慢慢思考java的很多事情,时间减少了不少,把作业做完很少有时间认真消化吸收。每天大约一到两个小时,每周大约十四五小时。- 每周的学习效率有提高吗?你是怎么衡量的?有所提高。通过从对知识懵懵懂懂的阶段到有所了解、可以上手所耗费的时间每次试验都会减少,衡量出对代码结构的学习比上学期的C语言学习更有规律性,更能掌握方法。- 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?放了很多视频,对学习有很大帮助,但是视频不能拖动进度条有点麻烦,后期直接从网上找资源更快。云班课的实验提交挺方便的,但云班课抢答模式有点奇怪,最后的课上抢答很容易抢不到。过于复杂的手势签到有点没必要,但是也没关系。- 你觉得这门课老师应该继续做哪一件事情?课上带大家一起敲代码,讲一些具体的代码知识点和易错点;老师官方推荐一些对学习有帮助的软件;督促英语学习。这些帮助都非常大。- 你觉得这门课老师应该停止做哪一件事情?全英理论考试。虽然初衷是好的,但是纯理论考试题目过难,英语储备完全不够,题目非常多,以当前知识储备来做很难很不合理,逼得同学们“八仙过海”。七、总结中涉及到的链接的二维码

码云:


实验1:


实验2:


实验3:


实验4:


实验5:


实验6:


实验7:


实验8:


实验9:

总结

以上是内存溢出为你收集整理的20192301张晨宇 2019-2020-2《数据结构与面向对象程序设计》课程总结全部内容,希望文章能够帮你解决20192301张晨宇 2019-2020-2《数据结构与面向对象程序设计》课程总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存