VB和C++面向对象的处理方法.doc_第1页
VB和C++面向对象的处理方法.doc_第2页
VB和C++面向对象的处理方法.doc_第3页
VB和C++面向对象的处理方法.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VB和C+中面向对象的思想和方法VB和C+中面向对象的思想和方法1一面向对象的特点21将对象作为操作单位22软件的集成式开发43支持对象的链接与嵌入技术5二面向对象的局限性5失去了对于内存的控制5失去了函数的多样性5三VB相较于C+设计思想的不同61.可视化对象62事件驱动7很多时候,作为开发者,是没有必要对于每一个函数的底层函数都了如指掌并且在每一次开发都为怎么编写底层函数而消耗大量的精力。例如排序,在程序之中每次都为自己编写一个程序来一个一个对于底层内存块精心控制从而达到排序的目的其实是不必要的,这一切工作我们都其实是可以用一个共用模板来解决的,为此,C中添加了等算法库以头文件的形式来对函数进行了一次脆弱的封装(因为编译器只是从语法角度把他们和原函数区分开了,而实际上他们之间对于编译器来说并没有语义上的区别(Expert C Programming chapter.13),而VB在这个基础之上更近了一步,以Basic语言为基础,直接封装了所有我们需要的模板,并且将其变成可视化的控件,从而大大减少了操作的复杂性。从一方面来说,程序员们不必再为一个控件的安排和绘制操心,可以很方便并且快捷地做出更加友好的可视化的界面,但是另一方面,也使得VB不能够有效地控制内存等底层部分,也一定程度上降低了函数的多样性,从而造成一些错误。一面向对象的特点1将对象作为操作单位 VB采用了面向对象的程序设计思想。它的基本思路是把复杂的程序设计问题分解为一个个能够完成独立功能的相对简单的对象集合,变成一个可操作的实体,如窗体、窗体中的命令按钮、标签、文本框等。从C+语言的角度来说,如果我们定义一个对象“计数器”会这样来做class Counterpublic:Counter(char A)flag=A;num=0;Counter()void add_num()num+;void set_flag(char c)flag=c;int get_num()return num;char get_flag()return flag;private:char flag;int num;对象空间的创立,以调用对象的够造函数的形式实现,在这个函数中,会针对不同的重载类对内存实行不同的分配和初始化制度。但是单单对于用户来说,用户并不关心我们在内存调用而来怎样的一个单元,这个单元有多大,这个单元能用来存什么东西和我们可以对这个单元做什么才是用户真正希望知道的。相应的用户也无法了解底层究竟在进行什么样的改动,为了保护,我们也不能让用户太随意地对于这个单元做出操作。在这样思想的引导下,面向对象的程序做了这样两个措施:封装数据,我们只能通过提供的接口来对结构内的数据进行操作,而一切随意的改动,例如直接对其中的数据进行赋值都是无法实现的。这样就保证了数据在“一片漆黑”的环境中不会被其他进程篡改和破坏,从而保持了程序的稳定性。在上面的例子中,不论是对于数据的加(void add_num()num+;)还是对于数据的读(int get_num()return num;)都是通过调用方式实现的,就算在“读”的过程中出现了赋值或者种种错误,对不起,我们只是通过栈传递给了你一个形式参数,而数据的本体是早已经被保护起来了的,所以并不会出现任何问题。封装函数,从某方面来讲,这是面向对象程序为了维持自身的稳定性与简便性所必须做的事情,另一方面,这也限制了用户对于对象的操作。我们规定对象中只能存在规定的函数来对对象做各种调用,除了之前的初始化构造,赋值和取得值得动作,也可以规定例如“打印信息“等操作。但是,如果该对象没定义这样的函数,例如下面这个例子Class catPublic:mew()printf(“a cat mewn”);在这个程序中,我们定义了对象猫并且定义了猫的一个方法,于是我们可以通过调用mew来让猫喵喵叫,但是如果我们想让猫汪汪叫就只能修改对象内部的函数才能做到了,大多数情况下这种做法并不是一种很好的做法。在不清楚底层构造的情况下严格按照提供的方法来对对象做出操作才是明智的选择。 2软件的集成式开发 VB环境中,编程者可设计界面、编写代码、调试程序,直至把应用程序编译成可在Windows中运行的可执行文件,并为它生成安装程序(百度知道 VB的新特性有哪些)。这也是其他非可视化软件难以达到的效果。毕竟没有什么比用户自己亲眼看见更加直观的形式了。同样的在Window下运行QT的时候却还总是会为生成窗体和代码分离的问题所苦恼,能够实时调试并且最直观看到效果,这也是VB的一大优势。 3支持对象的链接与嵌入技术 VB的核心是对对象的链接与嵌入(OLE)技术的支持,它是访问所有对象的一种方法。利用OLE技术,能够开发集声音、图像、动画、字处理、Web等对象于一体的程序。 (Visual Basic程序设计教程 刘炳文) 二面向对象的局限性所谓有得必有失,在获得了大大的方便的同时,VB也失去了一些底层的应用方面失去了对于内存的控制也许这对于一个小小的程序来说并不是很需要在意的一件事情,但是当我们不能关注到每个malloc()(在C+中被new关键字取代)的时候,我们也不能关注到每一个free()(delete),有经验的程序员会把申请了地址一定要释放作为一条金科玉律(永远不要把这些工作全部交给系统自动回收),但是在VB的设计理念之中,我们开始变得不太在乎这些东西了。为了解决这一问题,VB也对自己进行了一些修改使之能做出一个链接库兼容C语言并且通过C来对底层进行必要的控制。虽然我们并不需要对这方面担心太多(毕竟这不是VB的基本设计思想),知道怎么去处理这些问题对于之后一些神奇的BUG排除还是非常有帮助的。失去了函数的多样性在说这句话的时候其实还是有所衡量的,在这里必须声明,本文所指的函数多样性是事件驱动方法的多样性,例如,在FORM之中只有Click,Load, DoubleClick等事件来驱动方法,但是我么要规定一个新的事件,例如,我想规定如果鼠标在窗体上面按右键做出某种轨迹达到关闭窗体的目的(参考火狐浏览器的鼠标手势功能),这时候我们就需要一些非常复杂的操作了。不过这方面并不能真正称之为面向对象程序设计思想的问题,我们面对的只是这个对象不是我们需要的或者我们觉得这个对象不完善的问题而已,只要熟悉底层代码的开发,这样的问题并不是不能够解决的。三VB相较于C+设计思想的不同1.可视化对象C+在早期被开发出来的时候,曾经一度被称为“C with classes”,从这点可以看出,C+中对于对象的实现,实际上是由类的实现来完成的。换句话说,C+仍然更加关注底层的部分,只是将操作码和函数进行了一次封装,这一点启示在C语言之中曾经就以“强类型”的概念出现过,比如说,我们有了一个INT型的变量,在绝对的“强类型”编译器之中,把一个INT赋值给FLOAT是绝对不被允许的,另一方面,编译器又规定了对于INT诸如加减乘除之类的操作,预存了INT在面对这些操作符的时候应该怎么做。在这样的技术之上,C+其实是把这种方便的体系的构造权利下放给了用户,让用户也能自己定义类似于“强类型”的结构。但是VB的创新在于可视化方面,在这一点概念被提出之前,大多数用户还是处于DOS界面的一片黑白之中,人们认知的只有键盘和显示器,而对于处理图形界面专门存在的鼠标根本没有意识,更别提现在触屏系统“点一下”的操作了。VB在设计理念中,鼠标的单机和双击都被作为事件的一种类型,从而可以驱动设定好的方法。换而言之,VB让对象变得更加符合人类的认知方式,本来对象就是对于拥有共同特点事物的抽象,在这一点上,VB将这些抽象额数据重新还原为可视化的对象,把抽象的对象变成了实在的东西,在设计对象时编程人员不必编写和描述每个对象的程序代码,VB按照编程人员的设置的属性值自动为之生成对象的代码(软件开发技术 page36)。虽然用户所操作的并不是真正的对象,但是可以通过这样的操作达成某种映射,从而完成对于实际对象的操作。“用户界面”这一概念可以说是面向对象编程的又一个提升,有了用户界面,才得以成就现在发达的信息产业,才让计算机不再是专业人员所研究的东西。2事件驱动 有了之前的基础之后,为了决定VB在什么时候应该做出一个相应的方法呢,与C环境不同,在Windows环境下,程序一改过去以语句为基础一条条运行的模式,而是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个事件都能驱动一段代码事件过程,该代码决定了对象的功能。就是说,我们通过不同的事件可以实现程序在不同的方法之间的跳转!我们再也不用担心程序的运行结构问题,在QT之中,这种解决方案被称作“信号和槽“的机制(C+ GUI QT4 编程 page2)。我们总是能够针对于现在所做出的操作产生一个结构代码,通过这个代码,在程序中找到适合的方法,来把整个过程实现的。也就是说。我们把程序做出了高度模块化的处理,每次执行只是在等待信号和运行信号所指向的程序块之间的切换。这样就能够实现高速的编程原则。也是正因为这个原因,在VB 的程序之中不需要明显的开始结束程序(软件开发技术 page36)参考资料:Expert C Programming 人民邮电出版社【美】 Peter Van Der Linden 著21天学通C+ 人民邮电出版社【美】 Je

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论