APP下载

过渡或渗透式程序设计教学法

2014-06-18汤谷云王修信

电脑知识与技术 2014年11期
关键词:面向对象模块化函数

汤谷云 王修信

摘要:面向过程模块化的理念是基于复杂程序设计的,面向对象编程也是应用于复杂软件的开发设计与维护,它们的出发点是一致的。基于面向过程模块化后的函数设计的思路,再借助抽象、封装、继承、多态技术的渗透及面向对象语言的支持,形成面向对象可以向面向过程渗透,面向过程也可以向面向对象过渡的教学模式。

关键词:模块化;函数;类;面向对象

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)11-2584-04

Abstract: The idea of the modularity in process-oriented is based on complex programming, object-oriented programming is also used in the development and maintenance of complex software designs, their starting point is the same. by the process-oriented modular design idea based on function, and then by means of technology penetration of abstraction, encapsulation, inheritance, polymorphism and the supports of object-oriented language. Formation the object-oriented form can penetrate to the process-oriented, the process-oriented can also transition to object-oriented teaching pattern.

Key words: modularity;function;class;object-oriented

1 过程式模块理念的建立

C语言做为计算专业高级语言的入门课程,它的面向过程的程序设计方法对学生的影响深刻,在教学过程中充分感受到如果放弃过程式的思路,重新建立对象式的思路,学生在思维方式的转变上的困难。不推翻、不放弃原来的过程式思维,寻求一种在此基础上进行知识递进、技术扩充,从而平稳过渡到对象式编程是一种好的解决方案。

面向过程的程序设计主要是设计函数或过程,顺序、条件、选择三种控制结构的学习比较容易,在学习C语言时,给出一个程序设计问题,比如说求1+2+3+…。+n,在教学过程中每当提到类似问题,学生最初想到的就是设计主方法来完成任务,理由是方便设计、简单久而久之,学生就养成了习惯于只用主函数来完成程序设计任务。和现实生活做类比,就相当于在现实生活中解决问题不会寻求他人的帮助,一切事物都必须亲力亲为,这不但做不好,而且效率不高。可见,必须第一步强化过程式模块设计的理念。

要学好面向对象的编程首先要引导学生养成解决问题时进行分析研究,划分出不同的功能块,寻求擅长解决不同问题的人的帮助,共同完成任务。由此得到,在程序设计过程中也应该如此,把程序分成若干模块,每个模块用来实现一个特定的功能,再重新思考在C语言程序设计中用主函数之外的函数或过程的理由,加强C语言用函数或过程的方式来思考和解决问题,由主函数统一部署不同的函数,函数间也可以互相调用,同一个函数可以被一个或多个函数调用任意多次,利用函数,减少重复编写程序段的工作量等等,这些在学习C语言时所强调的问题的理解。如同在现实生活中所具有的合理分工,团结协作的做事理念和风格。有了这种风格和理念,在面向过程程序设计时应该首先想到寻找他人的帮助,也就是函数过程的设计,而不是主函数的凡事亲力亲为这个模块化理念是基础,就是要学会将原来只有一个主函数的程序转换成主函数对其他函数的调用,设计的关键是设计主函数之外的其他功能函数。

2 函数到类的过渡

面向对象技术的产生主要应用于复杂软件的开发设计,因此首先必须有面向过程模块化的理念,因为这一理念也是基于复杂程序设计的,所以它们的出发点是一致的。面向过程的三种控制结构:顺序、条件、循环,解决了模块化后的函数设计问题。而面向对象具有抽象性、封装性、继承性、多态性的特点,反过来说,就是利用抽象、封装、继承、多态技术加上面向对象语言的支持,设计出面向对象的程序。Java是一种纯的面向对象的程序设计语言,C语言到Java语言的使用来体现过程式到对象式的平滑过渡,也可以说对象式技术向过程式的渗透。

2.1 抽象封装的渗透

面向对象中,以类为基本的程序设计单位,程序由一个或多个类来构成,类的形成的就是由抽象技术产生的,类中有属性、有方法。方法就是在原来C语言的模块化理念的基础上函数,只不过在面向对象中函数(方法)必须要存在于一个类中的,也就是说要为方法找到一个“家”,一个归宿。抽象技术还允许在类中增加属性,封装技术是指类中的属性和方法是不可分割的整体,属性实际上就是用来提供给方法操作的数据。如果一个类中没有属性,方法的初始操作数据可以由自身的参数中来获取,如果类中有属性2.2 多态——重载的渗透

