我觉得面向ADT编程可以在编程时将实现不同功能的部分独立开来,最后再实现不同部分的整合,最深刻的体会就是寻找错误以及修改时非常容易定位,并且设计出的程序也有更广泛的适用性。同时使用泛型可以设计多种不同的实现形式,更加灵活。
在给出ADT的规约后就开始编写测试用例,确保测试用例是“黑盒”测试,与程序实现分离,保证测试完全针对规约,容易发现编程“死角”。有时完全根据规约还不能很好地设计出用例。
P1设计的ADT在多个应用场景下使用能适用性更广泛、复用性强,减少工作量 。
对于P3要求从0开始设计ADT并使用它们完成一个具体应用,要求我已适应从具体应用场景到ADT的“抽象映射”?相比起P1给出了ADT非常明确的rep和方法、ADT之间的逻辑关系,P3要求你自主设计让我很不适应,因为这是自己第一次设计,刚开始写时对于不同ADT之间的逻辑并没有很好地分析就开始上手,导致很多无用功,感觉还需要多加锻炼。