抽象编程,指通过抽象的方法来减少编程工作量或有效地减轻编程难度。
分类
抽象编程( Abstract Programming ) 抽象分为行为抽象和
数据抽象两种。
行为抽象
通俗地说便是将一个行为序列归并 (抽象)为一个行为的过程。
例如:
数据抽象
通俗地说,就是将事物归类,或者说,将事物看成是一定型号、规格的数据,然后将性质接近的数据归纳(抽象)为一类。
例如:将圆、三角形、长方形归为形状类。
数据结构一系列性质相同的数据, 组织成一定的
逻辑结构, 并带有自身的一系列操作。
例如:
整型向量不同整型值是一系列性质相同的数据;其数据集合存放在向量中,便是组织成线性
存储结构;向量自身有创建、复制、扩建、增删、修改等操作,外加排序、查找等算法可以调用。
所以,整型向量在语言中是一种具体的数据结构。
编程质量
(Programming Quality )
可读性
通过使用更好的编程方法可以从本质上改进可读性通过使用定义良好的算法和语句控制结构,可以局部改进算法的可理解性通过学习和使用优秀
程序员的编码习惯,采用一贯的编码风格,可以增强可读性。
注意:
高级程序员与初学者对可读性的把握分寸是不同的易编程性:
只是对采用好的编程方法或更高级语言而言,抽象程度越大,越易编程对象化编程在
抽象数据类型的创建上做了大量的工作,因而赢得了
应用程序编写的方便与快捷比如
数组,无法整体复制,无法扩容,但是向量则可以。
安全性
编程在算法设计上是挖空心思的劳动过程,而在运用语言对之描述上应该潇洒自在:容易表达,不容易出错,运行上更安全。
好的编程方法能够帮助
程序员实现潇洒编程
抽象数据类型中可以将大量
安全代码嵌入其中,从而使应用编程潇洒自在实现抽象数据类型的过程本身也是使用其他抽象数据类型的应用编程,同样也充满着潇洒与自在
void f(char* s)
{string s1,s2=s; //第一种s1=s;char* st=new char[
strlen(s)+1]; //第二种
strcpy(st,s); char a[40]; //第三种
strncpy可维护性
指局部修改不影响系统全局的总体性能,而系统产生的问题通常可以通过局部维护(修改或更换部件) 来解决。
模块化编程使程序可拆装,可局部修改,而不影响整体性能与工作,因而
可维护性强,过程化编程是将过程模块化,具有一定的可维护性;
对象化编程是将
数据类型也模块化,从而导致更方便的维护性能可扩充性:指系统扩展时,只增加扩展代码,而对原系统的正常运作只作很少的修改甚至不修改功能扩展的影响:
过程化编程,会涉及多处扩展代码与原系统不和谐所带来的修改对象化编程,如果是
抽象数据类型的功能扩展,则不会影响原系统的正常运行,而只是支持
应用程序中增加的一些扩展代码而已;
如果是应用程序功能扩展,那是使用抽象数据类型的抽象代码扩展,其修改
量比之低级代码要少效率
程序维护
( Program Maintenance )
维护要求:
数个数m,
m若改为根据当前小孩的序号与m的和来确定个数m,则在进行数个数前,先要进行表达式计算,
这一切,都是在
Josephus类中暗中完成的,所以只要修改Josephus类的getWinner 无须修改
应用程序,便可维护好系统.
程序扩展
( Program Extension ) 既要求直接数m个数,最后所获得的1个胜利者,也要求按维护要求的数法所获得的胜利者此时,便要保留原来的求胜利者的成员函数,再设计实现一个成员函数,作为功能扩展再在原系统中增加调用该成员函数的语句由于小孩转圈的结构没有变,所以该扩展要求就不涉及
链表修改。