oop大作业报告范文精选8篇

山崖发表网范文2022-12-11 11:53:04113

oop大作业报告范文 第一篇

自我感觉在有好好掌握面向对象编程的思维后,在这一阶段每周完成PTA和实验的时间确实没有以往花费的多了(哈哈哈哈当然有老师放了一定水的原因,在这里再次感谢老师)。题目迭代的设计,我一直很喜欢,可以在接受新思想的同时回顾往期的知识。而且现在做ATM级也需要自己思考并设计类图, 这个形式也很不错,很好的锻炼并考察了我对面向对象编程的各个原则的践行效果。

2.理论课程

在这里我想先表达一下这门课程的喜爱,我很喜欢段老师,在他的课堂上,能收获的往往不是一段段收纳并整理好的知识点,更多的是交给了我们一份学习知识的目录,我可以在课外通过他所给的目录进行学习,独立思考,这能更好的巩固刚学的知识,对我的帮助真的很大。而且现在课程个作业结束后老师会给发送一份源码,我可以有个参考代码,可以学习老师的思路的同时比较自己的代码,并从中学到一些新的知识。

oop大作业报告范文 第二篇

作业简介:修改github上的一个snake游戏项目,添加一些特性和功能,需要满足下面的需求。

贪食蛇的控制

源代码只支持 4 个方向的运行,增加可以通过鼠标控制贪食蛇的运动。当按下鼠标键时,设 置 一 个 方向 向 量 , 该 方 向 向 量 为 鼠 标 所 在 位 置 (MousePosition) 与 蛇 头 所 在 位 置(SnakePosition)的差值。下一时刻,贪食蛇按照该向量的方向运动;运动的距离为 1 个标准单位。

水果的控制

源代码只支持 1 种水果,颜色随机且贪食蛇增加的长度固定。现增加黑色、棕色、红、蓝色、绿色、共 5 种水果,且贪食蛇吃了黑色、棕色水果不增加其长度,红色、蓝色、绿色水果增加的长度分别为 3、2、1;增加的长度在贪食蛇的尾部—假设初始是叠加在一起的。 系统随机生成上述 5 种水果,保持黑色和褐色水果所占比例为 25%,其他的占 75%。

绘制精灵版本的贪食蛇

源代码中的贪食蛇绘制过于简单—仅仅使用了矩形绘制。要求更改贪食蛇的绘制方法,头部使用图片,通过 sprite 进行绘制。

整体界面的修改

5)理清代码

原作的源码:

oop大作业报告范文 第三篇

题目设计与分析:

难度不大,仅仅需要做的是改变输出的格式,具体修改代码如下图。

踩坑心得:

无,由于是在前一次图形排序游戏的基础上迭代的题目且功能都已经完善和实现,仅仅需要做的是改变输出格式,完成该题并不困难。

改进建议:

   无,该题一次性通过。

 

oop大作业报告范文 第四篇

 

题目设计与分析:

题目要求编写一个银行 ATM 机的模拟程序,能够完成用户的存款、取款以及查询余额功能。由于此次指导书未给出类图,所以需要独立完成对每个类的设计,难度挑战不小。首先根据指导书中所言,将银联、银行、账户、用户、银行卡以及ATM设计为实体类,其中仅有一些必须的成员变量和set和get方法。可如何设计这些类的关系成为了头号难题。

1、设计实体类:在仔细阅读指导书中的相关概念背景后,决定用银联->银行->用户->账户->银行卡和银联->银行->ATM两条路线通过ArrayList连接各个业务类之间的关系(经下周的课后讲解发现,这么做是存在一定问题的不合逻辑,我将会在改进建议里作详细解释),随后在实体类定义相关的成员变量和方法。以Bank类为例,成员变量有name、用户链表和ATM链表,类中仅有get与set(实体类),如下图。

2、设计业务类:定义一个名为Control的类,其中有的方法主要可以分为四类,信息获取方法、检验方法、数据处理方法和输出结果方法。

信息获取方法包括Information和getInput两个方法,Information功能是初始化信息,getInput功能是获取输入的信息,详细代码如下图。

检验方法有四个,其功能分别是检验卡号合法性、检验密码合法性、银行和ATM编号匹配合法性和余额合法性。四个类大同小异,这里以检查卡号合法性为例作详细解释。该方法会在银联中通过多个for循环遍历以匹配卡号,如果找到了匹配的卡号则返回银行名称,否则返回“Not Found”表面为找到。

