《面向对象的系统分析与编程语言优秀课件.ppt》由会员分享,可在线阅读,更多相关《面向对象的系统分析与编程语言优秀课件.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象的系统分析面向对象的系统分析与编程语言与编程语言第1页,本讲稿共48页讲座内容讲座内容一、面向对象的基本原理二、面向对象的系统分析三、常用语言的分析比较第2页,本讲稿共48页一、面向对象的基本原理一、面向对象的基本原理第3页,本讲稿共48页连接成员的机制(静态联结与动态关联)生产软件产品 什么是面向对象技术什么是面向对象技术以面向对象方法学为基础的软件系统组织和结构设计的工程技术特点:特点:标准的工艺流程标准的工艺流程统一的生产规范统一的生产规范内容:面向对象分析内容:面向对象分析面向对象设计面向对象设计面向对象程序设计面向对象程序设计内部组成层次结构思维方法知其然,知其所以然第4页,
2、本讲稿共48页面向对象技术及其发展历史面向对象技术及其发展历史 从从“软件工程软件工程”的发展史看面向对象技术出现的必然性的发展史看面向对象技术出现的必然性面向过程结构化程序设计面向对象程序设计面向机器机器语言助记符语言汇编语言面向机器指令代码FORTRANBASIC面向过程程序设计CPASCAL结构化程序设计C+Java面向对象程序设计面向网络程序设计JavaVs.NetCAR面向网络程序设计第5页,本讲稿共48页 面向对象方法学基本内涵面向对象方法学基本内涵(1)客观世界的事物由各种各样的实体(对象)构成客观世界的事物由各种各样的实体(对象)构成(2)每个对象都有各自的内部状态和运动(状态
3、)规律每个对象都有各自的内部状态和运动(状态)规律(3)根据对象的属性和运动规律的相似性可以将对象分类根据对象的属性和运动规律的相似性可以将对象分类(4)复杂对象由相对简单的对象组成复杂对象由相对简单的对象组成(5)不同对象的组合及其间的相互作用和联系构成了系统不同对象的组合及其间的相互作用和联系构成了系统(6)对象间的相互作用通过消息传递,对象根据所接收到的消息做出对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应自身的反应第6页,本讲稿共48页 对象的模块化对象的模块化在程序实现中将一些密切相关的操作以某种风格汇集在一起,形成相对独立的整体。模块2模块1模块化的特征在于抽象
4、和信息隐藏模块化的特征在于抽象和信息隐藏抽象划分方式与客观事物本来面目相对应信息隐藏内部信息的访问必须通过接口模块化设计遵守的准则:模块化设计遵守的准则:分解与组合分解与组合 (注重:可分解性、可组合性、可理解性注重:可分解性、可组合性、可理解性)分解组合第7页,本讲稿共48页 软件重用软件重用面向对象技术的发展使得软件重用技术更臻完善和规范面向对象技术的发展使得软件重用技术更臻完善和规范:多种重用方式:子程序(Subroutine)、程序包(Package)、库(Library)对象的封装使得对象模块在程序开发者看来是一个黑匣子,它只需通过接对象的封装使得对象模块在程序开发者看来是一个黑匣子
5、,它只需通过接口去操作对象和理解对象的行为,而不必关心其内部实现细节,从而程序口去操作对象和理解对象的行为,而不必关心其内部实现细节,从而程序开发人员能够直接重用已经开发的对象模块开发人员能够直接重用已经开发的对象模块 对象的继承在另一个角度提供了软件重用方式,即通过继承允许程序开发对象的继承在另一个角度提供了软件重用方式,即通过继承允许程序开发者自己的对象重用具有相同特性的其它对象的代码者自己的对象重用具有相同特性的其它对象的代码 面向对象技术中的面向对象技术中的COM(Component Object Model)等提供了将对象模)等提供了将对象模块组装在一起的同一机制和方法,利用他们应用
6、程序开发人员可以方便地块组装在一起的同一机制和方法,利用他们应用程序开发人员可以方便地利用已有的对象模块组合在一起,构造出更大规模的应用程序利用已有的对象模块组合在一起,构造出更大规模的应用程序 第8页,本讲稿共48页对象数据封装对象数据封装(1)(1)问题空间问题空间所有要研究的客观现实的全体称为问题空间或问题域,而把要研究的问题(客所有要研究的客观现实的全体称为问题空间或问题域,而把要研究的问题(客观世界中的实体)称之为问题空间的对象观世界中的实体)称之为问题空间的对象 任何一个客观实体都是对象任何一个客观实体都是对象 对象的组成对象的组成相互作用相互作用(2)(2)解空间解空间所有的解(
7、程序及执行程序的计算机)组成的集合称为解空间,把解(程所有的解(程序及执行程序的计算机)组成的集合称为解空间,把解(程序及执行程序的计算机实体)称做解空间的对象序及执行程序的计算机实体)称做解空间的对象 对可解问题空间对象至少有一个解空间对象与其相对应对可解问题空间对象至少有一个解空间对象与其相对应(3)(3)封装封装将客观事物抽象为一个相对独立的实体,其中含有该事物的属性及行为将客观事物抽象为一个相对独立的实体,其中含有该事物的属性及行为第9页,本讲稿共48页 对象数据封装对象数据封装对象的形态与静态特征问题空间对象图书1MyBook1:CBook书 名:程序设计总页数:280版 本:2.m
8、_pczName:char*=“程序设计”nTotalPage:int=280nEdition:int=2.返回书名返回总页数返回版本号.char*GetBookName();int GetTotalPage();int GetEdition();.分析中的对象设计中的对象人、学生、学校、班级、处、电视、汽车人、学生、学校、班级、处、电视、汽车等都可以被看作对象等都可以被看作对象第10页,本讲稿共48页人类认识世界的认知规律之一:人类认识世界的认知规律之一:根据对象的属性和运动规律的相似性分类认识和描述根据对象的属性和运动规律的相似性分类认识和描述相似属性和功能相似的对象构成相似属性和功能相似
9、的对象构成对象类对象类任何一个具体的对象都是相应对象类的任何一个具体的对象都是相应对象类的一个实例一个实例类与对象的不同类与对象的不同类的实例化类的实例化对象类和对象实例对象类和对象实例对象之间通过消息传递,对象对所接收消息的反应对象之间的相互作用抽象模型对象之间的相互作用抽象模型SenderReceiver/SenderMessage1ReceiverMessage1Message2第11页,本讲稿共48页对象之间的关系对象之间的关系(1)一般一般特殊结构特殊结构人类对事物进行分类后,在概念上,一些种类的事物之间存在着联系,一些人类对事物进行分类后,在概念上,一些种类的事物之间存在着联系,一
10、些类之间在行为、属性等方面具有部分相似性,其间存在一般与特殊的对应关类之间在行为、属性等方面具有部分相似性,其间存在一般与特殊的对应关系:汽车与轿车、学生与班委会系:汽车与轿车、学生与班委会 这种关系不存在于具体对象实例之间,而存在于对象类之间。这种关系不存在于具体对象实例之间,而存在于对象类之间。一般性寓于特殊性之中,体现在一般类对象所具有的属性和操作包含于特殊类对一般性寓于特殊性之中,体现在一般类对象所具有的属性和操作包含于特殊类对象之中。象之中。汽车轿车客车卡车火车客车货车罐车第12页,本讲稿共48页对象之间的关系对象之间的关系一般类特殊类特殊类的每个对象都为一般类的实例,因此特殊类的对
11、象必特殊类的每个对象都为一般类的实例,因此特殊类的对象必将具有相应的一般类的属性和操作将具有相应的一般类的属性和操作特殊类这种获取属性和特殊类这种获取属性和方法的方式称为方法的方式称为继承继承由于特殊类(对象)具有一般类的所有属性和操作,所以特殊类的任何一个对象必定是相应一般类的对象,因此这种关系又常称为IS_A_KIND_OF关系如果类A具有类B的全部属性和操作,并且具有一些自己独特的属性和操作,那么A称作B的特殊类,B称作A的一般类 通过在已有类的基础上添加一些特殊的属性和操作形成新类的方式通过在已有类的基础上添加一些特殊的属性和操作形成新类的方式称为称为派生派生CPersonCStude
12、ntChar*NameInt Number轨道衡超偏载轨道衡(2)父类父类子类结构(继承、派生)子类结构(继承、派生)第13页,本讲稿共48页单一继承、多重继承单一继承、多重继承一般类一般类特殊类WNDSTRUCTCWindowTreeCScreenObjectCEditTextCWnd一般类特殊类特殊类第14页,本讲稿共48页继承异常图例继承异常图例顺序环境属性m1m2m3并发环境属性同步控制部分功能定义部分属性继承需要同步控制改变被迫重定义第15页,本讲稿共48页n派生是人类认识的深入派生是人类认识的深入新的认知经常建立在已有认知的基础上,在已有知识的基础上通过进行新探索、新认识,在原有描
13、述中添加新成分形成新认识的描述鸟类北京麻雀东北麻雀南方麻雀麻雀类孔雀类 n 继承代表着认识的连续性继承代表着认识的连续性第16页,本讲稿共48页二、面向对象的系统分析二、面向对象的系统分析第17页,本讲稿共48页 需求分析与建模需求分析与建模在关系数据库设计的实体关系模型的基础上扩展了类、继承和行为等概念得到。需求的描述,而不是问题的解决。哪些特性可选、哪些必需从模糊的设计和实现需求中分离出正确的需求产生需求建立模型 开发者管理者用户问题描述对象模型动态模型函数模型与用户磋商学科知识实际经验第18页,本讲稿共48页u 面向对象的分析和设计面向对象的分析和设计分析模型分析模型设计模型设计模型实现
14、模型实现模型面向对象分析OOA面向对象设计OOD面向对象实现OOI静态特性:类层次关系模型动态特性:状态图、事件踪迹图行为功能:数据流图第19页,本讲稿共48页u静态结构分析静态结构分析系统消息系统消息各个具体控件消息各个具体控件消息消息窗口按钮图标菜单确定0.1帮助0.1消息10.1文件0.1编辑0.1消息窗口按钮确定 0.1图标 消息 0.1菜单文件 0.1编辑 0.1帮助 0.1第20页,本讲稿共48页u 动态行为分析动态行为分析对象生命周期对象生命周期 对象的动态行为包括两个方面的内容:对象的动态行为包括两个方面的内容:单个对象自身生命周期演化;单个对象自身生命周期演化;整个对象系统中
15、对象间消息传递及相互作用整个对象系统中对象间消息传递及相互作用对象状态导致状态转换的事件状态转换时的动作S1S2S3S4event1event2event3event4状态转换图第21页,本讲稿共48页u 动态行为分析(数据流图)动态行为分析(数据流图)施动者施动者 通过产生或使用数据驱动数据流图的主动对象,与数据流图的输通过产生或使用数据驱动数据流图的主动对象,与数据流图的输入输出联系在一起。入输出联系在一起。分析采集数据屏幕显示数据处理数据存储数据存储 数据流图中为后继访问而存储数据的被动对象。与施动者不同,数据流图中为后继访问而存储数据的被动对象。与施动者不同,它不产生任何操作,仅对存储
16、和访问数据的请求响应。它不产生任何操作,仅对存储和访问数据的请求响应。读数气温最高温度最低温度第22页,本讲稿共48页v面向对象的系统设计面向对象的系统设计分析期间建立系统模型设计期间模型问题空间对象面向对象设计阶段在分析模型基础上进行未来软件的系统设计、对象设计,从而得到设计模型,该模型包含了解决问题的方案和策略。是确定问题具体解决方案的过程第23页,本讲稿共48页 系统设计系统设计1.1.系统层次结构设计系统层次结构设计系统设计是以软件方式实现系统功能而进行软件的系统结构设计及 程序实现中的总体的、策略性的解决方案的制定高层次接口模块1模块2模块3应用程序模块1模块2模块3核心模块1模块2
17、模块3驱动模块1模块2模块3硬件模块1模块2模块3对软件系统进行的整体划分。水平方向代表系统的不同抽象级别与层次;纵向表明每个层次所提供的功能模块时间空间软件硬件单一一般效率可维第24页,本讲稿共48页2 2 系统数据存储设计系统数据存储设计系统中各种数据对象的存储方式设计:内存数据结构、文件、数据库等如分布环境中对象的存储结构与单机环境下不同、持久对象等3 3 系统资源访问设计系统资源访问设计确定需要使用的资源,包括访问机制和访问安全性机制等如:访问队列等4 4 网络与分布设计网络与分布设计如何将问题划分给不同节点进行分布式运算,需考虑网络流量、节点计算能力、系统效率6 6 互操作设计互操作
18、设计5 5 并发性设计并发性设计并发性控制,多进程、多线程等文件并行访问,使用临界区、事件、互斥量、信号灯等相对于Client/Server而言。多个进程之间可能需要为对方提供服务。可能比较复杂,因为有可能存在平台异构问题。例外、边界也许要处理 系统设计系统设计第25页,本讲稿共48页原则:原则:复用性复用性可扩充性可扩充性健壮性健壮性协作性协作性面向对象程序设计:使用程序设计语言将设计方案加以表达类定义静态模型动态模型类的实现约束实现于代码中增强系统健壮性u 面向对象程序设计的原则面向对象程序设计的原则第26页,本讲稿共48页n加强软件可复用性的原则:加强软件可复用性的原则:n保证操作的内聚
19、性保证操作的内聚性功能相对单一功能相对单一n减少单一功能模块代码规模减少单一功能模块代码规模函数代码的适当规模函数代码的适当规模n保证操作对外接口的一致性保证操作对外接口的一致性相似操作具有一致性接口相似操作具有一致性接口n分解设计中的操作分解设计中的操作以相对单一和基本的操作联合实现设计中的操作以相对单一和基本的操作联合实现设计中的操作n操作均匀覆盖数据操作均匀覆盖数据考虑操作的普适性考虑操作的普适性n加强封装加强封装操作只针对内部数据,实现与接口分离操作只针对内部数据,实现与接口分离n减少操作耦合减少操作耦合减少操作之间的相关,尽量上下文无关减少操作之间的相关,尽量上下文无关第27页,本讲
20、稿共48页综合考虑效率与通用原则综合考虑效率与通用原则效率的考虑效率的考虑好的算法与数据结构好的算法与数据结构各种隐式调用(各种隐式调用(=、构造函数、参数传递)、构造函数、参数传递)动态绑定动态绑定内存管理内存管理动态分配(动态分配(new错)与内存泄漏(错)与内存泄漏(leak)Visual C+中内存泄漏的自动侦测中内存泄漏的自动侦测封装与通用封装与通用尽量保持封装性与通用性的统一尽量保持封装性与通用性的统一类型类型类型检查有助于发现错误,尤其是参数、赋值方面类型检查有助于发现错误,尤其是参数、赋值方面参数化类参数化类持久对象持久对象约束约束可示化开发环境可示化开发环境第28页,本讲稿共
21、48页三、常用语言的分析比较三、常用语言的分析比较第29页,本讲稿共48页u常用面向对象的程序语言常用面向对象的程序语言VBPBC/C+/VCDelphiJavaVS.Net(C#,VB,VC+,VJ)其它其它第30页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:n 要增加代码的可重用性,要考虑以下几点:要增加代码的可重用性,要考虑以下几点:n代码的可读性。如格式、是否接近英语语法和单词。代码的可读性。如格式、是否接近英语语法和单词。n代码的表达能力,也就是简单性,能用最少的语句和单词实现同代码的表达能力,也就是简单性,能用最少的语句和单词实现同样的功能。样的功能。n代码的结
22、构性,如函数、模块、类。代码的结构性,如函数、模块、类。n语言功能的强大从下面几点来说:语言功能的强大从下面几点来说:n是否拥有大量的库支持。这是最重要的,要求编写任何功能的是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有强大的库支持。程序都有强大的库支持。n语法功能是否强大,比如是否有出错处理。是否有指针。语法功能是否强大,比如是否有出错处理。是否有指针。n语言的友好性:语言的友好性:n语言包的大小,语言包越小,学习越简单。语言包的大小,语言包越小,学习越简单。n语言是否有友好的编辑调试环境。语言是否有友好的编辑调试环境。n语言的可视化和集成编程环境。语言的可视化和集成编程环境
23、。第31页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:VBn全全称称Visual Visual BasicBasic,它它是是以以BasicBasic语语言言作作为为其其基基本本语语言言的的一一种种可可视视化化编编程程工具。工具。nVBVB作作为为一一种种较较早早出出现现的的开开发发程程序序以以其其容容易易学学习习,开开发发效效率率较较高高,具具有有完完善善的的帮帮助助系系统统等等优优点点曾曾影影响响了了好好几几代代编编程程人人员员,但但是是VBVB不不具具备备跨跨平平台台特特性性,从而也决定了从而也决定了VBVB在未来的软件开发中将会逐渐地退出其历史舞台。在未来的软件开发
24、中将会逐渐地退出其历史舞台。n它它对对组组件件技技术术的的支支持持是是基基于于COMCOM和和ActiveX,ActiveX,对对于于组组件件技技术术不不断断完完善善发发展展的的今天,它也显出了它的落后性。今天,它也显出了它的落后性。nVBVB在在进进行行系系统统底底层层开开发发的的时时候候也也是是相相对对复复杂杂的的,调调用用APIAPI函函数数需需声声明明,调调用不方便,不能进行用不方便,不能进行DDKDDK编程,不可能深入编程,不可能深入Ring0Ring0编程,不能嵌套汇编。编程,不能嵌套汇编。n具具有有面面向向对对象象特特性性,比比VCVC好好,但但也也不不算算强强。网网络络功功能能
25、和和数数据据库库功功能能也也没没有有非常突出的表现。非常突出的表现。n综综上上所所述述,VBVB作作为为一一种种可可视视化化的的开开发发工工具具由由于于其其本本身身的的局局限限性性,导导致致了了它它在未来软件开发中逐步被其他工具所代替。在未来软件开发中逐步被其他工具所代替。第32页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:C/C+n自从自从 C C 发明了以后,取代了汇编语言在操作系统编程的领导地位。各种发明了以后,取代了汇编语言在操作系统编程的领导地位。各种操作系统的编程接口的默认语言都是操作系统的编程接口的默认语言都是 C C 语言。语言。nC+C+是是 C C 语言
26、的加强版,增加了面向对象和其他有用的功能,编程更方语言的加强版,增加了面向对象和其他有用的功能,编程更方便轻松;便轻松;C+C+亦支援大部分亦支援大部分 C C 的程序,大部分的程序,大部分 C C 编译器也支援编译器也支援 C+C+。n在在 Unix-like Unix-like 上编写图形界面程序,有两个选择上编写图形界面程序,有两个选择 KDE KDE 和和 Gnome KDE Gnome KDE 更成熟,但它使用了不是开源的更成熟,但它使用了不是开源的 Qt Qt 函数库;函数库;Gnome Gnome 支持多语言和面向支持多语言和面向对象的程序间的协同,有它的对象的程序间的协同,有它
27、的 GUI GUI 工具工具 GTK GTK。n在在 Windows Windows 环境中,通常使用环境中,通常使用 VCVC,但由于,但由于VC VC 的编译器和的编译器和 API API 太复杂,太复杂,难于掌握,并非开放源代码的工具。其他选择有从难于掌握,并非开放源代码的工具。其他选择有从 Unix-like Unix-like 系统移植系统移植过来的过来的 djgppdjgpp、mingw mingw。n和其他语言相比,虽然和其他语言相比,虽然 C C 和和 C+C+都已经定下了其标准,但编译器、函数都已经定下了其标准,但编译器、函数库、操作系统库、操作系统 API API 五花八门
28、,有些又未必全面支援最新的标准,造成学五花八门,有些又未必全面支援最新的标准,造成学习的难度大、统一性差的问题。习的难度大、统一性差的问题。第33页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:VC+n是是基基于于MFCMFC库库的的可可视视化化的的开开发发工工具具,从从总总体体上上说说它它是是一一个个功功能能强强大大但但是是不不便使用的一种工具。便使用的一种工具。n它它在在网网络络开开发发和和多多媒媒体体开开发发都都具具有有不不俗俗的的表表现现,帮帮助助系系统统也也做做得得非非常常不不错错但但是是虽虽然然是是使使用用C+C+作作为为基基本本语语言言,但但它它在在面面向向对对
29、象象特特性性上上却却不不够够好好,主主要是为了兼容要是为了兼容C C的程序,结果顾此失彼;在组件支持上也不太好。的程序,结果顾此失彼;在组件支持上也不太好。n除除了了支支持持COM,ActiveXCOM,ActiveX外外还还支支持持CORBA,CORBA,但但是是没没有有任任何何IDEIDE支支持持,是是所所有有C C编编译器的功能译器的功能,需要需要CORBACORBA中间件支持。中间件支持。n最大的问题是开发效率不高。最大的问题是开发效率不高。第34页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:PBn全全称称PowerBuilderPowerBuilder,是是开开发
30、发MISMIS系系统统和和各各类类数数据据库库跨跨平平台台的的首首选选,使使用用简简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。nPBPB是是一一种种真真正正的的4GL4GL语语言言(第第四四代代语语言言),可可随随意意直直接接嵌嵌套套SQLSQL语语句句返返回回值值被被赋赋值值到到语语句句的的变变量量中中,支支持持存存储储过过程程和和数数据据库库函函数数,数数据据访访问问中中具具有有无无可比拟的灵活性。可比拟的灵活性。n但但是是它它在在系系统统底底层层开开发发中中犯犯了了跟跟VBVB一一样样的的错错误误,调调用用AP
31、IAPI函函数数需需声声明明,调调用不方便,不能进行用不方便,不能进行DDKDDK编程,不可能深入编程,不可能深入Ring0Ring0编程,不能嵌套汇编。编程,不能嵌套汇编。n在在网网络络开开发发中中提提供供了了较较多多动动态态生生成成WebWeb页页面面的的用用户户对对象象和和服服务务以以及及系系统统对对象象,非非常常适适合合编编写写服服务务端端动动态态WebWeb应应用用,有有利利于于商商业业逻逻辑辑的的封封装装;但但是是用用于于网网络络通通讯讯的的支支持持不不足足;静静态态页页面面定定制制支支持持有有限限,使使得得PBPB在在网网络络方方面面的的应应用也不能非常广泛。用也不能非常广泛。n
32、具有面向对象特性,相对而言比具有面向对象特性,相对而言比VBVB要好些。要好些。第35页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:C+Builder,Delphin它它们们都都是是基基于于VCLVCL库库的的可可视视化化开开发发工工具具,它它们们在在组组件件技技术术的的支支持持、数数据据库库支支持持、系系统统底底层层开开发发支支持持、网网络络开开发发支支持持、面面向向对对象象特特性性等等各各方方面面都都有有相相当不错的表现。当不错的表现。n学学习习使使用用较较为为容容易易,充充分分提提现现了了所所见见即即所所得得的的可可视视化化开开发发方方法法,开开发发效效率率高。高。n
33、由由于于两两者者都都是是Borland Borland 公公司司的的产产品品,自自然然继继承承了了该该公公司司一一贯贯以以来来的的优优良良传传统:代码执行效率高。统:代码执行效率高。n但但是是,它它们们并并不不是是毫毫无无缺缺点点,它它们们所所作作的的最最大大不不足足之之处处就就是是他他们们的的帮帮助助系系统在众多的编程工具中是属于比较差的。统在众多的编程工具中是属于比较差的。nC+BuilderC+Builder的的 VCLVCL库库 是是 基基 于于 Object Object pascal(pascal(面面 向向 对对 象象 pascal),pascal),使使 得得C+Builder
34、C+Builder在在程程序序的的调调试试执执行行上上都都面面向向落落后后于于其其他他编编程程工工具具。而而DelphiDelphi则则是它的语言不够广泛,开发系统软件功能不足。是它的语言不够广泛,开发系统软件功能不足。第36页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:Javan目目前前比比较较出出名名的的是是BorlandBorland出出的的JBuilderJBuilder和和IBMIBM出出的的Visual Visual Age Age for for Java,Java,两种工具都有一定数量的是用人群。两种工具都有一定数量的是用人群。nJBuilderJBuild
35、er继继承承了了C+Builder/DelphiC+Builder/Delphi的的特特点点,在在可可视视化化上上做做得得非非常常不不错错,使用简便。使用简便。n由由于于JavaJava本本身身语语言言的的特特点点使使得得他他们们在在网网络络开开发发中中具具有有高高人人一一等等的的表表现现,而而且且面面向向对对象象特特性性高高,支支持持的的组组件件技技术术也也非非常常多多,跨跨平平台台的的特特性性也也使使得得它在现在和未来的开发中占据越来越重要的地位。它在现在和未来的开发中占据越来越重要的地位。n但但是是在在系系统统底底层层开开发发和和多多媒媒体体开开发发中中却却表表现现得得并并不不让让人人满
36、满意意,这这与与设设计计JavaJava的意图有关,其主要还是跨平台。的意图有关,其主要还是跨平台。第37页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:数据访问对象数据访问对象nVBVB:DAO,ADO,RDODAO,ADO,RDO功能相仿;功能相仿;nPBPB:Transaction,DwControlTransaction,DwControl,可可绑绑定定任任何何SQLSQL语语句句和和存存储储过过程程,数数据据访访问具有无与比拟的灵活性;问具有无与比拟的灵活性;nC+C+Builder/DephiBuilder/Dephi:具具有有包包括括DataSource,Tab
37、le,Query,Midas,ADODataSource,Table,Query,Midas,ADO在在内的二十多个组件和类完成数据访问;内的二十多个组件和类完成数据访问;nVCVC:同同VBVB,但有不少类库可供使用,但极不方便,开发效率很低;,但有不少类库可供使用,但极不方便,开发效率很低;nJavaJava:Java JDBC API,Java JDBC API,不同的不同的IDEIDE具有不同的组件具有不同的组件 第38页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:数据表现对象数据表现对象nVBVB:DBGriDDBGriD,与与数数据据库库相相关关的的数数据据表表
38、现现控控件件只只有有此此一一种种,只只能能表表现现简简单单表格数据,表现手段单一表格数据,表现手段单一;nPBPB:DataWindowDataWindow对对象象(功功能能异异常常强强大大,其其资资源源描描述述语语句句构构成成类类似似HTMLHTML的的另另外外一一种种语语言言,可可在在其其中中插插入入任任何何对对象象,具具有有包包括括DBGridDBGrid在在内内的的数数百百种种数数据据表表现现方方法法),只只此此一一项项功功能能就就注注定定了了PBPB在在数数据据库库的的功功能能从从诞诞生生的的那那一天起就远远超过了某些开发工具今天的水平一天起就远远超过了某些开发工具今天的水平;nC+
39、C+Builder/DephiBuilder/Dephi:具具有有包包括括DBGrid,DBGrid,DBNavigator,DBNavigator,DBEdit,DBEdit,DBLookupListBoxDBLookupListBox在在 内内 的的 1515个个 数数 据据 感感 知知 组组 件件,DecisionCube,DecisionCube,DecisionQueryDecisionQuery在在内内的的6 6个个数数据据仓仓库库组组件件和和包包括括QRChart,QRChart,QRExprQRExpr在在内内的的2020多个报表组建,可灵活表现数据,新版的控件更多多个报表组建
40、,可灵活表现数据,新版的控件更多;nVCVC:同数据访问对象,无直接的数据表现对象;同数据访问对象,无直接的数据表现对象;nJavaJava:不不同同的的IDEIDE具具有有不不同同的的组组件件,比比较较著著名名的的有有Jbuilder,PowerJ,Jbuilder,PowerJ,VisualAge for Java.VisualAge for Java.第39页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:SQL语句执行方式语句执行方式nVBVB:将将一一句句SQLSQL串串绑绑定定到到一一个个命命令令对对象象中中,结结果果返返回回到到ResultSetResultSet
41、对对象象中中自行拆取自行拆取;nPBPB:是是一一种种真真正正的的4GL4GL语语言言,可可随随意意直直接接嵌嵌套套SQLSQL语语句句返返回回值值被被赋赋值值到到语语句的变量中,支持语句级游标,存储过程和数据库函数句的变量中,支持语句级游标,存储过程和数据库函数;nC+C+Builder/DephiBuilder/Dephi:使使用用数数据据库库组组件件或或类类完完成成SQLSQL语语句句串串的的执执行行和和提提交交;nVCVC:同数据访问对象,无直接的组件支持同数据访问对象,无直接的组件支持SQLSQL语句执行;语句执行;nJavaJava:SQLJ,Java JDBC API.SQLJ,
42、Java JDBC API.第40页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:面向对象特性面向对象特性n面向对象特性面向对象特性 VBVB:差;差;PBPB:较好;较好;C+Builder/DephiC+Builder/Dephi:很好;很好;VCVC:一般;一般;JavaJava:非常好非常好n跨平台特性跨平台特性VBVB:跨平台性不怎么好,但是可以与跨平台性不怎么好,但是可以与WINDOWS WINDOWS 家族无缝连接。家族无缝连接。PBPB:跨平台性一般跨平台性一般C+Builder/DephiC+Builder/Dephi:WINDOWSWINDOWS家族,家族
43、,Linux Linux VCVC:无无 JavaJava:所有能够运行所有能够运行JavaJava虚拟机的操作系统虚拟机的操作系统n组件技术支持组件技术支持VBVB:COM,ActiveX COM,ActiveX PBPB:COM,JavaBean,Jaguar,UserObjectCOM,JavaBean,Jaguar,UserObject使用:使用:CORBA+Acti veXCORBA+Acti veX C+C+Builder/DephiBuilder/Dephi:COM,COM,ActiveX ActiveX CORBACORBA(本本 身身 自自 带带 CORBACORBA中中 间
44、间 件件VisiBrokerVisiBroker,有丰富向导),有丰富向导)VCVC:COM,ActiveXCOM,ActiveX,CORBA(CORBA(没没有有任任何何IDEIDE支支持持,是是所所有有C C编编译译器器的的功功能能,需需要要CORBACORBA中间件支持中间件支持)JavaJava:JavaBean,CORBA,ActiveX JavaBean,CORBA,ActiveX 第41页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:网络或网络或WEB开发支持开发支持nVBVB:Asp,VBScriptAsp,VBScript,具具有有编编写写DHTMLDHTM
45、L的的简简单单IDEIDE,编编写写静静态态页页面面非非常常方方便;用于网络通讯的支持一般。便;用于网络通讯的支持一般。nPBPB:DynaSript,DynaSript,Web.PBWeb.PB;提提供供了了较较多多动动态态生生成成WebWeb页页面面的的用用户户对对象象和和服服务务以以及及系系统统对对象象,非非常常适适合合编编写写服服务务端端动动态态WebWeb应应用用,有有利利于于商商业业逻逻辑的封装;用于网络通讯的支持不足;静态页面定制支持有限。辑的封装;用于网络通讯的支持不足;静态页面定制支持有限。nC+C+Builder/DephiBuilder/Dephi:ISAPI,WININ
46、ET ISAPI,WININET APIAPI等等各各类类网网络络或或互互联联网网APIAPI可可自自由由而而方方便便的的调调用用;提提供供了了ServerSocket,ClientSocketServerSocket,ClientSocket等等三三十十余余个个组组件件及及类类,用用来来处处理理网网络络通通讯讯控控制制,流流处处理理,Mail,Email,FTP,HTTPMail,Email,FTP,HTTP等等应应用用协议处理以及生成动态页面和商业逻辑的封装;功能强大协议处理以及生成动态页面和商业逻辑的封装;功能强大,使用方便。使用方便。nVCVC:SAPI,WININET SAPI,WI
47、NINET APIAPI等等各各类类网网络络或或互互联联网网APIAPI可可自自由由而而方方便便的的调调用用;提供提供CAsyncSocketCAsyncSocket等数量众多的类;功能强大但使用不太方便。等数量众多的类;功能强大但使用不太方便。nJavaJava:不不可可直直接接调调用用APIAPI但但内内置置非非常常多多的的网网络络及及互互联联网网功功能能;可可利利用用Servlet Servlet API,Java API,Java Bean Bean API,API,以以及及JSPJSP等等协协同同开开发发功功能能强强大大的的WebWeb应应用用;功能强大,对于某些功能强大,对于某些I
48、DEIDE使用不太方便。使用不太方便。第42页,本讲稿共48页常用程序设计语言的比较:常用程序设计语言的比较:综合评价综合评价nVBVB:是是新新人人开开发发与与系系统统无无关关的的综综合合应应用用程程序序的的首首选选;VBVB开开发发效效率率高高,代代码码执执行行效效率率一一般般,但但是是入入门门和和学学习习速速度度快快,有有较较好好的的学学习习氛氛围围和和帮帮助助书书籍籍和和帮帮助助文文档档。但但是是随随着着微微软软的的技技术术的的推推广广,VBVB将将会会逐逐渐渐推推出出历历史舞台。史舞台。nPBPB:是是开开发发大大型型MISMIS及及各各类类数数据据库库跨跨平平台台应应用用的的首首选
49、选;从从数数据据库库前前端端工工具具来来讲讲甚甚至至远远远远超超过过了了OracleOracle的的DevelopDevelop系系列列等等专专门门的的工工具具;从从通通用用语语言言角角度度来来讲讲功功能能也也与与VBVB等等不不相相上上下下;多多媒媒体体和和网网络络功功能能与与其其他他工工具具相相比比较弱。较弱。nC+C+Builder/DephiBuilder/Dephi:是是唯唯一一一一套套能能够够同同时时适适用用于于开开发发数数据据库库应应用用、网网络络及及WebWeb应应用用、分分布布式式应应用用、可可重重用用组组件件、系系统统软软件件、驱驱动动程程序序、多多媒媒体体及及游游戏戏等等
50、所所有有软软件件的的高高效效率率开开发发环环境境;VCLVCL源源码码基基于于Object Object PascalPascal,基础语言不够通用是基础语言不够通用是DephiDephi仅有的不足。仅有的不足。nVCVC:从从功功能能上上讲讲除除了了跨跨平平台台应应用用外外什什么么都都可可开开发发;从从开开发发效效率率角角度度讲讲只只局局限限于于开开发发windowswindows系系统统应应用用、可可重重用用组组件件及及驱驱动动程程序序。因因为为有有微微软软的支持,其自身的基础语言的普及程度高,代码的执行效率高。的支持,其自身的基础语言的普及程度高,代码的执行效率高。nJavaJava:适