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,一经查实,立即删除!

相关文章

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

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

python2x 安装 psutil

安装psutil模块: wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificatetar -zxvf psutil-2.0.0.tar.gzcd psutil-2.0.0python setup.py install转载于:https://www.cnblogs.com/yingdiblog/p/7347325.html

c++编码风格指南_带回家的编码挑战的基本指南

c编码风格指南by Jane Philipps简菲利普斯 带回家的编码挑战的基本指南 (The Essential Guide to Take-home Coding Challenges) 介绍 (Introduction) Hi, I’m Jane. I wrote this guide because I want to help others with non-traditional backgrounds succeed on take-ho…

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

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

谈谈最短路径

最近遇到一些个问题,有关最短路径算法,又称A算法转载于:https://www.cnblogs.com/swell/p/6108850.html

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

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

python发邮件详解_python实现发送邮件详解

[Python]代码#_*_encoding:utf-8_*_#script for python3.2#-------------------------------------------------------------------------------# Name: 发送邮件# Purpose:## Author: QiuChangJie## Created: 10/09/2012# Copyright: (c) cj.qiu 2012# Licence: #------------…

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的库…

计算机二级word真题书娟,计算机二级word试题.docx

PAGEPAGE # / 80Word试题在考生文件夹下打开文档 word.docx &#xff0c;按照要求完成下列操作并以该文件名( word.docx )保存文档。某高校为了使学生更好地进行职场定位和职业准备&#xff0c;提高就业能力&#xff0c;该校学工处将于2013 年 4月 29 日(星期五) 19:30-21:30 在…

农场js_通过销售农场商品来解释Web API

农场jsby Kevin Kononenko凯文科诺年科(Kevin Kononenko) 通过销售农场商品来解释Web API (Web APIs explained by selling goods from your farm) If you have been to a farmer’s market or farm stand, then you can understand the concept of an application programmin…

python安装pyqt4_windows下安装PyQt4

第一步&#xff1a;确认自己电脑上的Python版本。然后下载对应的.whl文件下载第二步&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4上下载对应版本版本的.whl文件。例如cp-27-cp27m就代表是python2.7的版本。如果要下载python3.6且电脑是64位的则需要下载PyQt…

repcached配置与简单測试

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

为Activity设置特定权限才能启动

1.在AndroidManifest文件中&#xff0c;声明一个权限&#xff0c;并在activity中添加属性 <!--声明权限&#xff0c;权限名一般为包名permission类名 --><permission android:name"com.jikexueyuan.notepad.specpermission.permission.MyAty"/> <acti…

nashPay项目遇到的问题

浏览器提示错误代码&#xff1a; Failed to load resource: net::ERR_CONNECTION_REFUSED 出现这个问题是core服务异常&#xff0c;重启core服务可解决 layUi 下拉框赋值 var loadZhongduan function (data) { admin.req({ url: baseUrl "shoukuanZhongduan/getList&quo…

使用Express在Node.js中实现非常基本的路由

by Pau Pavn通过保罗帕文(PauPavn) 使用Express在Node.js中实现非常基本的路由 (Really, really basic routing in Node.js with Express) The goal of this story is to briefly explain how routing works in Express while building a simple — very simple — Node app.这…

计算机抄作通用模块,通用命令行模块的设计及实现

摘要&#xff1a;自从上个世纪八十年代以来,图形用户界面得到快速发展,计算机逐渐进入各类企业,家庭,其应用得到广泛的推广.对比起命令行界面来说,图形界面在交互性上有着不可比拟的优势.但在一些需要执行大量重复性工作的方面,例如在系统管理上,命令行界面提供的脚本功能,能够…

python读写磁盘扇区数据_C++-如何直接读取Windows磁盘扇区的数据?

1.通过CreateFile系列来完成读写扇区可以通过CreateFile打开磁盘逻辑分区&#xff0c;还要通过SetFilePointer以文件操作的方式把指针移到要操作的磁盘扇区开始处&#xff0c;在定位到要访问的扇区开始位置后就可以通过ReadFile或WriteFile函数实施相应的读写访问了&#xff0c…