三次实验的感想
1:本次实验让我第一次使用Java编写了一些较为复杂的程序,学习到了很多有关的方法及思想,让我对Java的使用更加熟悉,也更了解了软件的编写,重构,多个版本的迭代等具体过程。并且在做下次实验之前要更熟悉Java的操作,提前构思实验的内容和结构。
2:面向ADT的编程结构规范严谨,逻辑性强,复用性强。对于软件的分工和维护来说是很有必要实现的功能。在建立具体应用场景到ADT的“抽象映射”时需要仔细考虑可能遇到的问题,设计出完整的结构去解决问题。
3:本次实验我体会到了首先要合理安排时间,并且应该与同学多讨论交流。
并且体会到了委托,继承的方法复用函数是,修改过程中会减少很多工作量,工作量是逐渐减少的。
1.重新思考Lab2中的问题:面向ADT的编程和直接面向应用场景编程,你体会到二者有何差异?本实验设计的ADT在五个不同的应用场景下使用,你是否体会到复用的好处?
面向ADT更侧重于如何实现方法,而面向应用场景更倾向于实现什么样的方法。复用能降低工作量,有利于团队协作与开发。
2.重新思考Lab2中的问题:为ADT撰写复杂的specification, invariants, RI, AF,时刻注意ADT是否有rep exposure,这些工作的意义是什么?你是否愿意在以后的编程中坚持这么做?
这些都是为了大型程序设计中开发的高效与安全。愿意。
3.之前你将别人提供的API用于自己的程序开发中,本次实验你尝试着开发给别人使用的API,是否能够体会到其中的难处和乐趣?
自己编写API可以更加灵活地实现功能,但对应的要充分考虑后续使用的情况再设计,否则修改API是很大的工作量。
4.你之前在使用其他软件时,应该体会过输入各种命令向系统发出指令。本次实验你开发了一个解析器,使用语法和正则表达式去解析输入文件并据此构造对象。你对语法驱动编程有何感受?
语法驱动的编程依赖于语句的信息提取,提取到我们需要的信息才能对其处理。
5.Lab1和Lab2的工作都不是从0开始,而是基于他人给出的设计方案和初始代码。本次实验是你完全从0开始进行ADT的设计并用OOP实现,经过三周之后,你感觉“设计ADT”的难度主要体现在哪些地方?你是如何克服的?
难度是工作量略大并且没有设计思路。
6.“抽象”是计算机科学的核心概念之一,也是ADT和OOP的精髓所在。本实验的三个应用既不能完全抽象为同一个ADT,也不是完全个性化,如何利用“接口、抽象类、类”三层体系以及接口的组合、类的继承、委派、设计模式等技术完成最大程度的抽象和复用,你有什么经验教训?
在编写时要优先设计、规划各文件之间的关系。