抽象封装的技术的使用,属性的增加,方法的操作数据可以由类中的属性获取。多态的重载是指类中出现方法重名的现象,就是一个类中具有同名的方法,参数不同的情况,由于操作数据来源由一个变成了两个,就可以形成重载的情况,这样可以提高程序的抽象程度和简洁程度。

2.3 继承与多态——覆盖的渗透

当一个类需要另一个类的所有数据和方法时,就可以使用继承,继承体现了两个类之间的一种关系,提高软件的可重用性;当父类的方法在子类中重新获得了定义,方法名,参数、返回值都不变时,子类就覆盖了父类的方法,这也是一种多态,同时子类还可以增加新的功能。

3 封装的另一面

属性和方法有机地结合在一起,使得类中的方法可以对其属性操作,这只是封装特性对内的一面。另一方面是对外的一面,也就是说一个类的对象在和其他他类建立关系时,要做到即可以与外界联系,又能够保护自己的隐私。这主要是通过控制属性的私有性,但提供对外统一的访问属性的方法(set、get)来实现。如果要控制属性只读,或者是可读可写就变得很容易,实现针对不同用户的访问需求,例如下列中属性n为可读可写4 子类的问题的出现

当对父类属性的访问控制为private后,原来定义的ExampleChild就会有问题5 总结

在学习面向对象时应该不推翻、不放弃原来的面向过程,因为面向对象类中的方法实现时还是一个函数或过程的设计。不能将过程式与对象式对立起来,应该理解成在面向过程的基础上又增加了一些新的手段,从而形成了面向对象的技术,这样一来,程序设计的学习是一个逐步递进的过程。可以看出面向对象有了更多的软件设计和实现的手段,以类为单位,各个类可以独立存在,这在软件的可复用性、可维护性方面得到了很大的提升。能够完成面向过程函数到面向对象类的平滑过渡,当系统复杂时,多个类之间按照关联、依赖、继承、实现的关系组织起来,就完全过渡到了面向对象。

实践证明这种渗透式的教学方法对于掌握面向过程编程方式后,迅速掌握面向对象的设计理念和技术,建立面向对象的思维方式起到了非常重要的作用。面向对象可以向面向过程渗透,面向过程也可以向面向对象过渡,使得两者不对立,但可以同一。当然,如果要采用面向对象的方式编程,就应该尽快走过这种过渡期。过渡期之后再解决问题时,还是要直接用面向对象的思维方式,以抽象、封装、继承、多态技术为出发点来进行面向对象的程序设计。

参考文献:

[1] 谭浩强.C程序设计语言[M].北京:清华大学出版社,2009.

[2] 刘慧宁.Java程序设计[M].北京:机械工业出版社,2011.

[3] 耿祥义.Java2实用教程[M].北京:清华大学出版社,2012.endprint

摘要:面向过程模块化的理念是基于复杂程序设计的,面向对象编程也是应用于复杂软件的开发设计与维护,它们的出发点是一致的。基于面向过程模块化后的函数设计的思路,再借助抽象、封装、继承、多态技术的渗透及面向对象语言的支持,形成面向对象可以向面向过程渗透,面向过程也可以向面向对象过渡的教学模式。

关键词:模块化;函数;类;面向对象

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)11-2584-04

Abstract: The idea of the modularity in process-oriented is based on complex programming, object-oriented programming is also used in the development and maintenance of complex software designs, their starting point is the same. by the process-oriented modular design idea based on function, and then by means of technology penetration of abstraction, encapsulation, inheritance, polymorphism and the supports of object-oriented language. Formation the object-oriented form can penetrate to the process-oriented, the process-oriented can also transition to object-oriented teaching pattern.

Key words: modularity;function;class;object-oriented

1 过程式模块理念的建立

C语言做为计算专业高级语言的入门课程,它的面向过程的程序设计方法对学生的影响深刻,在教学过程中充分感受到如果放弃过程式的思路,重新建立对象式的思路,学生在思维方式的转变上的困难。不推翻、不放弃原来的过程式思维,寻求一种在此基础上进行知识递进、技术扩充,从而平稳过渡到对象式编程是一种好的解决方案。

