文档详情

BCB第四讲C++ Builder的编程模式

mar****e5
实名认证
店铺
DOCX
16.33KB
约4页
文档ID:154968597
BCB第四讲C++ Builder的编程模式_第1页
1/4

C++ Builder的编程模式我们知道,CBuilder是一个可视化的Windows应用程序开发工具,并且它以C/C++语言作为 基础,对初学编程的朋友来说,这意味着在学习使用CBuilder的同时也要学习Windows编程、C/C++ 编程和面向对象程序设计方面的知识,除此之外,要成为一位真正的软件开发高手,还需要了解一 些软件工程方面的知识因此,心铃准备结合有关Windows应用程序运行的特点、面向对象编程、 C++类和软件工程等方面的一些简单的理论知识来介绍CBuilder编程特点,这些内容虽然显得很枯 燥,但相信今后大家会发现它们相当有用,因为它们可以帮助大家建立起良好的程序设计指导思想, 当然,讲座中介绍的只是少量的基本概念,有志于搞软件开发的朋友可以自己通过不断的学习和实 践来深入地掌握相关的知识• Windows系统及其应用程序的特点使用CBuilder来编写Windows应用程序时,CBuilder已经为我们隐藏了许多与Windows操作 系统内部有关的细节,使得我们无需深入了解操作系统的运行机制就可以进行编程工作,不过,多 数程序员都不会只满足于这种“知其然,不知其所以然”的程序开发模式,对编程的热爱将促使他 们学习更多更深入的知识。

就CBuilder而言,如果能够了解Windows系统及其应用程序的运行机 制,将有助于我们更好地理解CBuilder程序的结构,也更有助于我们在已有工具的基础上开发出 具有更强大功能的应用程序在介绍Windows应用程序的运行机制之前,首先让我们来看看MS-DOS应用程序的特点MS-DOS与Windows最大的不同点在于,MS-DOS是一个单任务的操作系统,同一时刻只有 一个应用程序在运行,该应用程序可以独占整个计算机系统的硬件和软件资源,如CPU、内存、 屏幕、鼠标和键盘等因此,稍微复杂一点的MS-DOS应用程序中,大都包括设置屏幕模式、分 配内存、接管鼠标、扫描键盘等操作,并负责对系统中所发生的多数事件进行响应和处理除此之 外,MS-DOS应用程序的另一个特点是,从程序的启动入口点到程序运行结束退出的过程中,几乎 每一步都有明确的调用关系(中断服务例程除外,这类代码的执行可以在任意时刻由中断触发), 这正是单任务操作系统下应用程序的典型运行模式Windows是目前PC机上最流行的操作系统,它是一个多任务的操作系统,同一时刻允许多个 应用程序并行运行,计算机的资源被Windows中的所有应用程序所共享,其中包括鼠标、键盘等 输入设备。

为了顺利实现共享,Windows负责接收所有的输入事件,并将这些事件转换成一条条消 息后送入到相应的应用程序的消息队列中,而应用程序将从自己的消息队列中获得消息,并作出响 应或进行处理,这种消息处理过程被称为“消息驱动机制”,它与MS-DOS程序截然不同消息驱动”是理解Windows应用程序运行机制的最重要的概念在消息驱动下的Windows 应用程序有一类称为回调函数的执行代码,它们不是由应用程序本身调用的,而是由Windows操 作系统调用的,例如窗口的消息处理函数WndProc,就是由操作系统在接收到属于该窗口的消息时 调用的CBuilder采用了在消息驱动的基础上发展出来的事件驱动编程模式,事件可以理解成消息的延 伸,通常一条消息可以看作一个事件的发生,但有的消息有可能会引发几个相关的事件在事件驱 动编程模式下,事件处理函数代替了原来的消息处理函数,从而改变了传统Windows编程中窗口 的消息处理代码都在WndProc中实现的模式,使得不同事件的处理函数可以相互独立开来总的 来说,事件驱动编程模式是面向对象的编程思想成功运用到Windows应用程序开发中的结果• 面向对象编程CBuilder是面向对象的开发工具,那什么是对象(Object)呢?广义地说,客观世界的一切事 物都是对象,在计算机软件领域中,对象是客观实体在计算机中的抽象,它是由代表客观实体的属 性和行为的一个封装。

