OO第一单元总结

OO第一单元总结

第一次作业总结

 

这是我第一次接触Java和面向对象思想,最一开始,我建立了简单的类和对象的概念,多亏了第一次作业难度和复杂度较低,我才没有崩掉hhh。 第一次作业我只分了三个类,一个main,一个多项式,还有项。项通过加号连接起来形成多项式。由于求导规则简单,我将求导放在了项类里,成为一个方法。 对于表达式格式的分析判断,根据自己项和多项式的关系,除了个别必要的判断,我将大多数的判断都分在了项的匹配中。 这样做是最简单的想法,但是扩展性较差,以至于我在做第二次作业时进行了重构。

第二次作业总结

 

第二次作业和第一次相比,增加了因子的种类,因此,如果利用第一次作业的架构,可能不太好实现,而且考虑到第三次作业的可扩展性,我将求导法则和顶层的一些格式判断分离了出来,并且创建了一条链式的类的构造:函数因子->项->表达式。即因子用乘号连接起来形成项,项则由加号连接起来形成表达式。 基于这样的链式构造,我的求导法则也利用了链式递归的方法,即多项式的求导的返回值是对项的求导的和,项的求导返回的是通过乘法法则连接起来的函数因子的求导结果。 对于格式的判断,我沿用了第一次作业的方法。

第三次作业总结

 

得益于第二次作业的思考,我的第三次作业基本沿用了第二次作业的架构。相比于第二次作业,我只是更改了格式判断的方法以及增加了因子的种类。但是可以看到,复杂度特别高,这直接导致了两个点超时。

综合总结

收获

综合来看,通过本单元的学习,我初步了解了面向对象的思维,更重要的是,我对代码的可扩展性有了新的认识。 对于面向对象思想,最大的收获是“Everything is an object.”,学习到了如何分类的方法,但是还有许许多多不足,就️以本次作业为例,求导法则和格式判断可以改进为静态方法,表达式,项,因子可以形成继承关系,而因子可以改成一个抽象类,把具体的五类因子分别写成类等等,基于这些想法,我现在正在进行重构和改进代码。 对于代码的可扩展性,我认为应该更注重一般性普通性的想法,而不能因为想到满足某一次作业取巧方法而窃喜。每次写代码前应该进行充分地思考一般性和可扩展性。

bug

对于找bug这一点,确实值得我反思。每次互测被找出来的bug不是一些很边界的数据,反而是一些很常规的数据。这些bug其实通过覆盖性测试可以很容易找出来。前两次的bug主要是格式错误考虑不全导致。 对于第三次作业,陷入了超时的坑,导致两个强测点没过,这一点应该是我代码架构的问题,如果用到继承方法,我的许多方法都能够得到化简,这个是知识储备不足和面向对象思维的锅(太菜了)。

Applying Creational Pattern

三次作业我用到的都是单例模式,这是我在没有学会熟练使用其他的面向对象的特性的情况下不得已选择的模式,而就我要重构的第三次作业的想法而言,设计模式利用的则是工厂模式。

转载于:https://www.cnblogs.com/hbstudy/p/10608173.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口开发指的是什么_企业在什么情况下要选择定制开发软件

软件定制开发是指软件开发商依据我们的需求停止量身定制的开发,软件定制开发相关于单纯产品的施行周期长、本钱高、风险大。假如根据定制开发的工作量或水平来分,我们能够分为完整定制开发和局部定制开发,完整定制开发是指软件开发公司依据我…

计算机没有搜索筛选功能,EXCEL中筛选工具怎么没有搜索功能

EXCEL中筛选工具怎么没有搜索功能卡饭网本站整理2018-04-01excel是一款数据处理工具,可以在众多的数据中找到想要的经过处理之后的数据,而最直接方便的功能就是筛选。请阅读下文,了解如何对数据进行筛选。如下图所示的学生成绩中,…

51nod 1851 俄罗斯方块(思维题)

分析&#xff1a;假设n>m&#xff0c;m为1,2单独讨论下&#xff0c;否则可以用第二行第一个把所有黑块搞到2x2的格子里&#xff0c;不断用凸出来的那个角一列一列把黑的变白就行了。然后只要黑色有偶数块都可以构造出来。复杂度O(nm) #include <iostream> #include &l…

gprof, Valgrind and gperftools - an evaluation of some tools for application level CPU profiling on

2019独角兽企业重金招聘Python工程师标准>>> In this post I give an overview of my evaluation of three different CPU profiling tools: gperftools, Valgrind and gprof. I evaluated the three tools on usage, functionality, accuracy and runtime overhead…

xp计算机属性打不开,xp系统我的电脑右键属性打不开怎么办

在使用xp系统过程中,我们经常需要打开“我的电脑”右键属性,查看系统信息以及进行虚拟内存、性能方面的设置,不过有深度技术ghost xp sp3纯净版用户右键点击我的电脑,发现右键菜单中的“属性”打不开,出现这个问题通常是注册表禁用了这个属性,下面小编跟大家介绍xp系统我的电脑…

状态机学习(二)解析INI文件

题目来自<系统程序员成长计划> 作者:李先静. 状态变化如下 #include <string> #include <iostream> using namespace std;string s "[GRP]\n\ name def \n\ data 2016.11.29 \r\n\ ; this is a comment \r\n\ str this is a test \n\ [zhangshan]…

接口之用例编写、验证