面向过程的程序设计主要是设计函数或过程,顺序、条件、选择三种控制结构的学习比较容易,在学习C语言时,给出一个程序设计问题,比如说求1+2+3+…。+n,在教学过程中每当提到类似问题,学生最初想到的就是设计主方法来完成任务,理由是方便设计、简单久而久之,学生就养成了习惯于只用主函数来完成程序设计任务。和现实生活做类比,就相当于在现实生活中解决问题不会寻求他人的帮助,一切事物都必须亲力亲为,这不但做不好,而且效率不高。可见,必须第一步强化过程式模块设计的理念。

要学好面向对象的编程首先要引导学生养成解决问题时进行分析研究,划分出不同的功能块,寻求擅长解决不同问题的人的帮助,共同完成任务。由此得到,在程序设计过程中也应该如此,把程序分成若干模块,每个模块用来实现一个特定的功能,再重新思考在C语言程序设计中用主函数之外的函数或过程的理由,加强C语言用函数或过程的方式来思考和解决问题,由主函数统一部署不同的函数,函数间也可以互相调用,同一个函数可以被一个或多个函数调用任意多次,利用函数,减少重复编写程序段的工作量等等,这些在学习C语言时所强调的问题的理解。如同在现实生活中所具有的合理分工,团结协作的做事理念和风格。有了这种风格和理念,在面向过程程序设计时应该首先想到寻找他人的帮助,也就是函数过程的设计,而不是主函数的凡事亲力亲为这个模块化理念是基础,就是要学会将原来只有一个主函数的程序转换成主函数对其他函数的调用,设计的关键是设计主函数之外的其他功能函数。

2 函数到类的过渡

面向对象技术的产生主要应用于复杂软件的开发设计,因此首先必须有面向过程模块化的理念,因为这一理念也是基于复杂程序设计的,所以它们的出发点是一致的。面向过程的三种控制结构:顺序、条件、循环,解决了模块化后的函数设计问题。而面向对象具有抽象性、封装性、继承性、多态性的特点,反过来说,就是利用抽象、封装、继承、多态技术加上面向对象语言的支持,设计出面向对象的程序。Java是一种纯的面向对象的程序设计语言,C语言到Java语言的使用来体现过程式到对象式的平滑过渡,也可以说对象式技术向过程式的渗透。

2.1 抽象封装的渗透

面向对象中,以类为基本的程序设计单位,程序由一个或多个类来构成,类的形成的就是由抽象技术产生的,类中有属性、有方法。方法就是在原来C语言的模块化理念的基础上函数,只不过在面向对象中函数(方法)必须要存在于一个类中的,也就是说要为方法找到一个“家”,一个归宿。抽象技术还允许在类中增加属性,封装技术是指类中的属性和方法是不可分割的整体,属性实际上就是用来提供给方法操作的数据。如果一个类中没有属性,方法的初始操作数据可以由自身的参数中来获取,如果类中有属性2.2 多态——重载的渗透

抽象封装的技术的使用,属性的增加,方法的操作数据可以由类中的属性获取。多态的重载是指类中出现方法重名的现象,就是一个类中具有同名的方法,参数不同的情况,由于操作数据来源由一个变成了两个,就可以形成重载的情况,这样可以提高程序的抽象程度和简洁程度。

2.3 继承与多态——覆盖的渗透

当一个类需要另一个类的所有数据和方法时,就可以使用继承,继承体现了两个类之间的一种关系,提高软件的可重用性;当父类的方法在子类中重新获得了定义,方法名,参数、返回值都不变时,子类就覆盖了父类的方法,这也是一种多态,同时子类还可以增加新的功能。

3 封装的另一面

属性和方法有机地结合在一起,使得类中的方法可以对其属性操作,这只是封装特性对内的一面。另一方面是对外的一面,也就是说一个类的对象在和其他他类建立关系时,要做到即可以与外界联系,又能够保护自己的隐私。这主要是通过控制属性的私有性,但提供对外统一的访问属性的方法(set、get)来实现。如果要控制属性只读,或者是可读可写就变得很容易,实现针对不同用户的访问需求,例如下列中属性n为可读可写4 子类的问题的出现

当对父类属性的访问控制为private后,原来定义的ExampleChild就会有问题5 总结

