实验过程中收获的经验、教训、感想

    1. 实验过程中收获的经验和教训(必答)

答:在实验中最大的收获为对代码的全局规划。在实现某类的同时必须兼顾该类与其他代码的兼容性。同时要考虑代码的可扩展性和易于修改的特点。最大的教训在于一定要提前完成测试,尽快让代码暴露出bug,减少之后开发的隐患。

    1. 针对以下方面的感受(必答)
  1. 重新思考Lab2中的问题:面向ADT的编程和直接面向应用场景编程,你体会到二者有何差异?本实验设计的ADT在三个不同的应用场景下使用,你是否体会到复用的好处?

答:面向应用场景的编程需要自己构建ADT框架,构建各个ADT之间的联系,这是直接面向ADT编程的最大的不同。

在三个不同的应用场景下编程,我深刻的体会到了代码复用的好处。如果没有代码复用,程序员将会增加许多毫无意义的工作。

  1. 重新思考Lab2中的问题:为ADT撰写复杂的specification, invariants, RI, AF,时刻注意ADT是否有rep exposure,这些工作的意义是什么?你是否愿意在以后的编程中坚持这么做?

答:这些工作的意义在于维护代码的安全运行。防止用户在不经意间九修改了代码的内容。我在以后的工作中也愿意坚持那么做。

  1. 之前你将别人提供的ADT/API用于自己的程序开发中,本次实验你尝试着开发给别人使用的ADT/API,是否能够体会到其中的难处和乐趣?

答:开发给别人的ADT需要考虑各种不同的情况,需要尽可能的符合用户的需求,使抽象的程序语言变为具象的自然语言,这是ADT的作用。也是编写ADT的难处,但是完成一个ADT框架的实现是充满成就感的一件事,这也是其中的乐趣。

  1. 你之前在使用其他软件时,应该体会过输入各种命令向系统发出指令。本次实验你开发了一个简单的解析器,使用语法和正则表达式去解析一个遵循特定规则的字符串并据此构造对象。你对语法驱动编程有何感受?

答:语法驱动的编程对语法本身有着很高的要求,对输入者也有很高的要求,哪怕只是一个符号的错误也会产生糟糕的后果。总所周知,编写程序便是一个使用解析器的过程,在没有IDE的帮助下即便是程序员也很难写出一个程序。但是语法驱动的程序本身具有优点,比如语言的精确性简洁性,在熟练之后将会极大的提升效率。

  1. Lab1和Lab2的工作都不是从0开始,而是基于他人给出的设计方案和初始代码。本次实验中也提供了一部分基础代码。假如本实验要求你完全从0开始进行ADT的设计并用OOP实现,你觉得自己是否能够完全搞定?你认为“设计ADT”的难度主要体现在哪些地方?

答:如果是自己的实现可能回完成的更快,但是整个ADT的框架可能会变得非常的混乱。设计ADT的难点正在与设计它的框架上。

  1. “抽象”是计算机科学的核心概念之一,也是ADT和OOP的精髓所在。本实验的三个应用既不能完全抽象为同一个ADT,也不是完全个性化,如何利用“接口、抽象类、类”三层体系以及接口的组合、类的继承、委派、设计模式等技术完成最大程度的抽象和复用,你有什么经验教训?

答:寻找共性是抽象的关键,而程序语言的抽象性是我们寻找共性并将其抽象化的基础。在编程之前要尽可能的抽象,寻找各个需求间最大的交集,并利用各种设计模式来实现共性的复用。

  1. 关于本实验的工作量、难度、deadline。

答:本实验ddl紧张,工作量较大,难度较大。

  1. 课程结束了,你对《软件构造》课程内容和任课教师的评价如何?

答:软构课程应该增加更多的实验。同时老师应该给出相应的样例测试程序,测试程序的正确性。同时展示样例程序通过测试样例,让同学更好的了解需求。一个好的测试程序能让我们学到很多,而具体的实现则应该给出更多的自由。

该课程整体难度较大,老师对学生的实验指导较少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值