oo修仙之路

写在前面:

之前听说过oo这门课的威力,计院全体修仙现场的图也被转了不知多少遍,然而自己不亲身经历就不知这门课的难度所在。每次debug时耳边总会想起三国杀里面周瑜的话“挣扎吧,在血和暗的深渊里;痛苦吧,在仇与恨的深渊中!”oo对我来说大抵就是这样,痛苦却无法避免,下面就来回顾一下这一个月以来的oo生涯。

第一次作业:

第一次作业我美滋滋地以为老师会讲Java,像c语言和数据结构那门课一样,第一次作业并不会太难。然而我太天真了,第一次作业就给了我致命一击,看着如同天书一般的指导书,生平第一次懵了。正则表达式是什么?老师连Java基本语法都不教的吗?(老师:没错儿~)马克思说过:当你不会写代码的时候,你就去多看看别人的代码,学习学习就会了。(马克思:我没说过)于是秉承着这一理念,我去问学长要他的代码看看,试图从中分析出一些东西。然而,不会基础语法的代码就像一盘散沙,不用run它自己就散了,我并没有分析出任何东西并且写出了一滩狗屎。这个时候我才想起来,应该去好好听听基础语法课,看看基础语法的书。这是我第一个致命错误。

第二个错误就是我没有一个良好的规划,这也是我在三次作业中犯的共同错误。因为这个原因,我常常搞不清我现在在干什么,下一步要怎么做,也导致了写代码时本来应该先完成基本功能再去往里面加东西,我却是写着写着就加进去了,导致后面工作无法展开,一塌糊涂。

第一次作业是处理多项式加减运算的模拟计算器,说到底我写的还是一个面向过程的代码。在读取时,采用了逐字符读取的方法,由于正则表达式没能学好,最终还是选择了状态机。而由于状态机的问题,对于正常输入也总是报错,导致了代码正常功能测试没有通过,成为了无效作业。之后在课下想通原因进行了调整,重新用正则表达式写了(在这里我要感谢实验课,不知道为什么有些东西在课下怎么都想不通,一旦上了实验课,在ddl的夺命连环call之下,一下子就想通很多问题!真的太神奇了!小岳岳脸.jpg)。但第一次挑战依旧是gg了。在这里就不放第一次作业的类图了。(就一个类而已!请你闭嘴好好反思行吗!)

胜负乃兵家常事,大侠请重新来过!

第二次作业:

第二次作业gg的理由非常简单,我作死地让命令行输入要进行的电梯操作,让控制台输入“run”,这样公测当然通不过啊!!!公测怎么有那么智能?!这个gg的理由被我们宿舍笑了好久,我也想乘坐时光机回去问问我自己到底是怎么想的啊……

放上修改以后的类图(我以后再也不想碰命令行了……):

这次作业写起来还是很困难(这不是废话吗……第一次作业就那么艰难),主要原因是我不明白为什么需要五个类,这五个类到底要干什么,他们之间的关系是什么。在询问过某位大神之后,终于对于面向对象有一点点理解了,也明白在面对一个项目时,要怎么去分析和设计。

本次作业要构建一部傻瓜电梯,使用五个类完成,Elavator类共有5个属性,3个方法,分别实现返回时间,楼层,计算上下楼层所需时间并更新当前楼层的功能。

Floor 类十分鸡肋,没有程序应用上的作用。

Request类有4个属性,6个方法,分别实现返回目标楼层,时间,请求类型 ,电梯运动方向,对这些变量的赋值和计算赋值。

Requestqueue类中有1个属性,6个方法,方法规模都很小,只负责返回请求,计数及将新的请求加入到队列。

Dispatcher类类中有2个方法,其中一个用于建立队列处理输入,另一个用于返回队列。

第三次作业

第三次作业说起来轻巧,是在第二次作业的基础上增加“捎带”功能,然而真正写起来复杂程度超出了我的想象。过分细化的定义让人一头雾水,而这也是第一次有效作业emmm……应该说还是挺开心的,看到作业有效后狠狠哭了一场,有一种修仙小说中凡人刚刚达到炼气期踏上仙途第一步的感觉。

话不多说放上类图:

我的bug:

这次作业公测挂了三个点,第二次作业对于同质请求没有写好,导致了第三次作业挂在同质点上了。自己在给别人测的时候发现了一些我程序上边界点的bug,

但是给我测的那位同学没有发现orz没有被报bug虽然挺开心的,但是并不能说明程序就真的没有bug了,还是要努力改正。

别人的bug及测试方法:

在宿舍同学的指点下,我发现可以根据测试树先全面地写一份测试用例,互测时全部跑一遍。

