面向对象分析和设计讲座面向对象方法学.ppt
《面向对象分析和设计讲座面向对象方法学.ppt》由会员分享,可在线阅读,更多相关《面向对象分析和设计讲座面向对象方法学.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、上海交通大学计算机系上海交通大学计算机系面向对象分析和设计讲座面向对面向对象分析和设计讲座面向对象方法学象方法学现在学习的是第1页,共74页内容内容w历史回眸历史回眸w开发模式开发模式w传统方法学传统方法学w面向对象方法学面向对象方法学w面向对象基本概念面向对象基本概念w对象组成对象组成w面向对象分析面向对象分析/设计设计/编程编程w信息系统建模信息系统建模现在学习的是第2页,共74页1.历史回眸历史回眸w现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于的图灵于1937年提出的图灵机模型。年提出的图灵机模型。随后不到十年,
2、电子随后不到十年,电子计算机就诞生了计算机就诞生了(1945)。(埃尼亚克埃尼亚克)w它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件开发开发(如果可以称之为软件开发的话如果可以称之为软件开发的话)与现在的大不相同。为了与现在的大不相同。为了算一道题,要有人事先把完成加减乘除等各类运算的部件像算一道题,要有人事先把完成加减乘除等各类运算的部件像搭积木那样搭起来,如果换一道题,则要把这些部件分解开搭积木那样搭起来,如果换一道题,则要把这些部件分解开来,根据新的要求重新搭建,效率极低来,根据新的要求重新搭建,效率极低(与现在比与现
3、在比)。现在学习的是第3页,共74页w现代电子计算机的体系结构及实际计算模型来自冯现代电子计算机的体系结构及实际计算模型来自冯.诺依曼的诺依曼的思想。思想。1946年他和他的同事们发现了埃尼亚克的缺陷,发年他和他的同事们发现了埃尼亚克的缺陷,发表了一份报告,提出了程序放入内存,顺序执行的思想,这表了一份报告,提出了程序放入内存,顺序执行的思想,这样,当算一道新题时就只需采取改变计算机中的程序的样,当算一道新题时就只需采取改变计算机中的程序的“软软”的方法。的方法。w英国的科学家维尔克斯实现了冯英国的科学家维尔克斯实现了冯.诺依曼的思想,领导研制了诺依曼的思想,领导研制了“艾克萨克艾克萨克”。w
4、因此,现在的计算机通常被称为冯因此,现在的计算机通常被称为冯.诺依曼计算机。诺依曼计算机。现在学习的是第4页,共74页w早期程序员们使用机器语言来进行编程运算;随着编译技术早期程序员们使用机器语言来进行编程运算;随着编译技术的出现,人们设计了许多更高级别的语言;这些语言摆脱了的出现,人们设计了许多更高级别的语言;这些语言摆脱了机器语言繁琐的细节,更接近于人的自然语言,迅速流行开机器语言繁琐的细节,更接近于人的自然语言,迅速流行开来。来。w据统计,全世界的高级语言起码有几千种,但从可计算性的角度看,据统计,全世界的高级语言起码有几千种,但从可计算性的角度看,它们的计算能力都等价于图灵机。它们的计
5、算能力都等价于图灵机。已经证明,一个计算机语言,已经证明,一个计算机语言,只要除了赋值语句之外,还包括顺序语句,条件语句和循环语句,只要除了赋值语句之外,还包括顺序语句,条件语句和循环语句,它的计算能力即相当于图灵机。它的计算能力即相当于图灵机。这里当然要排除其他技术因素的这里当然要排除其他技术因素的影响,如程序长度,变量个数,数据精度等。影响,如程序长度,变量个数,数据精度等。现在学习的是第5页,共74页w由于图灵机的想法是把问题转化为一步一步按规由于图灵机的想法是把问题转化为一步一步按规则执行的机械求解过程,各种计算机语言也不过则执行的机械求解过程,各种计算机语言也不过都是某种形式语言,因
6、此软件开发的过程实质上都是某种形式语言,因此软件开发的过程实质上就是程序员们对客观世界问题域的形式化的过程。就是程序员们对客观世界问题域的形式化的过程。w程序员们先建立问题的模型程序员们先建立问题的模型(形式化形式化),再用计算,再用计算机语言加以合适的表达,最后再输入计算机里进机语言加以合适的表达,最后再输入计算机里进行计算。行计算。现在学习的是第6页,共74页w最早的高级语言大约诞生于最早的高级语言大约诞生于1945年,是德国人年,是德国人楚译为他的楚译为他的Z-4计算机设计的计算机设计的PlanCalcul,比第,比第一台电子计算机还早几个月;在电子计算机上实一台电子计算机还早几个月;在
7、电子计算机上实现的第一个高级语言是美国尤尼法克公司于现的第一个高级语言是美国尤尼法克公司于1952年研制成功的年研制成功的ShortCode;而真正得到推;而真正得到推广使用,至今仍在流行的第一个高级语言是美国广使用,至今仍在流行的第一个高级语言是美国的计算机科学家巴科斯设计,并于的计算机科学家巴科斯设计,并于1956年首先年首先在在IBM公司的计算机上实现的公司的计算机上实现的FORTRAN语言。语言。现在学习的是第7页,共74页w早期的高级语言主要是应用于科学和工程计算,早期的高级语言主要是应用于科学和工程计算,其代表作有其代表作有FORTRAN和和ALGOL60。计算机进。计算机进入商业
8、和行政管理领域以后,出现了入商业和行政管理领域以后,出现了COBOL和和RPG等便于商界使用的语言。等便于商界使用的语言。w这类语言和数据库技术,图形界面技术这类语言和数据库技术,图形界面技术(可视化可视化编程编程),面向对象的思想及,面向对象的思想及RAD(RapidApplicationDevelopment)的概念相结合,形的概念相结合,形成了一批更方便使用的所谓第四代语言成了一批更方便使用的所谓第四代语言(4GL),如如Powerbuilder,Delphi,VB等。等。现在学习的是第8页,共74页w前一类应用于科学和工程计算的大型语言相对来前一类应用于科学和工程计算的大型语言相对来说
9、更为基础,因而也更为灵活,应用范围更为广说更为基础,因而也更为灵活,应用范围更为广泛。泛。在在FORTRAN,BASIC(学习型学习型)之后,自之后,自70年代以来,模块特征更明显,简单易用,可年代以来,模块特征更明显,简单易用,可靠性强的靠性强的PASCAL异军突起,在世界范围内广泛异军突起,在世界范围内广泛流行。流行。但进入但进入80年代以后,它的地位又逐渐为年代以后,它的地位又逐渐为更实用的更实用的C语言替代。语言替代。到现在,到现在,C语言的地位已语言的地位已相当于一种相当于一种“高级汇编语言高级汇编语言”了。了。现在学习的是第9页,共74页w80年代后期,面向对象的语言开始浮出水面,
10、年代后期,面向对象的语言开始浮出水面,C+借助使用借助使用C语言的庞大程序员队伍,一举建语言的庞大程序员队伍,一举建立了面向对象语言的老大地位。从而立了面向对象语言的老大地位。从而OO的思想的思想正式统治了整个软件开发界。正式统治了整个软件开发界。C+的流行甚至的流行甚至使得美国军方从使得美国军方从80年开始大力扶植的年开始大力扶植的Ada语言还语言还未及推广便胎死腹中了。未及推广便胎死腹中了。现在学习的是第10页,共74页w90年代以后,计算机世界更是发生了天翻地覆的年代以后,计算机世界更是发生了天翻地覆的变化,原先的单机平台让位于变化,原先的单机平台让位于WEB,“网络就网络就是计算机是计
11、算机”,新的语言不仅要是,新的语言不仅要是OO的,的,Visual的,更要是基于的,更要是基于WEB的。的。Java语言借语言借INTERNET的东风,横空出世,一夜红遍天下。的东风,横空出世,一夜红遍天下。w上述这些变化,表面是不同的编程工具的流行,上述这些变化,表面是不同的编程工具的流行,但其背后反映的却是一种更为深刻的认识论的改但其背后反映的却是一种更为深刻的认识论的改变,即你是用何种观点来认识这个世界的?变,即你是用何种观点来认识这个世界的?现在学习的是第11页,共74页2.开发模式(开发模式(Paradigm)w开发模式又称为范型、范例、风范或模式开发模式又称为范型、范例、风范或模式
12、(Pattern)。开发模式定义了。开发模式定义了特定问题和应用的开发过程中将遵循的步骤;特定问题和应用的开发过程中将遵循的步骤;确定将用于表示问题和解的那些成分的类型;确定将用于表示问题和解的那些成分的类型;利用这些成分表示与问题解决有关的抽象;利用这些成分表示与问题解决有关的抽象;直接得到问题的结构。直接得到问题的结构。现在学习的是第12页,共74页w开发模式的选择影响到整个软件开发生存期。就开发模式的选择影响到整个软件开发生存期。就是说,它支配选择:是说,它支配选择:n设计方法设计方法n编码语言编码语言n测试和检验技术测试和检验技术现在学习的是第13页,共74页3.传统方法学传统方法学w
13、传统方法学:瀑布模型,结构化分析传统方法学:瀑布模型,结构化分析/设计设计/编码编码w瀑布模型的缺点:僵化瀑布模型的缺点:僵化n瀑布模型要求:生命周期各阶段间遵守严格的顺序,瀑布模型要求:生命周期各阶段间遵守严格的顺序,实际情况是:软件开发往往在反复实践中完成实际情况是:软件开发往往在反复实践中完成n瀑布模型要求:预先定义并瀑布模型要求:预先定义并“冻结冻结”软件需求,实际软件需求,实际情况是:某些系统的需求的一个逐渐明确的过程,且情况是:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时预先定义的需求到软件完成时可能已经过时现在学习的是第14页,共74页wSA-SD
14、-SP技术的缺点:技术的缺点:n本质上是功能分解,以实现功能的过程为中心,而用本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好稳定性不好n系统有明确的边界定义,且系统结构依赖于系统系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改边界的定义,这样的系统不易扩充和修改n数据与操作分开处理,可能造成软构件对具体应用环数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用
15、性境的依赖,可重用性(reusability)较差较差现在学习的是第15页,共74页4.面向对象方法学的起源面向对象方法学的起源w维特跟斯坦是本世纪乃至人类哲学史上最伟大的维特跟斯坦是本世纪乃至人类哲学史上最伟大的哲学家之一。哲学家之一。他生前只于他生前只于1922年出版了一本著年出版了一本著作作逻辑哲学论逻辑哲学论(TractatusLogico-Philosophicus)。在该书中,他阐述了一种世在该书中,他阐述了一种世界观,或者说一种认识世界的观点,这种观点,界观,或者说一种认识世界的观点,这种观点,在六七十年后的今天,终于由一种哲学思想沉淀在六七十年后的今天,终于由一种哲学思想沉淀到
16、技术的层面上来,成为计算机业界的宠儿,这到技术的层面上来,成为计算机业界的宠儿,这就是就是“OO”,Object-Oriented,面向对象。,面向对象。现在学习的是第16页,共74页w维特根斯坦在维特根斯坦在逻辑哲学论逻辑哲学论一书中提出了一书中提出了如下思想:如下思想:n世界可以分解为事实世界可以分解为事实(Theworlddividesintofacts.)事实是由原子事实事实是由原子事实(atomicfacts)组成的。组成的。n一个原子事实是多个对象一个原子事实是多个对象(objects)的组合。的组合。n对象是简单的对象是简单的(基本的基本的)TheObjectissimple。n
17、对象形成了世界的基础。对象形成了世界的基础。现在学习的是第17页,共74页杭杭 州州北北 京京Post-officeMessageSend by method对象对象ObjectObject=数据数据AttributeAttributes:location;employee;+操作操作MethodMethods:send;sell;注意:注意:Object内部的内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送时,用户才能通过发送message来提请它执行。来提请它执行。我想把邮局搬到我想把
18、邮局搬到我家门口,多加几个我家门口,多加几个邮递员,邮递员,24小时都开门小时都开门对不起,对不起,本邮局不提供本邮局不提供此类服务此类服务唉,那就先送束花吧唉,那就先送束花吧 Post_office.Send(request,payment)现在学习的是第18页,共74页w特点:尽可能模拟人类习惯的思维方式,即问题域特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统以数据或信息为主线,把数据和处理结合构成统一体一体对象。这时程序不再是一系列工作在数据上对象。这时程
19、序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。的函数集合,而是相互协作又彼此独立的对象的集合。现在学习的是第19页,共74页5.面向对象方法学的要素面向对象方法学的要素现在学习的是第20页,共74页4.1 对象:世界由对象构成对象:世界由对象构成w对象是面向对象开发模式的基本成份。对象是面向对象开发模式的基本成份。w每个对象可用它本身的一组属性和它可以执行的每个对象可用它本身的一组属性和它可以执行的一组操作来定义。一组操作来定义。w属性一般只能通过执行对象的操作来改变。属性一般只能通过执行对象的操作来改变。w操作又称为方法或服务,它描述了对象执行的功操作又称为方法或
20、服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。能,若通过消息传递,还可以为其它对象使用。现在学习的是第21页,共74页4.2 类:物以类聚类:物以类聚w类是一组具有相同数据结构和相同操作的对象的类是一组具有相同数据结构和相同操作的对象的集合。集合。w类的定义包括一组数据属性和在数据上的一组合类的定义包括一组数据属性和在数据上的一组合法操作。法操作。w类定义可以视为一个具有类似特性与共同行为的类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。对象的模板,可用来产生对象。现在学习的是第22页,共74页w在一个类中,每个对象都是类的实例在一个类中,每个对象都
21、是类的实例(Instance),它们都可使用类中提供的函数。,它们都可使用类中提供的函数。w对象的状态则包含在它的实例变量,即实例的属对象的状态则包含在它的实例变量,即实例的属性中。性中。现在学习的是第23页,共74页例例:class Post_office private:loc_type location;emp_type employee;public:void send(req_type request,money_type payment);void sell(int goods,money_type payment);main()Post_office My_PO;req_type
22、 My_request;money_type My_payment;My_PO.Send(My_request,My_payment);现在学习的是第24页,共74页w继承继承(inheritance):类可分层,下层子类与上层:类可分层,下层子类与上层父类有相同特征,称为继承父类有相同特征,称为继承w继承是使用已存在的定义做为基础建立新定义的技术。继承是使用已存在的定义做为基础建立新定义的技术。w新类的定义可以是既存类所声明的数据和新类所增加新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改的声明的组合。新类复用既存的定义,而不要求修改继承类。继承类
23、。w既存类可当做基类来引用,则新类相应地可当做派生既存类可当做基类来引用,则新类相应地可当做派生类来引用。类来引用。4.3 继承:世界的相似性与多样性继承:世界的相似性与多样性现在学习的是第25页,共74页现在学习的是第26页,共74页w使用继承设计一个新类,可以视为描述一个新的使用继承设计一个新类,可以视为描述一个新的对象集,它是既存类所描述对象集的子集合。对象集,它是既存类所描述对象集的子集合。w这个新的子集合可以认为是既存类的一个特殊化。这个新的子集合可以认为是既存类的一个特殊化。Quadrilateral类是类是Polygon类的特殊化。类的特殊化。Quadrilateral是限制为四
24、条边的多边形。我们是限制为四条边的多边形。我们还可以进一步地把类还可以进一步地把类Quadrilateral特殊化为特殊化为Rectangle。现在学习的是第27页,共74页w类类Quadrilateral的界面可以等同于类的界面可以等同于类Polygon的界面,而的界面,而Rectangle类的界面又与类的界面又与Quadrilateral类的界面相同。类的界面相同。w新类的界面还可以被看做是既存类界面的一个扩新类的界面还可以被看做是既存类界面的一个扩充界面。例如,从一个既存的车辆类派生的四轮充界面。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,驱动车类可能不
25、仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的能力。而且还可能在新类的界面中引入新的能力。现在学习的是第28页,共74页现在学习的是第29页,共74页w在类的继承层次中,在类的继承层次中,Quadrilateral的实际参数的实际参数可以替换可以替换Polygon的形式参数。的形式参数。w类类Quadrilateral的界面与类的界面与类Polygon的界面是的界面是相容的相容的wQuadrilateral的界面可响应的界面可响应Polygon界面的所界面的所有消息。有消息。现在学习的是第30页,共74页4.4 消息:合作之道消息:合作之道w消息消息(message):对象间只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计 讲座 方法
限制150内