一、用Excel编写用例&#xff08;xlsx格式&#xff09; 截图仅供参考&#xff0c;实际用例编写需要根据实际情况来。 二、用例加载、验证 1、数据的加载 import xlrd,xlwt #python操作excel主要用到xlrd和xlwt这两个库&#xff0c;即xlrd是读excel&#xff0c;xlwt是写excel的库…

repcached配置与简单測试

安装libevent-devel进行configure。安装在文件夹/usr/local/repcached下编译安装完毕启动11211节点启动11212节点编写文件验证复制&#xff08;分别向1、2节点存入数据&#xff0c;验证复制&#xff09;ruby执行结果

元祖(转载)

一.基本数据类型  整数&#xff1a;int  字符串&#xff1a;str(注&#xff1a;\t等于一个tab键)  布尔值&#xff1a; bool  列表&#xff1a;list   列表用[]  元祖&#xff1a;tuple  元祖用&#xff08;&#xff09;  字典&#xff1a;dict注&#xff1a;所…

leetcood学习笔记-226- 翻转二叉树

题目描述&#xff1a; 第一次提交&#xff1a; class Solution(object):def invertTree(self, root):""":type root: TreeNode:rtype: TreeNode"""if not root:return Nonetemp root.leftroot.left root.rightroot.right temp# root.left,…

惠普omen测试软件,双GTX1080奢华魔方PC 惠普OMEN X评测

惠普最近一段时间在游戏PC领域着力发力&#xff0c;桌面的暗影精灵家族热卖&#xff0c;如火如荼的势头终于传导到了台式机领域。而今&#xff0c;惠普也终于有了自己正统意义上的重型武器——桌面游戏台式机OMEN 900暗影精灵II 系列。今天我们就要为大家评测这款三万元的台式机…

二. linux基础命令

linux的基本命令一般有100多个&#xff0c;多练就可以了&#xff1b; 如果登陆用户是root&#xff0c;那么是#&#xff1b;如果是其他用户&#xff0c;则显示的是$ 练习&#xff1a;基本命令 1.创建一个目录/data mkdir /data ls -ld /data 2.在/data下面创建一个文件oldboy.tx…

程序员这样对待简历,你期望面试官怎么对待你?

为什么想到谈这个问题呢&#xff1f; 前段时间公司因业务扩展需要招聘几个研发、运维以及测试人员&#xff0c;在看面试者的简历时&#xff0c;发现很多人都没有认真的去对待简历&#xff0c;只是把招聘网站上的打印一下就好了&#xff01; 这就让我想问几个问题&#xff1a; 1…

mfc try catch 捕获并显示_“全栈2019”Java异常第十七章:Error该不该被捕获?

难度初级学习时间30分钟适合人群零基础开发语言Java开发环境JDK v11IntelliJ IDEA v2018.3友情提示本教学属于系列教学&#xff0c;内容具有连贯性&#xff0c;本章使用到的内容之前教学中都有详细讲解。本章内容针对零基础或基础较差的同学比较友好&#xff0c;可能对于有基础…

长春高中计算机考试时间安排,长春部分高中期末考试时间出炉!

原标题&#xff1a;长春部分高中期末考试时间出炉&#xff01;上次跟大家分享了中小学的放假时间&#xff0c;今天就来说说期末考试时间吧&#xff01;虽然有的学校时间未定&#xff0c;但是按照惯例&#xff0c;长春市各大高中高一高二年级&#xff0c;本次的期末考试时间&…

用习惯了windows系统要怎样去认识linux系统(一)

一、前言对于普通用户来说99%都使用的是windows操作系统&#xff0c;即便那些会使用linux系统的技术员来说&#xff0c;他们PC上安装的也是windows系统。linux系统只是用于服务器市场&#xff0c;可以说现在服务器市场80%使用的是linux系统。那它们两系统之间有哪些区别呢&…

VAssistX使用小窍门

日常使用中的一些VAssistX使用小窍门&#xff0c;简单总结下 一&#xff0c;修改VAssistX默认缓存文件路径&#xff0c;防止默认C盘被占用空间过大 1、 打开注册表HKCU\Software\Whole Tomato&#xff0c;新建UserDataDir&#xff0c;数值为要修改的路径&#xff0c;如下图&am…

多个 gradle 文件夹 \.gradle\wrapper\dists\ 设置gradle不是每次都下载

韩梦飞沙 韩亚飞 313134555qq.com yue31313 han_meng_fei_sha 设置gradle不是每次都下载 \.gradle\wrapper\dists\ 在你导入项目的时候&#xff0c;有个选项的&#xff1a; 你要是选了Use default gradle mapper就会下载一次&#xff0c;Use local gradle distribution就会…

vb获取数组长度_如何实现数组的二分查找

二分查找是一种极其高效、简练的查找算法&#xff0c;它不仅简单&#xff0c;易用&#xff0c;而且还非常的高效。相对于顺序查找&#xff0c;二分查找在效率是呈现指数性提升&#xff0c;数据量越大&#xff0c;越能体现出二分查找法的优势。二分查找的查找过程是&#xff1a;…

所给服务器端程序改写为能够同时响应多个客户端连接请求的服务器程序_一文读懂客户端请求是如何到达服务器的...

点击上方“蓝色字体”&#xff0c;选择 “设为星标”关键讯息&#xff0c;D1时间送达&#xff01;互联网是人类历史上最伟大的发明创造之一&#xff0c;而构成互联网架构的核心在于TCP/IP协议。那么TCP/IP是如何工作的呢&#xff0c;我们先从数据包开始讲起。1、数据包一、HTTP…