面向对象的系统分析与编程语言_第1页
面向对象的系统分析与编程语言_第2页
面向对象的系统分析与编程语言_第3页
面向对象的系统分析与编程语言_第4页
面向对象的系统分析与编程语言_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

面向对象的系统分析与编程语言第1页,共48页,2023年,2月20日,星期四讲座内容一、面向对象的基本原理二、面向对象的系统分析三、常用语言的分析比较第2页,共48页,2023年,2月20日,星期四一、面向对象的基本原理第3页,共48页,2023年,2月20日,星期四连接成员的机制(静态联结与动态关联)生产软件产品什么是面向对象技术以面向对象方法学为基础的软件系统组织和结构设计的工程技术特点: 标准的工艺流程 统一的生产规范内容:面向对象分析 面向对象设计 面向对象程序设计内部组成层次结构思维方法知其然,知其所以然第4页,共48页,2023年,2月20日,星期四面向对象技术及其发展历史从“软件工程”的发展史看面向对象技术出现的必然性面向过程结构化程序设计面向对象程序设计面向机器机器语言助记符语言汇编语言面向机器指令代码FORTRANBASIC面向过程程序设计CPASCAL结构化程序设计C++Java面向对象程序设计面向网络程序设计JavaVs.NetCAR面向网络程序设计第5页,共48页,2023年,2月20日,星期四面向对象方法学基本内涵(1)客观世界的事物由各种各样的实体(对象)构成(2)每个对象都有各自的内部状态和运动(状态)规律(3)根据对象的属性和运动规律的相似性可以将对象分类(4)复杂对象由相对简单的对象组成(5)不同对象的组合及其间的相互作用和联系构成了系统(6)对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应第6页,共48页,2023年,2月20日,星期四对象的模块化在程序实现中将一些密切相关的操作以某种风格汇集在一起,形成相对独立的整体。模块2模块1模块化的特征在于抽象和信息隐藏抽象划分方式与客观事物本来面目相对应信息隐藏内部信息的访问必须通过接口模块化设计遵守的准则:分解与组合(注重:可分解性、可组合性、可理解性)分解组合第7页,共48页,2023年,2月20日,星期四软件重用面向对象技术的发展使得软件重用技术更臻完善和规范:多种重用方式:子程序(Subroutine)、程序包(Package)、库(Library)对象的封装使得对象模块在程序开发者看来是一个黑匣子,它只需通过接口去操作对象和理解对象的行为,而不必关心其内部实现细节,从而程序开发人员能够直接重用已经开发的对象模块对象的继承在另一个角度提供了软件重用方式,即通过继承允许程序开发者自己的对象重用具有相同特性的其它对象的代码面向对象技术中的COM(ComponentObjectModel)等提供了将对象模块组装在一起的同一机制和方法,利用他们应用程序开发人员可以方便地利用已有的对象模块组合在一起,构造出更大规模的应用程序第8页,共48页,2023年,2月20日,星期四对象数据封装(1)问题空间 所有要研究的客观现实的全体称为问题空间或问题域,而把要研究的问题(客观世界中的实体)称之为问题空间的对象

任何一个客观实体都是对象——对象的组成——相互作用(2)解空间 所有的解(程序及执行程序的计算机)组成的集合称为解空间,把解(程序及执行程序的计算机实体)称做解空间的对象

对可解问题空间对象至少有一个解空间对象与其相对应(3)封装 将客观事物抽象为一个相对独立的实体,其中含有该事物的属性及行为第9页,共48页,2023年,2月20日,星期四对象数据封装对象的形态与静态特征问题空间对象图书1MyBook1:CBook书名:程序设计总页数:280版本:2m_pczName:char*=“程序设计”nTotalPage:int=280nEdition:int=2返回书名返回总页数返回版本号char*GetBookName();intGetTotalPage();intGetEdition();分析中的对象设计中的对象人、学生、学校、班级、处、电视、汽车……等都可以被看作对象第10页,共48页,2023年,2月20日,星期四人类认识世界的认知规律之一:——根据对象的属性和运动规律的相似性分类认识和描述相似属性和功能相似的对象构成对象类任何一个具体的对象都是相应对象类的一个实例类与对象的不同←→类的实例化对象类和对象实例对象之间通过消息传递,对象对所接收消息的反应对象之间的相互作用抽象模型SenderReceiver/SenderMessage1ReceiverMessage1Message2第11页,共48页,2023年,2月20日,星期四对象之间的关系(1)一般—特殊结构人类对事物进行分类后,在概念上,一些种类的事物之间存在着联系,一些类之间在行为、属性等方面具有部分相似性,其间存在一般与特殊的对应关系:汽车与轿车、学生与班委会……这种关系不存在于具体对象实例之间,而存在于对象类之间。一般性寓于特殊性之中,体现在一般类对象所具有的属性和操作包含于特殊类对象之中。汽车轿车客车卡车火车客车货车罐车第12页,共48页,2023年,2月20日,星期四对象之间的关系一般类特殊类特殊类的每个对象都为一般类的实例,因此特殊类的对象必将具有相应的一般类的属性和操作—特殊类这种获取属性和方法的方式称为继承由于特殊类(对象)具有一般类的所有属性和操作,所以特殊类的任何一个对象必定是相应一般类的对象,因此这种关系又常称为IS_A_KIND_OF关系如果类A具有类B的全部属性和操作,并且具有一些自己独特的属性和操作,那么A称作B的特殊类,B称作A的一般类

