0.前言

  这次作业针对的是oo程序设计第二单元(5-8周)的作业,在整体当中属于第4到第6次作业。

  此三次作业的知识要点为:继承类,多态性,字符串,结构类,接口类。

  此三次作业的时间为20.4.12-20.4.26。

1.作业过程总结

 ①总结三次作业之间的知识迭代关系

  第四次作业作为这三次作业的第一作,引出了继承类这个全新的概念,并且通过图形分类这个十分经典的例子让我们能够从日常生活的角度去理解抽象的继承类。

  解决了从无到有的问题之后,后续知识点如多态性,抽象类,接口类的学习相对来说方便了许多。很多东西和继承类相似。第五次作业则是仅学习了抽象类的内容。作为补充则是学习了一个相对于此内容无关的字符串提取识别。虽然无关,但是也是十分关键的内容。

  到了第6次作业时,基本已经完全学会了对于extends以及implements的使用,作为一个完整的工具可以被自由运用。由此,我们的java程序脱离了单纯的串性连接方式,而是真正向集束模块迈出了一步,从而拥有了更多的普适性和实用性。自己写的代码也不再只能为自己所用,而是有了规范和与他人协调的可能。

 ②如何通过作业逐步理解面向对象的封装性,继承性与多态性三大技术特性

  第四次作业指明了封装性的要点在于何处。通过特征指明,和private保密,以及set(),get()函数来进行封装,让一个最底层的类看起来更像一个工具,一个器具,在使用上和解构上更为方便。这个private更像一个包装。蒙特卡罗求圆周率强制的private让我控制住了直接修改变量的冲动,学会了使用这个标准。

  而第五次作业则是更多关系到继承性。从最开始的用处来讲,继承可以减少重复劳动,减轻末端程序员的劳作时间,但是继承作为个人开发来说,更好地提供了一个模板,提供了一个规范,在子类进行编写时,更好地方便调试和维护。

  多态性则是在第五次作业和第六次作业都有体现。虽说第五次就已经涉及到重写了,但是第六次作业涉及到super和重写自己不熟悉的文件。更加考验心理素质?(误)。一般我认为,在学会抽象类的时候,多态性就已经能理解到八九不离十了。剩下的只是对于实际应用的理解而已。

 ③作业过程中遇到的问题及解决方法

  关于封装性,继承性,多态性这些内容,由于不理解它们之间内存替换和调用的关系,在一开始也就是第四次作业时我总是小心翼翼地去使用自己编写的函数并且一步一步调试,生怕有函数没有按照我的预期运作。不过,当我理解了只要用类里面自带的函数,也就是以隔空指令的方式去运作的时候,就不会再担心这样的情况了。事实上,我认为目前我们只需要掌握这一种运作方法。因为我们的原则是遵守代码安全,而不是打破代码安全。

  第七次作业的一元二次求导题目我没有一个明确的思路,不知道怎样才能100%识别每一项,从而导致经常出现识别出错,出现无谓的+号,甚至于不知道到底应该怎样去安排array。在这方面,我请教了同学,他们给出的思路从数学角度来说更好,比我这种略带主观的思路容易编程。

 ④每次作业花费的时间比例

  第四次作业:7小时

  第五次作业:6小时

  第六次作业:10小时

 ⑤对编程过程的严谨性的认识及教训

  这几次作业让我认识到在不同的类之间应该有个既定的标准,这样子才能方便不同程序员设计的代码高效交流。

2.OO设计心得

 ①对面向对象三大技术特性之间关系的理解

  三大特性最主要的地方在于商业应用层面更加省时省力。因为商业化的最大特性就是沟通交流和标准化应用吧。

 ②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

  同上,在这样的思想之下,类和类之间绝对不能互相影响,就像日常我们一个小组成员处理任务一样,自己的事情自己干,不能越俎代庖。所以,在相关的类当中事先写好编辑用的方法,在需要的时候调用它是最为理想且不留逻辑问题的选择。这是编程进化来的结果。

 ③OO编程思维的理解

  因此,就像一部手机,一台电脑由外壳和内元件组成一样,对于oo编程来说,最重要的不是如何完成,而是能完成什么。没有人关心过程而是最大化关心结果。

 ④类设计心得

  通过设计类的职能,一开始困难的问题开始变得简单起来。通过拆分整个程序的实现难点,让程序看起来更容易完成了。

4.课程收获

  这四周,在名为eclipse的舞台上,我学到了很多技巧和手段去编写程序,去完成各种各样的简单工作。但是,只懂得在舞台上表演是不够的,下个星期对文件的运用能让我学到更为实际的操作,不再是没有实际用途的东西。我这样子相信。

  对于类的学习,让我走出了c语言简单的逻辑思路,能让我将自己的目标放得更高更远。一些复杂的操作,只要合理分配,在接口处严谨对接,一切皆有可能。