数据处理方法,通过在银联中遍历找到对应的卡号,再用set方法修改账户的余额。

输出结果方法有两个,toString和showResult。toString方法较为简单,即用卡号ATM编号和存取款金额返回一个固定格式的字符串;showResult会先判断输入信息的合法性,若信息正确输出对应的存取款成功信息,否则输出对应的报错信息,如下图。

踩坑心得:

1.无法正确的找到甚至无法返回对应的银行名称或账户名。起初在各个检查合法性的方法中所用的是迭代器进行遍历的,可一直显示报错动态数组为null。我错误的认为是所学知识不足,没有正确使用迭代器,便将遍历的方法改为了用多个嵌套的for循环。但修改过后问题仍存在,经debug检验后,发现错误原因是没有正确的存储信息,错将本属于工商银行的信息存入的建设银行。这个小错误让我花费了近半个小时进行处理,但是也给了涨了不少的教训,编程的时候一定要看清题目。

2.将初始化信息错误的存入了其他账户导致存取款后输出的金额与账户不匹配。

改进建议:

1.遍历的方法可以由改为foreach循环或者iterator,需要循环链表结构的数据时,尽可能不使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。

2.错误的选择实体类之间的关系,应该是用户和银行都拥有多个账户,而不是银行->用户->账户的关系。而且可以在类与类之间写成双向的,这样有助于遍历时方便正确的找到需要的信息,这一点在下一次迭代题目中有体现。

oop大作业报告范文 第五篇

历经三个阶段的学习,我认为面向对象编程思想是抽象的,可以将特定的对象和问题抽象成具有相同特性和行为的对象的抽象的类,增加代码的通用性、可维护性和可扩展性等等。与上学期学习C语言不同的是,面向对象的思想方法很好地提高了代码的可读性和可维护性。可是具体到实际问题,类的设计又是一个十分复杂的问题,要想编写出一个优秀的代码是很不容易的,在这次ATM的两次设计中,不能完完全全编写出符合的封装性、复用性、多态、继承、抽象类、接口、单一职责原则、“开-闭”原则等的代码,难度较大。这也是我接下来学习的方向和努力的地方。简单的语法可以快速的学会,但一个语言的思维却是需要长时间的积累与实践。

2.编程能力的提升

设计特别特别特别重要性(说三遍强调),设计是整个工程代码是否成功的关键,这么多次作业让我明显地感受到,在复杂的要求面前,错误的设计会带来巨大的工程量、丑陋不堪的代码以及各种莫名其妙的bug,而且在后面不断实现方法的过程中却发现,这个方法十分累赘,尤其是循环查找时使用多层遍历的方法将使得时间复杂度相当高。

类的设计好坏决定了代码拥有的功能,如果对进行类设计的时候没有太多思考的,那么在后来的修改上需要花大量的时间和代码来修改,体现了类的设计和代码的质量不高。而正确的设计则会使程序更加简洁和清晰,不仅复用性更好,写起来也更加得心应手。

当然,在编程过程中对于严谨性让我学到了不少,很多错误就是因为不严谨而导致错误,特别是这次ATM设计各个实体类中,常常出现数据存储错误的地方,最后导致debug检查错误,再反复进行修改。这完完全全是因为自己的不严谨导致花了很多不该花的时间,但是也给我涨了不少的教训,编程的时候一定要看清题目要求,要考虑到指导书中的细节,反复琢磨,这样才能更好的编程设计。

3、测试的理解与实践

三个阶段的大作业将代码测试的重要性显示出来了,通过代码测试你可以优化你的代码以及对代码的质量有个很好的检测,你可以通过测试你的代码对你的代码进行相应的改动,以及减少你查找你的代码中出现的问题,同时测试可以比较两个都可以实现相同功能的代码的质量,可以测试出那个代码的运行时间长短,可以看出那个代码的存在的一些bug,我感觉测试可以让代码更加完美,质量更高。我们在完成单方面的设计并不会有很大的困难,但是如果我们将我们编写的代码运用广泛或者是运用生活,会出现很多问题,有些是超额运算的数据不准确而还会有些是我们时间复杂程度上会出现超时运行的现象(这在上一阶段的计算日期的题目中就有所体现)。

oop大作业报告范文 第六篇

移动方式:

​ 增加了鼠标控制蛇移动的功能:用鼠标右键单击游戏界面中的某个位置,蛇会朝着这个方向移动。如果转弯角度过大,可能导致死亡判定。

相关核心代码(只给出修改部分):