通过在已有类的基础上添加一些特殊的属性和操作形成新类的方式—称为派生CPersonCStudentChar*NameIntNumber轨道衡超偏载轨道衡(2)父类—子类结构(继承、派生)第13页,共48页,2023年,2月20日,星期四单一继承、多重继承一般类一般类特殊类WNDSTRUCTCWindowTreeCScreenObjectCEditTextCWnd一般类特殊类特殊类第14页,共48页,2023年,2月20日,星期四继承异常图例顺序环境属性m1m2m3并发环境属性同步控制部分功能定义部分属性继承需要同步控制改变被迫重定义第15页,共48页,2023年,2月20日,星期四派生是人类认识的深入新的认知经常建立在已有认知的基础上,在已有知识的基础上通过进行新探索、新认识,在原有描述中添加新成分形成新认识的描述鸟类北京麻雀东北麻雀南方麻雀麻雀类孔雀类…

……

…继承代表着认识的连续性第16页,共48页,2023年,2月20日,星期四二、面向对象的系统分析第17页,共48页,2023年,2月20日,星期四需求分析与建模在关系数据库设计的实体关系模型的基础上扩展了类、继承和行为等概念得到。需求的描述,而不是问题的解决。哪些特性可选、哪些必需从模糊的设计和实现需求中分离出正确的需求产生需求建立模型开发者管理者用户问题描述对象模型动态模型函数模型与用户磋商学科知识实际经验第18页,共48页,2023年,2月20日,星期四面向对象的分析和设计 分析模型 设计模型 实现模型面向对象分析OOA面向对象设计OOD面向对象实现OOI静态特性:类层次关系模型动态特性:状态图、事件踪迹图行为功能:数据流图第19页,共48页,2023年,2月20日,星期四静态结构分析系统消息各个具体控件消息消息窗口按钮图标菜单确定0..1帮助0..1消息10..1文件0..1编辑0..1消息窗口按钮确定0..1图标消息0..1菜单文件0..1编辑0..1帮助0..1第20页,共48页,2023年,2月20日,星期四动态行为分析对象生命周期

对象的动态行为包括两个方面的内容: 单个对象自身生命周期演化; 整个对象系统中对象间消息传递及相互作用对象状态导致状态转换的事件状态转换时的动作S1S2S3S4event1event2event3event4状态转换图第21页,共48页,2023年,2月20日,星期四动态行为分析(数据流图)施动者通过产生或使用数据驱动数据流图的主动对象,与数据流图的输入输出联系在一起。分析采集数据屏幕显示数据处理数据存储

