架构
控制
数据
迭代日志
第二次
添加Main
,Adventurer
,Bottle
,Equipment
。
每个Adventurer
使用HashMap
维护所有Bottle
和Equipment
。
第三次
添加Food
。
每个Adventurer
添加各种物品的背包。Bottle
背包使用HashMap
套TreeSet
,Equipment
使用HashSet
,Food
使用HashMap
套TreeSet
。
第四次
添加Log
,控制流添加OperationProcessor
和Manager
。共启用两个Manager1
、Manager2
,每10个操作打成一包交给一个Manager
处理。
Manager
维护全局所有Adventurers
和Logs
。
第六次
添加RegularBottle
,ReinforcedBottle
,RecoverBottle
,RegularEquipment
,CritEquipment
,EpicEquipment
。启用Manager3
管理新的操作。
添加价值属性,并使用继承的方式维护各种子类。
第七次
添加Store
。采用工厂模式管理。
junit
管理方法时需要做好参数处理,控制流需要做好封装,便于测试程序的编写。
课程心得
学习完面向对象程序设计先导课程后,我的代码思维方面收获很大。面向对象程序设计的思想是一种更自然的,更贴近现实的思维方式。与以前一直写的面向过程相比,更直观、易理解、易维护。在面向过程编程中,一直强调的是解决问题的具体步骤和过程,而面向对象编程则是把关注点放在了"对象"上,每一个对象都有其特定的属性和行为。这样就使得代码更加模块化,可重用性更高,同时结合git的使用,也更容易进行多人协作开发。面向对象的两个重要概念是继承和多态,这就涉及到后几节课讲的继承和接口。这些特性可以在已有类的基础上建新类,从而减少代码重复,提高效率,还可以抽象共同动作,第一次见感觉很妙。多态可以让我们的不同的子类实现同一个方法,外部在调用不用考虑类型只用注意方法,这更加灵活,减少了复制和粘贴。总而言之oopre的课程打开了一扇新的大门,面向对象相对于面向过程是更形象更可拓展的思维,让我受益匪浅。
一些意见
- 第六次迭代的设计不够合理,体验不好。课程介绍了接口,还希望设计价值体作为瓶子和武器等的父类,但是一方面这里用接口并不会简化多少代码,另一方面这些改动代码量很大,很多同学考虑到代码量以及这已经是最后两次迭代,都不会考虑这么做。此外雇佣关系dfs的计算也很不合理,这样的计算方式不合实际,显然是为了考察而这么设计,太过刻意。