在学习软件构造课程之后,我对于编程的理解发生了很大改变。现在已经进入了紧张的期末复习阶段,以下是我复习过程中产生的一些想法:
1.Java语言的学习和使用
我对java语言在我学习这门课之前还是比较生疏的,自从开始学习这门课后,自己也是自学了一些java语言,虽然学的很浅显,但我已经初步感受到了它的魅力,尤其是类这种组织方式,能够让程序更有模块化,所做的工作清晰明了,就算以后这门课结束了,我还会继续学习java,深化自己对它的理解,让自己能够更好的使用它。
2.编写软件的基本过程
首先在宏观上软件的生命周期基本可以划分为:需求收集和分析,可行性分析,系统分析,软件架构设计,编写代码,测试代码,整合代码,打包交付,运行和维护。但在具体实现过程又有不同的方式,比如传统的瀑布模型和现在比较流行的敏捷开发。
对于瀑布模型,其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。并基本严格按照上述的软件生命周期来自上而下的分工,具有相互衔接的固定次序,如同瀑布流水一样逐级下落。
而敏捷开发以用户的需求为核心,采用迭代、循序渐进的方法进行开发。
3.ADT和OOP
这一部分的内容是本门课程的重点,对我也很有启发。
抽象数据类型(ADT)由一种数据模型和在该数据模型上的一组操作组成。抽象数据类型包括定义和实现两个方面,其中定义是独立于实现的。抽象数据类型的定义仅取决于它的逻辑特性,而与其在计算机内部的实现无关,即无论它的内部结构如何变化,只要它的逻辑特性不变,都不会影响到它的使用。其内部的变化只是可能会对外部在使用它解决问题时的效率上产生影响,因此我们的一个重要任务就是如何简单、高效地实现抽象数据类型。
面向对象程序设计(OOP)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
面向对象有三大特性:封装、继承、多态。封装,隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。继承,提高代码复用性;继承是多态的前提。多态,父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
目前进度只到了OOP,还要继续努力复习!