数据流图中为后继访问而存储数据的被动对象。与施动者不同,它不产生任何操作,仅对存储和访问数据的请求响应。读数气温最高温度最低温度第22页,共48页,2023年,2月20日,星期四面向对象的系统设计分析期间建立系统模型设计期间模型问题空间对象面向对象设计阶段在分析模型基础上进行未来软件的系统设计、对象设计,从而得到设计模型,该模型包含了解决问题的方案和策略。是确定问题具体解决方案的过程第23页,共48页,2023年,2月20日,星期四系统设计1.系统层次结构设计系统设计是以软件方式实现系统功能而进行软件的系统结构设计及程序实现中的总体的、策略性的解决方案的制定高层次接口模块1模块2模块3应用程序模块1模块2模块3核心模块1模块2模块3驱动模块1模块2模块3硬件模块1模块2模块3对软件系统进行的整体划分。水平方向代表系统的不同抽象级别与层次;纵向表明每个层次所提供的功能模块时间空间软件硬件单一一般效率可维第24页,共48页,2023年,2月20日,星期四2系统数据存储设计系统中各种数据对象的存储方式设计:内存数据结构、文件、数据库等如分布环境中对象的存储结构与单机环境下不同、持久对象等3系统资源访问设计确定需要使用的资源,包括访问机制和访问安全性机制等如:访问队列等4网络与分布设计如何将问题划分给不同节点进行分布式运算,需考虑网络流量、节点计算能力、系统效率6互操作设计5并发性设计并发性控制,多进程、多线程等文件并行访问,使用临界区、事件、互斥量、信号灯等相对于Client/Server而言。多个进程之间可能需要为对方提供服务。可能比较复杂,因为有可能存在平台异构问题。例外、边界也许要处理系统设计第25页,共48页,2023年,2月20日,星期四原则:复用性可扩充性健壮性协作性面向对象程序设计:使用程序设计语言将设计方案加以表达类定义静态模型动态模型类的实现约束实现于代码中增强系统健壮性面向对象程序设计的原则第26页,共48页,2023年,2月20日,星期四加强软件可复用性的原则:保证操作的内聚性

功能相对单一减少单一功能模块代码规模

函数代码的适当规模保证操作对外接口的一致性

相似操作具有一致性接口分解设计中的操作

以相对单一和基本的操作联合实现设计中的操作操作均匀覆盖数据

考虑操作的普适性加强封装

操作只针对内部数据,实现与接口分离减少操作耦合

减少操作之间的相关,尽量上下文无关第27页,共48页,2023年,2月20日,星期四综合考虑效率与通用原则效率的考虑 好的算法与数据结构 各种隐式调用(=、构造函数、参数传递) 动态绑定内存管理 动态分配(new错)与内存泄漏(leak)