通过这个方法找出对方非常多bug,比如说时间限制、乱序处理、捎带不捎带、同质不同质……

阅读对方readme中的各种规定,有时从他的叙述中可以发现逻辑上的错误,进而构建测试样例(那岂不是美滋滋,而且第三次作业但凡涉及捎带问题,up和down对偶性构建测试样例,一查一个准)。

这个就有点困难了,而且有种语文作业咬文嚼字的感觉,在身边同学几次撕逼的过程中也发现,基本通过这种方法找到的bug就和甲方乙方互相不理解一样,各说各有理,我个人不是很喜欢这样测试。

不过为了避免被别人通过这种方式构建,还是要好好写自己的readme!

最后就是仔细阅读别人的代码,发现其代码中的不足从而测试

对于目前的我来说,这几乎是不可能的。我ball ball各位大佬们下次能不能给自己代码写上注释,写注释看起来都很困难,不写注释是真的要很久才能看懂(所以我放弃了)

一些心得体会:

  1. 不抛弃,不放弃。第二次作业无效的时候已经考虑退学了,最后被现实一个巴掌扇了回来(拿不到大学毕业证书真的太难生存了)。哭着跟父母说我不上了,反正也学不会,最后想着能学一点是一点,硬着头皮去看书敲代码,边哭边敲,居然也熬过去了。当然在这期间少不了很多人的帮助,想想之间钻牛角尖走不出来的日子只觉得可笑,逃避解决不了任何问题,只能让自己变得越来越差。不要把oo当成洪水猛兽,当成修仙好了(23333),刚刚踏入仙途,还没筑基,会面对很多困难。修仙路上是有天才,资质较好,年少便已名扬四海,像我这种呢,就是个外门小弟子,能力不强,心魔还挺重,但是为着未来或许有的一点希望,还是要努力地去拼搏啊。
  2. 认真对待每一次作业,要有清晰的思路分析,而不是像我一开始一样东一榔头西一棒子。鲁迅说过,只有经过设计的程序才是好程序。(鲁迅:我没说过)为什么一直浪费时间却做不出来,很大一部分源于没有认真设计该如何构造,才导致后期越来越模糊越来越不知道怎么写。
  3. Bug一定要改,虽然我嘴上说着“除了crash问题其他bug我绝对不改了”,但是身体还是很诚实地去改bug了为什么啊!因为后面的程序是在这个程度上叠加的,如果现在的bug不改,之后可能会出现大问题。
  4. 互帮互助、团结协作。这是oo让我意识到的非常重要的一点。没有人是一座孤岛,一个人的bug可能是一群人的bug,同样,一个人的数据也可以是一群人的数据。这门课不是养蛊,一个个斗个头破血流你死我活才算胜利。诚然,互测中有恶意扣分的现象,也绝对无法达到乌托邦的理想世界,但是我还是想说,这门课重要的不是你给别人扣多少,而是你能不被别人扣多少。
  5. 锻炼身体,好好修仙。熬夜到喝速效救心丸的经历我不想有第二次。

言尽于此,兴致阑珊,还是那句话,愿天堂没有oo。

原文地址:https://www.cnblogs.com/lemonj1998/p/8710972.html

时间: 2024-08-30 12:22:26

oo修仙之路的相关文章

程序猿修仙之路--数据结构之设计高性能访客记录系统

