oopre课程总结

本文描述了作者在编程项目中逐步优化设计架构的过程,包括AdventurerManager类的职责划分、采用单例模式的Shop、统一接口Commodity以及面向对象的继承和多态应用。同时提及了JUnit测试的心得体会和对面向对象优势的理解,最后提出在课程中加入Git教学的建议。
摘要由CSDN通过智能技术生成

架构:

  • 最终设计架构:

15ef532d0a7440dcb8e8db86253542e5.png

最终的设计架构中,我没有将输入作为单独类来处理,而是main为接受输入和调用AdventurerManager(传入参数:输入,实现指令);

AdventurerManager为管理所有冒险者的类,其中来处理23种操作;

Shop采取单例模式,无法外界实例化,这样保证了工程中shop的单一属性(冒险者唯一交易来源);

Adventurer、Food、Bottle、Equipment,由于有统一函数getPrice(),建立了统一接口Commodity;

而对于Bottle、Equipment,他们有继承的子类,来实现子类的特别方法(父类相应方法重写);

对于雇佣关系,我在Adventurer类中实现,由于冒险者类既可以当雇佣者、也可以被雇佣,所以我在冒险者类中建立了雇佣和被雇佣两种相应方法,这也表明了Adventurer的性质(可雇佣、被雇佣).

 

  • 迭代过程中的调整:

在第二次作业中,由于操作少,我将处理操作和处理输入均放在main中。而在后来作业中操作的愈加复杂,我只好将处理指令均在AdventurerManager实现,main只接收输入,调用该类.

在第四次作业中,增加了战斗模式,输入模式的改变,导致我输入也须调整。

在第七次作业中,我在想是否需要模仿指导书中相应观察者的接口,在深思熟虑后,我认为冒险者含有两种性质(雇佣与被雇佣),但是性质并不稳定,所以不能模仿指导书.而且在之前的喝药水瓶体力计算中,我直接将bottle的容量属性改变来便于计算,而为了处理shop中容量需稳定的性质,我只好增加bottle相关属性来保存capacity.

以下为我最终架构的类中的属性:6fa3039873b945d6826189290f556851.png

 

junit心得体会:

在第一次接触junit测试,我是很懵的,觉得没什么用,我也只在测试中覆盖基本情况,而并没有覆盖的广.而在后来,我写完src代码后,在test中编写一些可能的样例情况,既帮助检验了刚写的src中的代码正确性,也不用在main运行时输入测试样例,而是在test各个模块可以分别检验相应功能。

学习体会:

在接触面向对象先导之前,我是不明白面向对象的含义,而在9周的学习后,我认识到这个课程是学习面向对象开发编程,体会到这种编程的作用强大。此类编程对象封装,减少耦合,复用性强访问权限也可以按需求来设计;而且类与类的关系,如继承,在子类中实现了细节,可读性强,使用时清晰;在学习中深深感受到了面向对象的优势,也在近1000行代码中感受到能力的进步。

建议:

对于oopre课程,建议在课堂中增加一些git的讲述,而不是自学。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值