5.对课程的建议

 ①第三阶段作业难度,题量的建议

  第三次作业,希望能减小作业的难度。我希望作业的目的是检验所学,检验基础知识的掌握,而不是花费过多时间去考虑算法。第四次作业中,水文题的难度过高,工作量过大,涉及统计和传递的内容工期较长,我相信很多人直接选择了放弃,即使没有放弃,也没有做完。这种情况不算少见。尤其是最近,其他科目的时间占用较多,一些科目开始期末考试,更没有空余时间了。

  题量方面,无需进行改变。现在的题量已经足够让我回顾自己所学了。如果再少,那么也起不到练手的作用,可能基本功会慢慢丢掉。

 ②课程内容讲解方面的建议

  希望能够尽早放出视频回放,这样子当堂小作业如果遇到困难的时候可以直接看回放会少很多辛苦。

2020.4.28关于pta的总结的更多相关文章

  1. 【2020.11.28提高组模拟】T1染色(color)

    [2020.11.28提高组模拟]T1染色(color) 题目 题目描述 给定 \(n\),你现在需要给整数 \(1\) 到 \(n\) 进行染色,使得对于所有的 \(1\leq i<j\leq ...

  2. Learn from Niu 2020.1.28

    1. 泛读和精度的区别和迭代: 泛读: 1个月之内,读50篇论文,进行粗读,了解多维时间序列信号,有哪些research problem, challenges, research groups, r ...

  3. Codeforces补题2020.2.28(Round624 Div 3)

    A.Add Odd or Subtract Even 签到题~ #include<bits/stdc++.h> using namespace std; int T; int a,b; i ...

  4. 2020.02.28 Linux 命令

    Cat   语法格式 cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 --number:由 1 开始对所有输出的行数编号. -b ...

  5. 2020/1/28 PHP代码审计之命令执行漏洞

    0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...

  6. 2020/1/28 PHP代码审计之代码执行漏洞

    0x00代码执行原理 应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞. 该漏洞主要存在于eval().assert().p ...

  7. 2020.5.28 第八篇 Scrum冲刺博客

    Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.每日站立会议 1.1 会议照片 1.2 项目完成情况 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3. ...

  8. 【2020.11.28提高组模拟】T2 序列(array)

    序列(array) 题目描述 ​给定一个长为 \(m\) 的序列 \(a\). 有一个长为 \(m\) 的序列 \(b\),需满足 \(0\leq b_i \leq n\),\(\sum_{i=1}^ ...

  9. 2020.9.28 多进程multiprocess 进程池pool 子进程subprocess 进程间通信

    1.multiprocessing模块--跨平台版本的多进程模块 multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束: from ...

  10. 2020/12/28为止好用的PC下载工具

    IDM:http://www.internetdownloadmanager.com/ NDM(免费):http://www.neatdownloadmanager.com/index.php/en/ ...

随机推荐

  1. linux系统过滤ip地址总结

    Perl模块用法 安装Perl模块 # 官网地址 https://metacpan.org/pod/Regexp::Common # 下载地址 https://cpan.metacpan.org/au ...

  2. 关于pytorch一些基础知识的备份

    压缩conda环境用于备份目的实际上没有意义,因为还有其他方法可以做到这一点,这可能更合适,并使用专为此而设计的内置功能. 您可以创建一个环境.txt版本conda,详细说明其中的每个模块和版本,然后 ...

  3. 基于SDN控制器(ONOS)实现量子设备配置管理

    基础知识 基于SDN控制器(ONOS)实现量子设备配置管理,首先选择合适的南向协议.OpenFlow与NETCONF是两个最适合企业网场景使用的协议.目前各大网络厂商的网络设备都已基本宣称支持NETC ...

  4. 2357. 使数组中所有元素都等于零 (Easy)

    问题描述 2357. 使数组中所有元素都等于零 (Easy) 给你一个非负整数数组 nums .在一步操作中,你必须: 选出一个正整数 x , x 需要小于或等于 nums 中 最小 的 非零 元素. ...

  5. C - Watchmen CodeForces - 651C (使用map例题)

    #include<iostream>#include<map> using namespace std;map<int,int> x;map<int,int& ...

  6. SQL中使用JOIN时,过滤条件的位置

    sql语句 (SELECT * FROM t1 WHERE {subquery_where_condition}) a JOIN (SELECT * FROM t2 WHERE {subquery_w ...

  7. 使用vue3在element plus中在el-table中拖拽

    1.安装 vuedraggable npm i -S vuedraggable 2.在使用的组件,引入.sortablejs包含在vuedraggable import Sortable from & ...

  8. Jquery_001

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  9. 服务器新建分支,vscode检测不到

    执行    git remote update origin  命令,刷新远程分支

  10. java 项目中Error linstenerStart 报错解决方法

    项目中经常会遇到如下报错: 严重:Error linstenerStart 这种报错,我们看不出来到底是出现了什么问题.下面我们就一步一步来解决: (1)首先进入项目的classes目录下: (2)进 ...