VisualC++中内存泄漏的自动侦测封装与通用 尽量保持封装性与通用性的统一类型 类型检查有助于发现错误,尤其是参数、赋值方面参数化类持久对象约束可示化开发环境第28页,共48页,2023年,2月20日,星期四三、常用语言的分析比较第29页,共48页,2023年,2月20日,星期四常用面向对象的程序语言VBPBC/C++/VCDelphiJavaVS.Net(C#,VB,VC++,VJ)其它第30页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:要增加代码的可重用性,要考虑以下几点:

代码的可读性。如格式、是否接近英语语法和单词。代码的表达能力,也就是简单性,能用最少的语句和单词实现同样的功能。代码的结构性,如函数、模块、类。语言功能的强大从下面几点来说:

是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有强大的库支持。语法功能是否强大,比如是否有出错处理。是否有指针。

语言的友好性:语言包的大小,语言包越小,学习越简单。语言是否有友好的编辑调试环境。语言的可视化和集成编程环境。第31页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:VB全称VisualBasic,它是以Basic语言作为其基本语言的一种可视化编程工具。VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是VB不具备跨平台特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台。它对组件技术的支持是基于COM和ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性。VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编。具有面向对象特性,比VC好,但也不算强。网络功能和数据库功能也没有非常突出的表现。综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。第32页,共48页,2023年,2月20日,星期四常用程序设计语言的比较: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五花八门,有些又未必全面支援最新的标准,造成学习的难度大、统一性差的问题。第33页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:VC++是基于MFC库的可视化的开发工具,从总体上说它是一个功能强大但是不便使用的一种工具。它在网络开发和多媒体开发都具有不俗的表现,帮助系统也做得非常不错但是虽然是使用C++作为基本语言,但它在面向对象特性上却不够好,主要是为了兼容C的程序,结果顾此失彼;在组件支持上也不太好。除了支持COM,ActiveX外还支持CORBA,但是没有任何IDE支持,是所有C编译器的功能,需要CORBA中间件支持。最大的问题是开发效率不高。第34页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:PB全称PowerBuilder,是开发MIS系统和各类数据库跨平台的首选,使用简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。PB是一种真正的4GL语言(第四代语言),可随意直接嵌套SQL语句返回值被赋值到语句的变量中,支持存储过程和数据库函数,数据访问中具有无可比拟的灵活性。但是它在系统底层开发中犯了跟VB一样的错误,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编。在网络开发中提供了较多动态生成Web页面的用户对象和服务以及系统对象,非常适合编写服务端动态Web应用,有利于商业逻辑的封装;但是用于网络通讯的支持不足;静态页面定制支持有限,使得PB在网络方面的应用也不能非常广泛。具有面向对象特性,相对而言比VB要好些。第35页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:C++Builder,Delphi它们都是基于VCL库的可视化开发工具,它们在组件技术的支持、数据库支持、系统底层开发支持、网络开发支持、面向对象特性等各方面都有相当不错的表现。学习使用较为容易,充分提现了所见即所得的可视化开发方法,开发效率高。由于两者都是Borland公司的产品,自然继承了该公司一贯以来的优良传统:代码执行效率高。但是,它们并不是毫无缺点,它们所作的最大不足之处就是他们的帮助系统在众多的编程工具中是属于比较差的。C++Builder的VCL库是基于Objectpascal(面向对象pascal),使得C++Builder在程序的调试执行上都面向落后于其他编程工具。而Delphi则是它的语言不够广泛,开发系统软件功能不足。

第36页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:Java目前比较出名的是Borland出的JBuilder和IBM出的VisualAgeforJava,两种工具都有一定数量的是用人群。JBuilder继承了C++Builder/Delphi的特点,在可视化上做得非常不错,使用简便。由于Java本身语言的特点使得他们在网络开发中具有高人一等的表现,而且面向对象特性高,支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的开发中占据越来越重要的地位。但是在系统底层开发和多媒体开发中却表现得并不让人满意,这与设计Java的意图有关,其主要还是跨平台。第37页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:数据访问对象VB:DAO,ADO,RDO功能相仿;PB:Transaction,DwControl,可绑定任何SQL语句和存储过程,数据访问具有无与比拟的灵活性;C++Builder/Dephi:具有包括DataSource,Table,Query,Midas,ADO在内的二十多个组件和类完成数据访问;VC:同VB,但有不少类库可供使用,但极不方便,开发效率很低;Java:JavaJDBCAPI,不同的IDE具有不同的组件

第38页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:数据表现对象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,VisualAgeforJava.

第39页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:SQL语句执行方式VB:将一句SQL串绑定到一个命令对象中,结果返回到ResultSet对象中自行拆取;PB:是一种真正的4GL语言,可随意直接嵌套SQL语句返回值被赋值到语句的变量中,支持语句级游标,存储过程和数据库函数;C++Builder/Dephi:使用数据库组件或类完成SQL语句串的执行和提交;VC:同数据访问对象,无直接的组件支持SQL语句执行;Java:SQLJ,JavaJDBCAPI.

第40页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:面向对象特性面向对象特性

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+ActiveX

C++Builder/Dephi:COM,ActiveXCORBA(本身自带CORBA中间件VisiBroker,有丰富向导)

VC:COM,ActiveX,CORBA(没有任何IDE支持,是所有C编译器的功能,需要CORBA中间件支持)

Java:JavaBean,CORBA,ActiveX第41页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:网络或WEB开发支持VB:Asp,VBScript,具有编写DHTML的简单IDE,编写静态页面非常方便;用于网络通讯的支持一般。PB:DynaSript,Web.PB;提供了较多动态生成Web页面的用户对象和服务以及系统对象,非常适合编写服务端动态Web应用,有利于商业逻辑的封装;用于网络通讯的支持不足;静态页面定制支持有限。C++Builder/Dephi:ISAPI,WININETAPI等各类网络或互联网API可自由而方便的调用;提供了ServerSocket,ClientSocket等三十余个组件及类,用来处理网络通讯控制,流处理,Mail,Email,FTP,HTTP等应用协议处理以及生成动态页面和商业逻辑的封装;功能强大,使用方便。VC:SAPI,WININETAPI等各类网络或互联网API可自由而方便的调用;提供CAsyncSocket等数量众多的类;功能强大但使用不太方便。Java:不可直接调用API但内置非常多的网络及互联网功能;可利用ServletAPI,JavaBeanAPI,以及JSP等协同开发功能强大的Web应用;功能强大,对于某些IDE使用不太方便。第42页,共48页,2023年,2月20日,星期四常用程序设计语言的比较:综合评价VB:是新人开发与系统无关的综合应用程序的首选;VB开发效率高,代码执行效率一般,但是入门和学习速度快,有较好的学习氛围和帮助书籍和帮助文档。但是随着微软的.net技术的推广,VB将会逐渐推出历史舞台。PB:是开发大型MIS及各类数据库跨平台应用的首选;从数据库前端工具来讲甚至远远超过了Oracle的Develop系列等专门的工具;从通用语言角度来讲功能也与VB等不相上下;多媒体和网络功能与其他工具相比较弱。C++Builder/Dephi:是唯一一套能够同时适用于开发

温馨提示

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

评论

0/150

提交评论