在学习面向对象时应该不推翻、不放弃原来的面向过程,因为面向对象类中的方法实现时还是一个函数或过程的设计。不能将过程式与对象式对立起来,应该理解成在面向过程的基础上又增加了一些新的手段,从而形成了面向对象的技术,这样一来,程序设计的学习是一个逐步递进的过程。可以看出面向对象有了更多的软件设计和实现的手段,以类为单位,各个类可以独立存在,这在软件的可复用性、可维护性方面得到了很大的提升。能够完成面向过程函数到面向对象类的平滑过渡,当系统复杂时,多个类之间按照关联、依赖、继承、实现的关系组织起来,就完全过渡到了面向对象。

实践证明这种渗透式的教学方法对于掌握面向过程编程方式后,迅速掌握面向对象的设计理念和技术,建立面向对象的思维方式起到了非常重要的作用。面向对象可以向面向过程渗透,面向过程也可以向面向对象过渡,使得两者不对立,但可以同一。当然,如果要采用面向对象的方式编程,就应该尽快走过这种过渡期。过渡期之后再解决问题时,还是要直接用面向对象的思维方式,以抽象、封装、继承、多态技术为出发点来进行面向对象的程序设计。

参考文献:

[1] 谭浩强.C程序设计语言[M].北京:清华大学出版社,2009.

[2] 刘慧宁.Java程序设计[M].北京:机械工业出版社,2011.

[3] 耿祥义.Java2实用教程[M].北京:清华大学出版社,2012.endprint

摘要:面向过程模块化的理念是基于复杂程序设计的,面向对象编程也是应用于复杂软件的开发设计与维护,它们的出发点是一致的。基于面向过程模块化后的函数设计的思路,再借助抽象、封装、继承、多态技术的渗透及面向对象语言的支持,形成面向对象可以向面向过程渗透,面向过程也可以向面向对象过渡的教学模式。

关键词:模块化;函数;类;面向对象

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)11-2584-04

Abstract: The idea of the modularity in process-oriented is based on complex programming, object-oriented programming is also used in the development and maintenance of complex software designs, their starting point is the same. by the process-oriented modular design idea based on function, and then by means of technology penetration of abstraction, encapsulation, inheritance, polymorphism and the supports of object-oriented language. Formation the object-oriented form can penetrate to the process-oriented, the process-oriented can also transition to object-oriented teaching pattern.

Key words: modularity;function;class;object-oriented

1 过程式模块理念的建立

C语言做为计算专业高级语言的入门课程,它的面向过程的程序设计方法对学生的影响深刻,在教学过程中充分感受到如果放弃过程式的思路,重新建立对象式的思路,学生在思维方式的转变上的困难。不推翻、不放弃原来的过程式思维,寻求一种在此基础上进行知识递进、技术扩充,从而平稳过渡到对象式编程是一种好的解决方案。

面向过程的程序设计主要是设计函数或过程,顺序、条件、选择三种控制结构的学习比较容易,在学习C语言时,给出一个程序设计问题,比如说求1+2+3+…。+n,在教学过程中每当提到类似问题,学生最初想到的就是设计主方法来完成任务,理由是方便设计、简单久而久之,学生就养成了习惯于只用主函数来完成程序设计任务。和现实生活做类比,就相当于在现实生活中解决问题不会寻求他人的帮助,一切事物都必须亲力亲为,这不但做不好,而且效率不高。可见,必须第一步强化过程式模块设计的理念。

要学好面向对象的编程首先要引导学生养成解决问题时进行分析研究,划分出不同的功能块,寻求擅长解决不同问题的人的帮助,共同完成任务。由此得到,在程序设计过程中也应该如此,把程序分成若干模块,每个模块用来实现一个特定的功能,再重新思考在C语言程序设计中用主函数之外的函数或过程的理由,加强C语言用函数或过程的方式来思考和解决问题,由主函数统一部署不同的函数,函数间也可以互相调用,同一个函数可以被一个或多个函数调用任意多次,利用函数,减少重复编写程序段的工作量等等,这些在学习C语言时所强调的问题的理解。如同在现实生活中所具有的合理分工,团结协作的做事理念和风格。有了这种风格和理念,在面向过程程序设计时应该首先想到寻找他人的帮助,也就是函数过程的设计,而不是主函数的凡事亲力亲为这个模块化理念是基础,就是要学会将原来只有一个主函数的程序转换成主函数对其他函数的调用,设计的关键是设计主函数之外的其他功能函数。

2 函数到类的过渡

