黑马程序员-关于抽象编程

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

 抽象编程( Abstract Programming ) 抽象分行为抽象和数据抽象两种. 

行为抽象

  通俗地说便是将一个行为序列归并 (抽象)为一个行为的过程.例如:将取碗筷、盛饭、盛菜,扒一口饭、夹一筷菜、再扒一口饭、再夹一筷菜的若干重复,然后放下碗筷的过程归并为吃饭. 

数据抽象

  通俗地说,就是将事物归类,或者说,将事物看成是一定型号、规格的数据,然后将性质接近的数据归纳(抽象)为一类.例如:将圆、三角形、长方形归为形状类. 数据结构一系列性质相同的数据, 组织成一定的逻辑结构, 并带有自身的一系列操作例如:整型向量不同整型值是一系列性质相同的数据;其数据集合存放在向量中,便是组织成线性存储结构;向量自身有创建、复制、扩建、增删、修改等操作,外加排序、查找等算法可以调用.所以,整型向量在语言中是一种具体的数据结构。 

  抽象编程通过抽象的方法来减少编程工作量或有效地减轻编程难度称为抽象编程 将问题通过功能分解,各个击破的编程方法(过程化编程) 是一种以行为抽象为主的抽象编程 将问题通过实体分析,分层分类地实现抽象数据类型,从而进行简单应用编程(基于对象编程)是一种以数据抽象为主的抽象编程,这种抽象编程,通过数据类型复用,方便编程,方便维护和扩展,其效果比过程化编程更好编程语言中没有许多具体的数据类型,要解决实际问题,很大部分工作是要建立数据模式与实际问题的对应,也就是建立抽象数据类型的过程对象化编程就是基于分层分类的抽象数据类型之具体编程,它能更好地实现数据结构和算法,便是将N.Wirth的程序公式:程序=算法+数据结构具体化为:程序=算法+抽象数据类型 

编程质量 (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(a,s,sizeof(a)); a[sizeof(a)-1]=‘\0’; } 

可维护性

  指局部修改不影响系统全局的总体性能,而系统产生的问题通常可以通过局部维护(修改或更换部件) 来解决。模块化编程使程序可拆装,可局部修改,而不影响整体性能与工作,因而可维护性强,过程化编程是将过程模块化,具有一定的可维护性;对象化编程是将数据类型也模块化,从而导致更方便的维护性能可扩充性:指系统扩展时,只增加扩展代码,而对原系统的正常运作只作很少的修改甚至不修改功能扩展的影响:过程化编程,会涉及多处扩展代码与原系统不和谐所带来的修改对象化编程,如果是抽象数据类型的功能扩展,则不会影响原系统的正常运行,而只是支持应用程序中增加的一些扩展代码而已;如果是应用程序功能扩展,那是使用抽象数据类型的抽象代码扩展,其修改量比之低级代码要少效率 

程序维护

  ( Program Maintenance ) 维护要求:数个数m,m若改为根据当前小孩的序号与m的和来确定个数m,则在进行数个数前,先要进行表达式计算,这一切,都是在Josephus类中暗中完成的,所以只要修改Josephus类的getWinner 无须修改应用程序,便可维护好系统. 

程序扩展

  ( Program Extension ) 既要求直接数m个数,最后所获得的1个胜利者,也要求按维护要求的数法所获得的胜利者此时,便要保留原来的求胜利者的成员函数,再设计实现一个成员函数,作为功能扩展再在原系统中增加调用该成员函数的语句由于小孩转圈的结构没有变,所以该扩展要求就不涉及链表修改

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值