




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的系统分析与编程语言,北京东方瑞威科技发展有限公司 2007.03.17,计算机软件培训讲座,讲座内容,一、面向对象的基本原理 二、面向对象的系统分析 三、常用语言的分析比较,一、面向对象的基本原理,连接成员的机制(静态联结与动态关联),生产软件产品,什么是面向对象技术,以面向对象方法学为基础的软件系统组织和结构设计的工程技术,内部组成 层次结构,面向对象技术及其发展历史,从“软件工程” 的发展史看面向对象技术出现的必然性,面向过程,结构化 程序设计,面向对象 程序设计,面向机器,机器语言 助记符语言 汇编语言 面向机器 指令代码,FORTRAN BASIC 面向过程 程序设计,C PASCAL 结构化 程序设计,C+ Java 面向对象 程序设计,面向对象方法学基本内涵,(1) 客观世界的事物由各种各样的实体(对象)构成 (2) 每个对象都有各自的内部状态和运动(状态)规律 (3) 根据对象的属性和运动规律的相似性可以将对象分类 (4) 复杂对象由相对简单的对象组成 (5) 不同对象的组合及其间的相互作用和联系构成了系统 (6) 对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应,对象的模块化,在程序实现中将一些密切相关的操作以某种风格汇集在一起,形成相对独立的整体。,模块化的特征在于抽象和信息隐藏,抽象,划分方式与客观事物本来面目相对应,信息隐藏,内部信息的访问必须通过接口,模块化设计遵守的准则:分解与组合 (注重:可分解性、可组合性、可理解性),软件重用,面向对象技术的发展使得软件重用技术更臻完善和规范 :,多种重用方式:子程序(Subroutine)、程序包(Package)、库(Library),对象的封装使得对象模块在程序开发者看来是一个黑匣子,它只需通过接口去操作对象和理解对象的行为,而不必关心其内部实现细节,从而程序开发人员能够直接重用已经开发的对象模块 对象的继承在另一个角度提供了软件重用方式,即通过继承允许程序开发者自己的对象重用具有相同特性的其它对象的代码 面向对象技术中的COM(Component Object Model)等提供了将对象模块组装在一起的同一机制和方法,利用他们应用程序开发人员可以方便地利用已有的对象模块组合在一起,构造出更大规模的应用程序,对象数据封装,(1) 问题空间 所有要研究的客观现实的全体称为问题空间或问题域,而把要研究的问题(客观世界中的实体)称之为问题空间的对象 任何一个客观实体都是对象 对象的组成相互作用,(2) 解空间 所有的解(程序及执行程序的计算机)组成的集合称为解空间,把解(程序及执行程序的计算机实体)称做解空间的对象 对可解问题空间对象至少有一个解空间对象与其相对应,(3) 封装 将客观事物抽象为一个相对独立的实体,其中含有该事物的属性及行为,对象数据封装,对象的形态与静态特征,问题空间对象,人、学生、学校、班级、处、电视、汽车等都可以被看作对象,人类认识世界的认知规律之一: 根据对象的属性和运动规律的相似性分类认识和描述 相似属性和功能相似的对象构成对象类 任何一个具体的对象都是相应对象类的一个实例 类与对象的不同类的实例化,对象类和对象实例,对象之间通过消息传递,对象对所接收消息的反应,对象之间的相互作用抽象模型,对象之间的关系,(1) 一般特殊结构,人类对事物进行分类后,在概念上,一些种类的事物之间存在着联系,一些类之间在行为、属性等方面具有部分相似性,其间存在一般与特殊的对应关系:汽车与轿车、学生与班委会 这种关系不存在于具体对象实例之间,而存在于对象类之间。 一般性寓于特殊性之中,体现在一般类对象所具有的属性和操作包含于特殊类对象之中。,对象之间的关系,特殊类的每个对象都为一般类的实例,因此特殊类的对象必将具有相应的一般类的属性和操作特殊类这种获取属性和方法的方式称为继承,由于特殊类(对象)具有一般类的所有属性和操作,所以特殊类的任何一个对象必定是相应一般类的对象,因此这种关系又常称为IS_A_KIND_OF关系,如果类A具有类B的全部属性和操作,并且具有一些自己独特的属性和操作,那么A称作B的特殊类,B称作A的一般类,通过在已有类的基础上添加一些特殊的属性和操作形成新类的方式称为派生,(2) 父类子类结构(继承、派生),单一继承、多重继承,继承异常图例,同步控制部分,功能定义部分,派生是人类认识的深入,新的认知经常建立在已有认知的基础上,在已有知识的基础上通过进行新探索、新认识,在原有描述中添加新成分形成新认识的描述,继承代表着认识的连续性,二、面向对象的系统分析,需求分析与建模,在关系数据库设计的实体关系模型的基础上扩展了类、继承和行为等概念得到。,需求的描述,而不是问题的解决。 哪些特性可选、哪些必需 从模糊的设计和实现需求中分离出正确的需求,面向对象的分析和设计,分析模型 设计模型 实现模型,静态特性:类层次关系模型 动态特性:状态图、事件踪迹图 行为功能:数据流图,静态结构分析,系统消息各个具体控件消息,动态行为分析,对象生命周期,对象的动态行为包括两个方面的内容:,单个对象自身生命周期演化; 整个对象系统中对象间消息传递及相互作用,状态转换图,动态行为分析(数据流图),施动者 通过产生或使用数据驱动数据流图的主动对象,与数据流图的输入输出联系在一起。,数据存储 数据流图中为后继访问而存储数据的被动对象。与施动者不同, 它不产生任何操作,仅对存储和访问数据的请求响应。,面向对象的系统设计,面向对象设计阶段在分析模型基础上进行未来软件的系统设计、对象设计,从而得到设计模型,该模型包含了解决问题的方案和策略。是确定问题具体解决方案的过程,系统设计,1. 系统层次结构设计,系统设计是以软件方式实现系统功能而进行软件的系统结构设计及 程序实现中的总体的、策略性的解决方案的制定,对软件系统进行的整体划分。水平方向代表系统的不同抽象级别与层次;纵向表明每个层次所提供的功能模块,2 系统数据存储设计,系统中各种数据对象的存储方式设计:内存数据结构、文件、数据库等 如分布环境中对象的存储结构与单机环境下不同、持久对象等,3 系统资源访问设计,确定需要使用的资源,包括访问机制和访问安全性机制等 如:访问队列等,4 网络与分布设计,如何将问题划分给不同节点进行分布式运算,需考虑网络流量、节点计算能力、系统效率,6 互操作设计,5 并发性设计,并发性控制,多进程、多线程等 文件并行访问,使用临界区、事件、互斥量、信号灯等,相对于Client/Server而言。多个进程之间可能需要为对方提供服务。 可能比较复杂,因为有可能存在平台异构问题。,例外、边界也许要处理,系统设计,原则: 复用性 可扩充性 健壮性 协作性,面向对象程序设计:使用程序设计语言将设计方案加以表达,面向对象程序设计的原则,加强软件可复用性的原则:,保证操作的内聚性 功能相对单一 减少单一功能模块代码规模 函数代码的适当规模 保证操作对外接口的一致性 相似操作具有一致性接口 分解设计中的操作 以相对单一和基本的操作联合实现设计中的操作 操作均匀覆盖数据 考虑操作的普适性 加强封装 操作只针对内部数据,实现与接口分离 减少操作耦合 减少操作之间的相关,尽量上下文无关,综合考虑效率与通用原则,效率的考虑 好的算法与数据结构 各种隐式调用(=、构造函数、参数传递) 动态绑定 内存管理 动态分配(new错)与内存泄漏(leak) Visual C+中内存泄漏的自动侦测 封装与通用 尽量保持封装性与通用性的统一 类型 类型检查有助于发现错误,尤其是参数、赋值方面 参数化类 持久对象 约束 可示化开发环境,三、常用语言的分析比较,常用面向对象的程序语言,VB PB C/C+/VC Delphi Java VS.Net (C#, VB, VC+, VJ) 其它,常用程序设计语言的比较:,要增加代码的可重用性,要考虑以下几点: 代码的可读性。如格式、是否接近英语语法和单词。 代码的表达能力,也就是简单性,能用最少的语句和单词实现同样的功能。 代码的结构性,如函数、模块、类。 语言功能的强大从下面几点来说: 是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有强大的库支持。 语法功能是否强大,比如是否有出错处理。是否有指针。 语言的友好性: 语言包的大小,语言包越小,学习越简单。 语言是否有友好的编辑调试环境。 语言的可视化和集成编程环境。,常用程序设计语言的比较:VB,全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。 VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是VB不具备跨平台特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台。 它对组件技术的支持是基于COM和ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性。 VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编。 具有面向对象特性,比VC好,但也不算强。网络功能和数据库功能也没有非常突出的表现。 综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。,常用程序设计语言的比较:C/C+,自从 C 发明了以后,取代了汇编语言在操作系统编程的领导地位。各种操作系统的编程接口的默认语言都是 C 语言。 C+ 是 C 语言的加强版,增加了面向对象和其他有用的功能,编程更方便轻松;C+ 亦支援大部分 C 的程序,大部分 C 编译器也支援 C+ 。 在 Unix-like 上编写图形界面程序,有两个选择 KDE 和 Gnome KDE 更成熟,但它使用了不是开源的 Qt 函数库; Gnome 支持多语言和面向对象的程序间的协同,有它的 GUI 工具 GTK 。 在 Windows 环境中,通常使用 VC,但由于VC 的编译器和 API 太复杂,难于掌握,并非开放源代码的工具。其他选择有从 Unix-like 系统移植过来的 djgpp、 mingw 。 和其他语言相比,虽然 C 和 C+ 都已经定下了其标准,但编译器、函数库、操作系统 API 五花八门,有些又未必全面支援最新的标准,造成学习的难度大、统一性差的问题。,常用程序设计语言的比较:VC+,是基于MFC库的可视化的开发工具,从总体上说它是一个功能强大但是不便使用的一种工具。 它在网络开发和多媒体开发都具有不俗的表现,帮助系统也做得非常不错但是虽然是使用C+作为基本语言,但它在面向对象特性上却不够好,主要是为了兼容C的程序,结果顾此失彼;在组件支持上也不太好。 除了支持COM,ActiveX外还支持CORBA,但是没有任何IDE支持,是所有C编译器的功能, 需要CORBA中间件支持。 最大的问题是开发效率不高。,常用程序设计语言的比较:PB,全称PowerBuilder,是开发MIS系统和各类数据库跨平台的首选,使用简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。 PB是一种真正的4GL语言(第四代语言),可随意直接嵌套SQL语句返回值被赋值到语句的变量中,支持存储过程和数据库函数,数据访问中具有无可比拟的灵活性。 但是它在系统底层开发中犯了跟VB一样的错误,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编。 在网络开发中提供了较多动态生成Web页面的用户对象和服务以及系统对象,非常适合编写服务端动态Web应用,有利于商业逻辑的封装;但是用于网络通讯的支持不足;静态页面定制支持有限,使得PB在网络方面的应用也不能非常广泛。 具有面向对象特性,相对而言比VB要好些。,常用程序设计语言的比较:C+Builder, Delphi,它们都是基于VCL库的可视化开发工具,它们在组件技术的支持、数据库支持、系统底层开发支持、网络开发支持、面向对象特性等各方面都有相当不错的表现。 学习使用较为容易,充分提现了所见即所得的可视化开发方法,开发效率高。 由于两者都是Borland 公司的产品,自然继承了该公司一贯以来的优良传统:代码执行效率高。 但是,它们并不是毫无缺点,它们所作的最大不足之处就是他们的帮助系统在众多的编程工具中是属于比较差的。 C+Builder的VCL库是基于Object pascal(面向对象pascal),使得C+Builder在程序的调试执行上都面向落后于其他编程工具。而Delphi则是它的语言不够广泛,开发系统软件功能不足。,常用程序设计语言的比较:Java,目前比较出名的是Borland出的JBuilder和IBM出的Visual Age for Java,两种工具都有一定数量的是用人群。 JBuilder继承了C+Builder/Delphi的特点,在可视化上做得非常不错,使用简便。 由于Java本身语言的特点使得他们在网络开发中具有高人一等的表现,而且面向对象特性高,支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的开发中占据越来越重要的地位。 但是在系统底层开发和多媒体开发中却表现得并不让人满意,这与设计Java的意图有关,其主要还是跨平台。,常用程序设计语言的比较:数据访问对象,VB:DAO,ADO,RDO功能相仿; PB:Transaction,DwControl,可绑定任何SQL语句和存储过程,数据访问具有无与比拟的灵活性; C+ Builder/Dephi:具有包括DataSource,Table,Query,Midas,ADO在内的二十多个组件和类完成数据访问; VC:同VB,但有不少类库可供使用,但极不方便,开发效率很低; Java:Java JDBC API,不同的IDE具有不同的组件,常用程序设计语言的比较:数据表现对象,VB:DBGriD,与数据库相关的数据表现控件只有此一种,只能表现简单表格数据,表现手段单一; PB:DataWindow对象(功能异常强大,其资源描述语句构成类似HTML的另外一种语言,可在其中插入任何对象,具有包括DBGrid在内的数百种数据表现方法),只此一项功能就注定了PB在数据库的功能从诞生的那一天起就远远超过了某些开发工具今天的水平; C+ Builder/Dephi:具有包括DBGrid, DBNavigator, DBEdit, DBLookupListBox在内的15个数据感知组件,DecisionCube, DecisionQuery在内的6个数据仓库组件和包括QRChart, QRExpr在内的20多个报表组建,可灵活表现数据,新版的控件更多; VC:同数据访问对象,无直接的数据表现对象; Java:不同的IDE具有不同的组件,比较著名的有Jbuilder,PowerJ, VisualAge for Java.,常用程序设计语言的比较:SQL语句执行方式,VB:将一句SQL串绑定到一个命令对象中,结果返回到ResultSet对象中自行拆取; PB:是一种真正的4GL语言,可随意直接嵌套SQL语句返回值被赋值到语句的变量中,支持语句级游标,存储过程和数据库函数; C+ Builder/Dephi:使用数据库组件或类完成SQL语句串的执行和提交; VC:同数据访问对象,无直接的组件支持SQL语句执行; Java:SQLJ,Java JDBC API.,常用程序设计语言的比较:面向对象特性,面向对象特性 VB:差; PB:较好; C+ Builder/Dephi:很好; VC:一般; Java:非常好 跨平台特性 VB:跨平台性不怎么好,但是可以与WINDOWS 家族无缝连接。 PB:跨平台性一般 C+ Builder/Dephi:WINDOWS家族,Linux VC:无 Java:所有能够运行Java虚拟机的操作系统 组件技术支持 VB:COM,ActiveX PB:COM,JavaBean,Jaguar,UserObject使用:CORBA+Acti veX C+ Builder/Dephi:COM, ActiveX CORBA(本身自带CORBA中间件VisiBroker,有丰富向导) VC:COM,ActiveX,CORBA(没有任何IDE支持,是所有C编译器的功能,需要CORBA中间件支持) Java:JavaBean, CORBA, ActiveX,常用程序设计语言的比较:网络或WEB开发支持,VB:Asp,VBScript,具有编写DHTML的简单IDE,编写静态页面非常方便;用于网络通讯的支持一般。 PB:DynaSript, Web.PB;提供了较多动态生成Web页面的用户对象和服务以及系统对象,非常适合编写服务端动态Web应用,有利于商业逻辑的封装;用于网络通讯的支持不足;静态页面定制支持有限。 C+ Builder/Dephi:ISAPI,WININET API等各类网络或互联网API可自由而方便的调用;提供了ServerSocket,ClientSocket等三十余个组件及类,用来处理网络通讯控制,流处理,Mail,Email,FTP,HTTP等应用协议处理以及生成动态页面和商业逻辑的封装;功能强大,使用方便。 VC:SAPI,WININET API等各类网络或互联网API可自由而方便的调用;提供CAsyncSocket等数量众多的类;功能强大但使用不太方便。 Java:不可直接调用API但内置非常多的网络及互联网功能;可利用Servlet API,Java Bean API,以及JSP等协同开发功能强大的Web应用;功能强大,对于某些IDE使用不太方便。,常用程序设计语言的比较:综合评价,VB:是新人开发与系统无关的综合应用程序的首选;VB开发效率高,代码执行效率一般,但是入门和学习速度快,有较好的学习氛围和帮助书籍和帮助文档。但是随着微软的.net技术的推广,VB将会逐渐推出历史舞台。 PB:是开发大型MIS及各类数据库跨平台应用的首选;从数据库前端工具来讲甚至远远超过了Oracle的Develop系列等专门的工具;从通用语言角度来讲功能也与VB等不相上下;多媒体和网络功能与其他工具相比较弱。 C+ Builder/Dephi:是唯一一套能够同时适用于开发数据库应用、网络及Web应用、分布式应用、可重用组件、系统软件、驱动程序、多媒体及游戏等所有软件的高效率开发环境;VCL源码基于Object Pascal,基础语言不够通用是Dephi仅有的不足。 VC:从功能上讲除了跨平台应用外什么都可开发;从开发效率角度讲只局限于开发windows系统应用、可重用组件及驱动程序。因为有微软的支持,其自身的基础语言的普及程度高,代码的执行效率高。 Java:适用于开发除了系统软件、驱动程序、高性能实时系统、大规模图像处理以外的其它应用。在管理信息系统中很少有人会选择Java,一是由于其开发环境的配置较难,和数据库连接时较为复杂,对开发人员的开发经验和学习时间都要很高要求,但是Java的强大网络功能和真正的面向对象特性决定了Java的未来,将在一个较为长期的时段里可以与微软家族抗衡。,.NET Framework .NET Framework 类库 VS.NET中的企业应用程序模板,VS.NET软件构架的认识,.NET Framework基本概念,是一个基于Internet高度分布式计算环境的以简化应用程序开发为目的的全新计算平台 Common Language Runtime (CLR) 一个在运行时管理代码的代理,提供核
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级健身教练专业资格认证考试模拟题及答案
- 2025年人力资源师考试模拟题及备考指南
- 2025年精密温控节能设备项目合作计划书
- 2025年脚踏自行车及其零件合作协议书
- 2025年智能计量终端项目建议书
- 2025年电容器用钽粉合作协议书
- 抛物线课件教学课件
- 2025年建筑材料及制品专用生产机械合作协议书
- 抗菌药物教学课件
- 2025年安徽省蚌埠市龙子湖区中考数学三模试卷(含答案)
- 2025年市级科技馆招聘笔试重点
- 2025年度房屋拆迁补偿安置房买卖协议
- 2025西电考试题及答案
- 南昌市小学二年级 2025-2026 学年数学秋季开学摸底测试卷(人教版)含解读答案
- 2025年先兆流产的护理查房
- 2025年部编版新教材语文九年级上册教学计划(含进度表)
- 食堂工作人员食品安全培训
- (高清版)DB11∕T 2440-2025 学校食堂病媒生物防制规范
- 战场急救知识
- GB/T 7324-2010通用锂基润滑脂
- 高压燃气管道带压不停输封堵改管技术
评论
0/150
提交评论