面向对象技术的产生主要应用于复杂软件的开发设计,因此首先必须有面向过程模块化的理念,因为这一理念也是基于复杂程序设计的,所以它们的出发点是一致的。面向过程的三种控制结构:顺序、条件、循环,解决了模块化后的函数设计问题。而面向对象具有抽象性、封装性、继承性、多态性的特点,反过来说,就是利用抽象、封装、继承、多态技术加上面向对象语言的支持,设计出面向对象的程序。Java是一种纯的面向对象的程序设计语言,C语言到Java语言的使用来体现过程式到对象式的平滑过渡,也可以说对象式技术向过程式的渗透。

2.1 抽象封装的渗透

面向对象中,以类为基本的程序设计单位,程序由一个或多个类来构成,类的形成的就是由抽象技术产生的,类中有属性、有方法。方法就是在原来C语言的模块化理念的基础上函数,只不过在面向对象中函数(方法)必须要存在于一个类中的,也就是说要为方法找到一个“家”,一个归宿。抽象技术还允许在类中增加属性,封装技术是指类中的属性和方法是不可分割的整体,属性实际上就是用来提供给方法操作的数据。如果一个类中没有属性,方法的初始操作数据可以由自身的参数中来获取,如果类中有属性2.2 多态——重载的渗透

抽象封装的技术的使用,属性的增加,方法的操作数据可以由类中的属性获取。多态的重载是指类中出现方法重名的现象,就是一个类中具有同名的方法,参数不同的情况,由于操作数据来源由一个变成了两个,就可以形成重载的情况,这样可以提高程序的抽象程度和简洁程度。

2.3 继承与多态——覆盖的渗透

当一个类需要另一个类的所有数据和方法时,就可以使用继承,继承体现了两个类之间的一种关系,提高软件的可重用性;当父类的方法在子类中重新获得了定义,方法名,参数、返回值都不变时,子类就覆盖了父类的方法,这也是一种多态,同时子类还可以增加新的功能。

3 封装的另一面

属性和方法有机地结合在一起,使得类中的方法可以对其属性操作,这只是封装特性对内的一面。另一方面是对外的一面,也就是说一个类的对象在和其他他类建立关系时,要做到即可以与外界联系,又能够保护自己的隐私。这主要是通过控制属性的私有性,但提供对外统一的访问属性的方法(set、get)来实现。如果要控制属性只读,或者是可读可写就变得很容易,实现针对不同用户的访问需求,例如下列中属性n为可读可写4 子类的问题的出现

当对父类属性的访问控制为private后,原来定义的ExampleChild就会有问题5 总结

在学习面向对象时应该不推翻、不放弃原来的面向过程,因为面向对象类中的方法实现时还是一个函数或过程的设计。不能将过程式与对象式对立起来,应该理解成在面向过程的基础上又增加了一些新的手段,从而形成了面向对象的技术,这样一来,程序设计的学习是一个逐步递进的过程。可以看出面向对象有了更多的软件设计和实现的手段,以类为单位,各个类可以独立存在,这在软件的可复用性、可维护性方面得到了很大的提升。能够完成面向过程函数到面向对象类的平滑过渡,当系统复杂时,多个类之间按照关联、依赖、继承、实现的关系组织起来,就完全过渡到了面向对象。

实践证明这种渗透式的教学方法对于掌握面向过程编程方式后,迅速掌握面向对象的设计理念和技术,建立面向对象的思维方式起到了非常重要的作用。面向对象可以向面向过程渗透,面向过程也可以向面向对象过渡,使得两者不对立,但可以同一。当然,如果要采用面向对象的方式编程,就应该尽快走过这种过渡期。过渡期之后再解决问题时,还是要直接用面向对象的思维方式,以抽象、封装、继承、多态技术为出发点来进行面向对象的程序设计。

参考文献:

[1] 谭浩强.C程序设计语言[M].北京:清华大学出版社,2009.

[2] 刘慧宁.Java程序设计[M].北京:机械工业出版社,2011.

[3] 耿祥义.Java2实用教程[M].北京:清华大学出版社,2012.endprint

猜你喜欢

面向对象模块化函数
模块化自主水下机器人开发与应用
二次函数
二次函数
函数备考精讲
模块化住宅
面向对象的计算机网络设计软件系统的开发
面向对象的数据交换协议研究与应用
ACP100模块化小型堆研发进展
模块化VS大型工厂
面向对象Web开发编程语言的的评估方法