水果颜色、分数、数量和初始化方式:

​ 给水果添加了颜色、分数的属性。通过随机数,保证有3/4概率生成“红、绿、蓝”类别的水果,也就是说这三种颜色各占1/4,红色3分,蓝色2分,绿色1分。有1/8概率生成棕色果实,有1/8概率生成黑色果实。这两种果实都是0分。分数表示吃掉一个果实后蛇增加的长度。

​ 蛇的绘制大致结构和原来相同,只不过使用了sprite。

​ 蛇节点初始化的代码如下:

设计贪吃蛇皮肤时的灵感来源: 星之卡比(粉色),吃豆人(黄色),微信群上某头像(蓝色)(逃)

(这部分的素材(像素画)全部是自己设计的)

oop大作业报告范文 第七篇

(很抱歉这个类图有点混乱..)

 

题目设计与分析:

本次题目是基于老师给的代码进行的修改,所需要修改的部分并不算多,需要添加的功能分为两大块:借记账户和贷记账户、跨行取款。

跨行取款难度不大,只需要在Bank类中添加成员变量interest,其作用为定义该银行跨行取款收取的利息。

首先将Account类中修改为抽象类,除了保留一个返回账户的方法外,其他方法均修改为抽象方法。再额外定义两个类名为DebitAccount和CreditAccount(CreditAccount类中需要定义额外的成员interest和creditBalance,作用分别是存储贷记账户的利息和超支额度),并使其继承自Account类,同时这两个类实现父类中的抽象方法。具体的代码编写难度不大,都可以基本依照老师版本中Account类中的代码进行修改,如下图。

(Account类)

(CreditAccount类)

最后是在取款时处理两大块功能产生的利息部分(自我感觉我这一块代码编写的还是不错的,哈哈哈哈自夸一下)。这里通过ATM和Account找到相对应的银行并匹配其名称是否相等来更新利息1,再判断取款金额是否大于存款金额来更新利息2,最后在取款时更新减去的金额。功能实现的代码如下。

踩坑心得:

基于上一次编写ATM设计代码的经验,说实话在处理指导书中要求额外添加的两个大功能的代码编写方面我并没有遇上什么困难。主要的问题出在很多类被设计成了双向的……这确实让我有一点晕乎乎的了。导致我在处理数据时又碰见了定义的变量为空的情况。最后经过长达2小时不懈的debug才发现其原因是父类和子类同时定义了相同的成员变量时,会出现两个相同名称的量,其中有一个为null,删去多余的成员变量后,这才解决了这个问题(真的折磨了我就很久)。

改进建议:

我想需要改进的部分主要是继承自Account类的DebitAccount类和CreditAccount类,这两个类其中的方法代码编写都不够简洁,重复性还很高,Account类中的抽象方法也可以有修改的空间,我会在老师发这次的源码后进行仔细的阅读后再进行回顾再修改。

oop大作业报告范文 第八篇

题目设计与分析:

题目中有四种形状的卡牌:圆形、矩形、三角形及梯形并给出各种卡片的相应参,要求求出各卡片的面积大小然后将卡片按照其面积值从大到小进行排序,同时求出所有卡片的面积之和。由于指导书中已给类图,先根据类图创建图形类并编写实现对应功能的方法。这些方法主要分为两类,分别是返回面积的方法和检测合法性的方法。

首先介绍检测合法性的方法,通过储存图形的DealCardList类中的validat方法调用各个图形类中的validat方法,难度不大,如下图。

 

其次是返回面积的方法。每个图形类中的getArea方法中储存的求面积的数学公式,再通过父类Card中的toString以字符串形式返回面积数据中,如下图。

最后是要求实现Comparable接口中的compareTo方法,难度不大,通过返回的两个图形卡片的差值正负判断两个图形的大小。

踩坑心得:

在该题目中,初看各个图形类可能会因为数量繁多而感到困惑,但通过类图先创建类和方法,通过实现每个类中的方法,思路便清晰了,困难应迎刃而解。

还有的在实现Comparable接口中的compareTo方法时,没用正确使用。通过对该接口的了解后,发现该方法应该实现一个比较大小的功能,因此我选择通过两个图形面积的差值的正负性来比较大小。

改进建议:

无,题目难度不大,每个类和方法都遵循单一职责和“开——闭”原则,功能也可以正常实现。

显示全文

注:本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即后台留言通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意

点击下载文档

文档为doc格式

发表评论

评论列表(7人评论 , 39人围观)

点击下载
本文文档