具体到CBuilder的窗体编辑器中,对象是一个个可视化的或非可视化的元 件,而在C++程序代码中,对象是类的一个实例(有时指向对象的指针也称为对象)到目前为止,人们主要使用两种方式对客观世界进行描述,一种是过程式描述,另一种是对象 式描述,因此产生了过程式程序设计和面向对象程序设计两种主要的程序设计方法过程式描述将 问题分解为一系列顺序执行的过程,这种描述方式特别符合计算机本身的构造和运算模式,因此在 处理计算性的操作时特别有效,根据操作系统的特点,过程式描述的应用程序比较适合单任务的 MS-DOS操作系统但是,客观世界的事物往往是复杂的、并发的,很难用一串连续的过程加以描述,因此产生了 对象式描述面向对象设计方法最基本的思想就是把客观世界看成一个个相对独立而又相互联系的 实体,即对象每个对象都有自己的状态和行为,能够完成一定的功能在面向对象的程序设计中,状态称为属性,对应C++类的数据成员;行为称为方法,对应C++ 类的成员函数面向对象的思想就是把方法和属性结合起来,把它们看成一个有机整体,这个结合 的过程被称为封装封装把发生关联的所有属性和方法捆绑在一起,从而使对象内部有了明确的范 围和清楚的外部边界。

封装是面向对象理论中十分重要的概念,因为封装实现了数据隐藏,保护了 对象的数据不被外界随意改变,并且封装使对象成了相对独立的功能模块,提高了软件设计的结构 化和模块化程序,如果需要改变某个对象时,只要它对外的接口保持不变,系统的其它部分就可以 不受影响面向对象的描述方式符合客观事物的本来面貌,也符合人的思维习惯,因此非常适合于开发大 型应用程序和解决复杂问题,当然,这并不是说大型应用程序中不需要过程式程序设计方法,过程 式程序设计方法有其特有的优点,在解决局部问题,特别是偏重计算的问题时,采用过程式程序设 计方法还是特别有效的另外,根据单任务操作系统与多任务操作系统的不同,对象式程序设计方法特别适合于多任务 操作系统,以Windows为例,Windows的消息驱动机制就比较适合于面向对象编程,应用程序的 各对象之间可以通过消息相互作用,例如触发对象的方法C++语言中的类前面介绍了面向对象程序设计的少量理论知识,在程序开发过程中,我们还需要使用支持面向 对象的编程语言来将理论运用到实际的工作中C++是目前较流行的面向对象编程语言,学习使用 C++进行面向对象编程时,应该首先了解C++中类的概念。

类是对象的一个抽象,是同类对象的总称在C++语言中,类又是一种特殊的数据类型,类的 定义包括三个方面的内容:类标识符、类体和类成员函数的实现下面给出C++中类声明的一般形式:class类名{private:私有的数据成员;私有的成员函数;protected:被保护的数据成员;被保护的成员函数;public:公共的数据成员;公共的成员函数;};class是C++的关键字,它引入了类的声明类名称的命名应遵循方便好记的原则,匈牙利命 名原则是一种目前Windows编程中使用得最广泛的一种命名原则,心铃建议大家尽量按照该原则 来命名类标识符,以增加代码的可读性类声明体包含在一对大括号中,其中定义了类的数据成员和成员函数根据外界对成员的存取 权限,类的成员分为3种类型:私有的、保护的和公共的,分别用关键字private、protected和public 来表示除了类的声明以外,完整的类定义还需要类成员函数的实现类成员函数实现代码的一般形式 如下所示:数据类型类名::成员函数名(参数说明)(函数体}其中双冒号“::”是作用域运算符,它标明类名称后面的函数是该类的成员函数,并且成员函 数的作用域只在该类中才有效。

C++类支持继承性和多态性,继承性是指通过已有的类派生出新的类,新的类(称为子类或派 生类)将继承和使用原有类(称为父类或基类)的代码,并有自己新的数据成员或成员函数多态 性描述了 C++依据程序的运行情况而产生不同动作的能力,例如,基类定义了一种成员函数,其派 生出的新类也定义了名字相同的成员函数,它们的实现互不相同,应用程序在运行时能够确定什么 时候调用哪个成员函数,这种现象称作多态性许多朋友在初学阶段都会对类和对象的联系与区别感到困惑,其实,类和对象的关系就象普通 数据类型与变量的关系一样,我们定义了一个类后,在使用它之前还必须生成一个对象实例类只 是对象的抽象,程序在运行过程中操作的必须是对象的实例,而不是类,对象实例是根据类的定义 来分配的一块实实在在的内存区域程序访问对象成员的方法是在对象名后加上引用符“•”,再引 用其数据成员或成员函数,另外也可以通过指向对象的指针来访问对象,只是引用符要改用“>”在CBuilder中,应用程序的窗体及窗体上的元件都是可视化的对象,这些对象的生成和释放 通常由CBuilder自动生成的代码来完成,而我们在程序代码中通常使用指向这些对象的指针,即 用对象指针来访问对象的方法和属性。

