课程作业程序

编写课程作业程序

课程作业程序

编写程序:面向对象还是结构化?

在编写课程作业程序时,我们经常需要建议客户,程序应该用面向对象还是结构化的方式编写。当然,这种情况下最重要的是,在订购程序所对应的课程里,您被教授的是怎样的编程方式……
因此,真正应该告诉我们要为您编写的课程作业程序该怎样编写的,是您自己。由于这一点非常重要,我们建议您务必确认,因为在这一点上作出错误的决定,可能导致这门课不及格。
不过,如果老师在这一点上给学生留有自由,那么坦率地说,答案可以归结为一个词:面向对象。但我们先从定义说起:
结构化编程是过程式编程概念的延伸,是一种编写程序的方法论,它基于将代码按层次划分为若干模块,模块之间通过严格定义的接口相互通信。数据、过程和函数之间没有直接联系,指令按顺序执行。结构化编程的基础是条件语句和循环,而各种跳转则被视为不良习惯,是线性编程的遗留物,被(理所当然地)认为会破坏源代码的可读性,增加分析难度。
面向对象编程则是一种编写计算机程序的方法论,它用对象来定义程序,这些对象把程序的数据和行为(定义为过程和函数,在面向对象编程中称为方法)结合在一起。程序被表达为这些对象之和,对象之间相互通信,以完成程序被赋予的任务。这使得程序员团队可以高效地编写大型项目,用负责软件各个部分、相互协作的对象来组装它们。
客观的定义就说到这里,现在轮到(无疑完全不客观的)观点了。在我看来,尽管面向对象编程带有一定的规范和限制,常常让编程艺术的年轻爱好者望而却步,但花一点时间了解面向对象编程的原则,会带来不可否认的好处。

编写课程作业程序

有什么好处?好处很多,可以列很长的清单,但我只提我认为最重要的几点。第一,每一个写得好的面向对象程序,以后都可以重复使用,只需把其中定义的类移到另一个应用中。第二,更容易定位错误,也更容易理解自己一段时间前写的程序。第三,修改代码要容易得多。而在结构化编程中,哪怕只修复或更改一小段软件,往往也要编辑源代码的许多片段,而且先要花大量时间弄清楚当初为什么这样写而不是那样写。(相信我,即使是自己写的程序,过几个月也会觉得完全陌生,过几年更是如此,而且往往看不懂。)
面向对象的数据处理方式,以及整个程序员团队以面向对象方式编写程序所带来的可能性,似乎极其重要。在现实中,这些人往往彼此都不认识,却能共同构建庞大的应用,他们之间的沟通仅靠类的方法接口的说明,完全不需要查看内部。面向对象编程的另一个优点是代码清晰易读:看一眼定义文件就够了,一会儿我们就知道某个类或方法负责什么。
结构化编程的情况则大不相同。首先,在较大的应用中,极难做到代码可读。其次,代码一旦写成就不适合复用,因为要把它改成适应其他用途,通常需要在许多不同的地方做大量修改。因此,用结构化方式写成的程序不太可能被重复使用,程序员通常从头写一个新类所需的时间,比无休止地折腾旧代码还要少。
尽管这些事实显而易见,我们的高校教授的仍然多是结构化编程,而学生们被要求提交的,也是以这种方式编写的课程作业程序。当然,这不适用于计算机专业的课程,那里面向对象编程已是标准,但在与计算机没有直接关系的课程中,它仍然很少见。
在结束这篇文章之际,我希望我写下的这几句话能说服您去学习面向对象编程。我并不奢望已穷尽这个话题:我只触及了其中的一些问题,只描述了面向对象编程优点的一小部分。还有更多优点,您会在处理具体任务时发现(尤其是需要团队协作的时候)。

关于编写计算机程序的其他资料