菜菜呀,最近我有个想法呀! (心想:又尼玛有折磨人的想法了.) X总,您说~ 我想给咱们的用户做个个人空间,目前先有访客记录就可以,最近访问的人显示在最上边,由于用户量有十几亿,可能对性能要求比较高,三天后上线,你做一下吧! (心想:一万头羊驼飘过!!)  但是X总,个人空间访问量比较大,需要设计,测试等环节,三天不够呀!~ 这个关系到公司的生死存亡,你加加班就行了``` (心想:一亿头羊驼!!) 好吧,X总,我尽最大努力! 苦笑中....~ 需求要点 每个用户都有自己的个人空间,当有其他用户来

程序员修仙之路- CXO让我做一个计算器!!

菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除运算就行,很简单 CEO,CTO,CFO于一身的CXO (尼玛)那能不能给我涨点工资呀? 菜菜 公司现在很困难,你这个计算器关系到公司的存亡,你要注意呀!! CEO,CTO,CFO于一身的CXO (关于撇开话题佩服的五体投地)好吧X总,我尽快做 菜菜 给你一天时间,我这里着急要用 CEO,CTO,C

数据库修仙之路

二:select Scott用户的四张表 主表:dept部门表 薪资分级表:salgrade工资等级表 从表:emp雇员信息表 命令不区分大小写 一:查询列(字段) 1.检索单个列 Select ename from emp; --查询员工信息 检索多个列 select deptno,dname from dept; --查询部门表的deptno,dname字段 2.检索所有列 select *from dept; --查询部门的所有信息 3.去除重复 使用distinct去重,确保查询结果的唯

程序员修仙之路--优雅快速的统计千万级别uv

菜菜,咱们网站现在有多少PV和UV了? Y总,咱们没有统计pv和uv的系统,预估大约有一千万uv吧 写一个统计uv和pv的系统吧 网上有现成的,直接接入一个不行吗? 别人的不太放心,毕竟自己写的,自己拥有主动权.给你两天时间,系统性能不要太差呀 好吧~~~ 定义PV是page view的缩写,即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.网页浏览数是评价网站流量最常用的指标之一,简称为PV UV是unique visitor的简写,是指通过互联网访问.浏览这个网页的自

Java架构师“修仙”之路:推荐几本适用于所有Java程序员阅读书籍,希望你有一天成为架构狮

1.<深入理解Java虚拟机:JVM高级特性与最佳实践>本书适合所有Java程序员.系统调优师和系统架构师阅读. 共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理. 第一部分从宏观的角度介绍了整个Java技术体系.Java和JVM的发展历程.模块化,以及JDK的编译,这对理解本书后面内容有重要帮助. 第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因:常见的垃圾收集

漫谈架构师之路的修仙之法

从小有一个武侠梦,长大从事了IT,空闲时间看了很多修仙小说.就萌生了一个想法:把IT之路和修仙之路联系到一起. 于是参照<凡人修仙传>的各个修仙阶段,对比IT之路进行了对照,才有了这篇文章.无图无真相. 大图太大,不易看清楚,下面分阶段展示一下: 1.初入书院 说明: 1.1 入门 人的精力有限,总的选择一门语言入门 1.2 练气 熟悉计算机,网络的流程 1.3 深入学习一门语言 2.开启修仙之旅 2.1 结丹 SSM常用框架要熟练使用 2.2  元婴 spring boot /spring

积家姊妹心中唔由得一紧,呢啲修仙者个个都要过马骝

两女诧异嘅忘向乸蛇蝎,娘点可以讲救命恩人系杀千刀嘅?但两女连随就明白过嚟,心中暗叫娘亲大晒,呢种话系一种探盘,可以好易试探出啲嘢同恩人之间嘅关系.林兄闻言非但唔恼,面上重露出一丝喜色,佢哋沿住子云山以窍穴之中嘅真气催动嗰一条米粒光珠嘅示一路追到呢座山下,可惜,剑首子云山窍穴真气嘅力量,唯有撑光珠飞到呢度,尚未落山.,净系珠就已经迸碎,佢哋剩上山稳人.老实讲,即便系林兄都已经开始有啲绝望喇. http://bbs.elecfans.com/user/3348267/ 抢走晒我哋仅有嘅几粒十草丹,仲

不过呢都唔怪佢哋,呢三个门派系修仙世界之中真正嘅巨

玄天北上最强大几个门派,同世俗之中理解嘅喺玄天大陆之中占领地头最大嘅门派唔系重合.比如百象帝国嘅唐门应该唔算系相当强大,身家丰厚门人弟子遍布成百象帝国,甚至触角标到其他国家之中.比如妙法门号称控制男人嚟统治世界. http://www.dianyuan.com/people/781947佢哋系呢片北上,成个人族中最有话语权嘅修仙者.佢哋嘅存在就系权威,凌驾与一切门派之上.佢哋喺呢片北上冇自己嘅城池,佢哋甚至唔居住喺玄天北上,佢哋居住喺行火毒仙宫中嘅秘境宝典般嘅世界中,喺度佢哋拥有自己嘅世界,繁衍

程序员修神之路--做好分库分表其实很难之一(继续送书)

菜哥,领导让我开发新系统了 这么说领导对你还是挺信任的呀~ 必须的,为了设计好这个新系统,数据库设计我花了好多心思呢 做一个系统我觉得不应该从数据库入手,应该从设计业务模型开始,先不说这个,说说你的数据库设计的优势 为了高性能我首先设计了分库 分表策略,为以后打下基础 那你的数据量将来会很大吗?分库分表其实涉及到很多难题,你了解过吗? 我觉得分库分表很容易呀 是吗? 是否需要分 说到数据库分库分表,不能一味的追求,我们要明白为什么要进行分库分表才是最终目的.现在网上一些人鼓吹分库分表如何应对了多