软件开发的要求无论使用何种编程工具,正规的软件开发工作总要以软件工程的有关理论作为指导软件工程 理论指出在软件开发过程中,系统分析和系统设计是关键的两个环节结合到面向对象程序设计中,系统分析可以分为下面五个关键步骤:需求分析、识别类和对象、 定义属性和方法、识别结构、识别主题需求分析是要确定系统要完成什么样的功能以及确定系统的边界,明确系统边界上的接口,这 时是将系统整体作为一个对象来看待识别类和对象是指将系统的功能进一步细分,确定系统可能 需要的全部对象定义属性和方法是根据识别出来的对象,定义其属性和方法识别结构是确定各 个对象之间的关系,如继承关系、包容关系、关联关系等识别主题是指确定能完成独立功能的子 系统,描述其中各对象之间的关系面向对象的系统分析着重于弄清系统是什么样,有什么功能,而面向对象的系统设计着重于类 的实现,解决系统如何工作的问题一个好的系统设计应遵循以下几个基本原则:1 .高度的凝聚性即类和类的的继承必须具有高度的凝聚性所谓凝聚性是指类应具有单一的用途,如果某个类 具有多个用途,应将其分解为多个专用的类2. 松散的耦合即类与类之间的耦合应很松散所谓耦合,是指系统的各组成部分之间的相互依赖性。

象方法 和类这样的要素,设计时应尽可能互相独立如果某个类过于依赖其他类来完成其工作,那么就必 然要牺牲可重用性与可移植性3. 数据隐藏类的数据实现细节对于别的类来说应该是不可见的因此在设计C++类时,应尽量避免下列情 况:在一个类中有大量公用数据元素;类的实现依赖于全局变量;类中含有大量友元(其它特定类 能够直接访问的成员变量)4. 尽可能重复使用现有代码设计类时,首先应尽可能从所用的开发环境提供的类库中选择最合适的类作为基类,可以从要 设计的多个类中抽象出新基类,同样,设计函数时,应尽可能使用函数库中的函数5. 设计类时保持类接口的稳定性类接口也就是类的public部分,对派生类来说,还包括其基类的protect部分类接口定义了 该类怎样同外部世界交流,保持其稳定性是实现兼容性的必需要求以上是C++开发面向对象系统的一般原则,在编程实践中,需要根据具体情况加以运用,对有 些不太复杂的应用程序可以省去其中某些步骤CBuilder作为快速应用程序开发工具,具有高度模 块化和可视化的特点,即符合软件工程化的要求,又可大大简化系统分析与系统设计的工作CBuilder编程的特点开发CBuilder应用程序一般需要完成两个阶段的工作。

第一阶段,根据应用程序的要求,以 可视化的方式设计应用程序窗口界面,此阶段不需要编写任何编程代码,只需要创建应用程序窗体, 设置窗体的属性参数,在应用程序窗体中放置可视化或非可视化的元件并设置元件的属性参数第 二阶段,根据应用程序功能的要求,使窗体及其包含的元件对某些特定事件进行响应,事件响应处 理函数可通过对象监视器的事件页进行添加,函数体的代码则需要手工编写CBuilder用来设计和实现应用程序的基本单元是元件,元件是一个具有特定功能的软件模块, 每个元件都对应一个C++封装类,最常用的元件有Application元件、窗体和放置在窗体中的各种 元件,如按钮、编辑控件、列表控件、对话框和菜单等在运行时,CBuilder应用程序首先会创建一个Application对象,Application对象负责创建窗体 和从操作系统消息队列中接收消息,并将其发送到相应的窗体中窗体对象一般包含了多个可视化 或不可视化的元件,它从Application对象接收到消息后,由窗体根据消息类型确定由哪一个元件 对象或是由窗体本身对其进行处理,并将此消息发送到相应的对象,后者负责完成具体的功能本讲心铃简要地介绍了一些关于Windows应用程序的特点、面向对象的编程原理、C++语言的 特点和软件工程等方面的基础知识,它们构成了 CBuilder编程的理论基础,估计不少朋友可能会 感到很不好理解,这没有关系,因为这些知识不是短短的讲座所能涵盖,也不是一朝一夕就能学会 的,需要朋友们下一番苦工作才能真正理解和掌握。

从下一讲开始,我们就要实际动手编写一个应 用程序了,下星期再见吧。

下载提示
相关文档
正为您匹配相似的精品文档