软件工程第七章面向对象方法学课件.ppt

上传人:石*** 文档编号:84135482 上传时间:2023-04-02 格式:PPT 页数:77 大小:2.23MB
返回 下载 相关 举报
软件工程第七章面向对象方法学课件.ppt_第1页
第1页 / 共77页
软件工程第七章面向对象方法学课件.ppt_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《软件工程第七章面向对象方法学课件.ppt》由会员分享,可在线阅读,更多相关《软件工程第七章面向对象方法学课件.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件工程第七章面向对象方法学第1页,此课件共77页哦第七章第七章 面向对象方法学面向对象方法学l7.1 传统方法学的缺点传统方法学的缺点l7.2 面向对象的基本概念面向对象的基本概念l7.3 对象模型对象模型l7.4 动态模型动态模型l7.5 功能模型功能模型 第2页,此课件共77页哦7.1 传统方法学的缺点传统方法学的缺点结构化及其他方法学的本质,是在具体的软件开发工作开始之前,通过需求分析预先定义软件需求。结构化及其他方法学部分地缓解了软件危机,对软件开发工程化起了重要的促进作用。第3页,此课件共77页哦结构化及其他方法学并不能完全消除软件危机。结构化及其他方法学仍然有许多不足之处。对某些

2、类型的软件开发,这种方法学比较适用。对另一些类型的软件则可能完全不适用。第4页,此课件共77页哦7.1.1 问题的表现问题的表现1.生产效率低率生命周期方法学中强调采用先进的结构分析、设计、编程技术和软件工具的技术方法不能满足软件的需要量急剧增长。2.不能满足用户需要第5页,此课件共77页哦3.软件复用程度很低结构分析、结构设计和结构程序设计技术开发软件时,几乎每一次开发一个新系统时都要针对这个具体的系统做大量重复繁琐的劳动。4.软件仍然很难维护实践的经验告诉我们,即使是用生命周期方法学开发出的软件,维护起来仍然相当困难,软件维护成本仍然很高。第6页,此课件共77页哦7.1.2 问题的原因问题

3、的原因1.结构化技术本身的问题2.预先定义的需求可能是过时3.语言鸿沟4.系统需求的模糊性第7页,此课件共77页哦7.2 面向对象的基本概念面向对象的基本概念第8页,此课件共77页哦7.2.1 对象(对象(object)l对象对象是实现世界中一个实际存在的事物,它可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。第9页,此课件共77页哦对象的定义:对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。第10页,此课件共77页哦对象有如下一些基本特点:1.以数据为中心。2.对象是主动的。3.实现

4、了数据封装。4.本质上具有并行性。5.模块独立性好。第11页,此课件共77页哦7.2.2 类(类(class)类的定义类的定义:类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。第12页,此课件共77页哦图图7.2 类与对象的关系类与对象的关系类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。他们的关系可以用图7.2表示。第13页,此课件共77页哦7.2.3 继承(继承(inheritance)继承是面向对象中的重要概念,在软件实现中的重要手段。并且是面向对象技术可提高软件开发效率的重要原因之一。特殊类的对象拥有

5、其一般类的全部属性与服务,称作特殊类对一般类的继承继承。第14页,此课件共77页哦一个特殊类既有自己新定义的属性和服务,又有从它的一般类中继承下来的属性与服务。继承的实现是通过面向对象系统的继承机制来保证的。继承关系具有传递性。第15页,此课件共77页哦一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这种继承模式叫作多继承。第16页,此课件共77页哦7.2.4封装(封装(encapsulation)封装就是把对象的属性服务结合成为一个独立的系统单位,并尽可能隐蔽对象的内部细节。封装是一种信息隐蔽技术。封装是面向对象方法的一个重要原则。它有两个涵义:p 把对象的全部属性和全部服

6、务结合在一起,形成一个不可分割的独立单位。p 尽可能隐蔽对象的内部细节,只保留有限的对外接口使之与外部发生联系。第17页,此课件共77页哦封装是一种机制,封装的信息隐蔽作用反映了事物的相对独立性。封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效地避免了外部错误对它的“交叉感染”,使软件错误能够局部化。第18页,此课件共77页哦封装是面向对象方法的一个原则,也是面向对象技术必须提供的一种机制。例如在面向对象的语言中,要求把属性和服务结合起来定义成一个程序单位,并通过编译系统保证对象的外部不能直接存取对象的属性或调用它的内部服务。这种机制就叫作封装机制。

7、第19页,此课件共77页哦强调严格的封装,则对象的任何属性都不允许外部直接存取,因此就要增加许多没有其它服务意义,而仅负责读或写的服务。这为编程工作增加了负担。所以我们在用面向对象进行编写程序时,总会觉得程序显得臃肿。为了避免这一点,语言往往采取一种比较现实的灵活态度允许对象有不同程度的可见性。第20页,此课件共77页哦7.2.5消息(消息(message)对象是一个独立的单位,它通过对外提供的服务在系统中发挥作用。而只有当系统中的其它对象向它请求某个服务时,它就响应这个请求,才能体现其作用。面向对象方法中将这种向对象发出的服务请求称作消息消息。第21页,此课件共77页哦面向对象方法的另一个原

8、则是通过消息进行对象之间的通信。它与封装的的原则有密切的关系。封装使对象成为互不干扰的独立单位;而消息通信则为它们提供合法动态联系途径,使它们互相配合构成一个系统。第22页,此课件共77页哦面向对象方法中对消息的定义定义:消息就是向对象发出的服务请求,它应该含有下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。第23页,此课件共77页哦7.2.6结构与连接结构与连接为了完成某种功能,需要用消息将独立的对象联系起来。在构造系统中,对象间关系不仅仅是用消息的连接方式。为了使系统能够有效地映射问题域,系统开发者需认识并描述对象之间的的分类关系、对象之间的组成关系、对象属性之间的静态联系和对

9、象行为之间的动态联系。第24页,此课件共77页哦面向对象方法运用一般-特殊结构、整体-部分结构、实例连接和消息连接描述对象之间的关系。第25页,此课件共77页哦1.一般一般-特殊结构特殊结构一般-特殊结构是由一组具有一般-特殊关系的类所组成的结构。它是一个以类为结合,以继承关系为边的连通有向图。如果是由一些存在单继承关系的类形成的结构又称作层次结构或树型结构;如果由一些存在多继承关系的类形成的结构又称作网格结构。第26页,此课件共77页哦图图7.3 一般一般-特殊结构特殊结构第27页,此课件共77页哦2.整体整体-部分结构部分结构当一个对象是另一个(组)对象的组成或部分,则称他们有整体-部分关

10、系。整体-部分结构由一组彼此间存在着这种组成关系的对象构成。它描述对象之间的组成关系。即:如图7-4所示。第28页,此课件共77页哦图图7-4整体整体-部分结构部分结构第29页,此课件共77页哦整体-部分结构有两种实现方式。l用部分对象的类作为一种广义的数据类型来定义整体对象的一个属性,构成一个嵌套对象。l独立地定义和创建整体对象和部分对象,并在整体对象中设置一个属性,它的值是部分对象的对象标识,或者是一个指向部分对象的指针。第30页,此课件共77页哦3.实例连接实例连接实例连接反映对象与对象之间的静态联系。例如教师和学生之间的关系。这种双边关系在实现中可以通过对象的属性表达出来。所以这种关系

11、称作实例连接。第31页,此课件共77页哦4.消息连接消息连接描述对象之间的动态联系是用消息连接。若一个对象在执行自己的服务时,需要请求另一个对象为它完成某个服务。那么,这两个对象之间存在着消息连接。消息连接是有向的,从消息发送者指向消息接收者。第32页,此课件共77页哦7.2.7多态性(多态性(Polymorphism)多态性是指允许不同类的对象对同一消息作出响应。多态性引用具有静态类型和动态类型。动态类型可以在程序执行期间在实例之间进行变化。静态类型是在程序上下文中由实体说明决定的。第33页,此课件共77页哦对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或

12、表现出不同的行为。这使得同一个属性或服务名在一般类及其各个特殊类中具有不同的语义。第34页,此课件共77页哦如果一种面向对象程序设计语言能支持对象的多态性,则可为开发者带来不少方便。多态性是一种比较高级的功能。多态性的实现需要面向对象程序设计语言提供相应的支持。第35页,此课件共77页哦支持多态性的实现的语言应具备的功能是:l重载在特殊中对继承来的属性或服务进行重新定义。l动态绑定在运行时根据对象接收的消息动态地确定要连接哪一段服务代码。l类属(generic)服务参量的类型可以是参数化的。第36页,此课件共77页哦7.2.8 其他概念其他概念1.方法(Method)方法,就是对象所能执行的操

13、作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。2.属性(Attribute)属性,就是类中所定义的数据,它是是客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。第37页,此课件共77页哦3.重载(Overloading)有两种重载:函数重载是指在一同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。第38页,此课件共77页哦7.3 对象模型对象模型为了更好地理解问题,人们常常采用建立问题模型的方法。所谓

14、模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧以的书面描述。模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。第39页,此课件共77页哦所谓对象模型就是表示静态的、结构化的系统的“数据”性质。它是客观世界实体的对象以及对象彼此间的关系的映射的模拟,描述了系统的静态结构。第40页,此课件共77页哦在建立对象模型时,我们的目标是从客观世界中提炼出对具体应用有价值的概念。为了建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。第41页,此课件共77页哦面向对象方法学的有许多表示方法,这些表示方法虽然形式各异。但是,它

15、们共同的特点就是独立于具体的开发模式。现有的用于建立对象模型的表示方法,都包含下列符号:1表示类的符号(应该既能表示属性又能表示服务);第42页,此课件共77页哦2表示对象(类实例)的符号;3表示继承关系的符号;4表示类和(或)对象间其他关系的符号。第43页,此课件共77页哦7.3.1表示法表示法1.对象符号类符号通常用来代表一个没有实例的抽象类。类符号是一个矩形框,由两条横线把矩形框分为三部分,最上面部分是类的名字,中间部分列出该类内定义的属性,最下面部分列出该类提的服务。第44页,此课件共77页哦图图7-5 表示类的图形符号表示类的图形符号普通对象由图7-5所示的类符号表示。第45页,此课

16、件共77页哦当不需要详细描述一个类内定义了哪些属性和服务时,可以仅在一个矩形框内写上类名代表该类;当不需要列出一个类所提供的服务时,可以仅用一条横线把代表该类的矩形框分成两半,上半部分写上该类的名字,下半部分列出该类内定义的属性。第46页,此课件共77页哦2.命名类名是一类对象的名字,命名是否恰当对系统的可理解性影响相当大。名字应该是富于描述性的、简洁的而且无二义性的。因此,命名时应该遵守以下几条准则:(1)使用标准术语。(2)使用具有确切含义的名词。第47页,此课件共77页哦(3)必要时用名词短语作名字。第48页,此课件共77页哦7.3.2 表示结构表示结构在面向对象分析和面向对象设计中,结

17、构表示了问题域中的复杂关系,是对客观世界实体相互间关系的抽象。结构与目标系统的任务直接相关,也就是说,目标系统的任务决定了系统的结构。第49页,此课件共77页哦1.一般一特殊关系一般-特殊关系反映了一个类与若干个互不相容的子类之间的分类关系。高层类定义一般性的属性与服务,低层类说明特殊属性与服务。第50页,此课件共77页哦图图76 表示一般表示一般-特殊关系的符号特殊关系的符号 第51页,此课件共77页哦2.整体一部分关系整体-部分结构又称组装结构,用于描述系统中各类对象之间的组成关系,通过它可以看出某个类的对象以另外一些类的对象作为其组成部分。第52页,此课件共77页哦 图图77 表示整体表

18、示整体-部分关系的图形符号部分关系的图形符号第53页,此课件共77页哦传递性是整体-部分关系具有的最重要的特性。如果A是B的一部分,B是C的一部分,则A也是C的一部分。当组合关系有多个层次时,可以用一棵简单的聚集树来表示它。第54页,此课件共77页哦聚集树是多级组合关系的一种简化表示形式。图7-8是描绘一所学校结构的聚集树,它表明,一所学校由教务、总务、财务及若干系组成,每系由若干教研室和实验实组成。第55页,此课件共77页哦 图图7-8学校结构的聚集树学校结构的聚集树第56页,此课件共77页哦3.关联关系通常把两类对象之间的二元关系再细分为一对一(1:1)、一对多(1:M)和多对多(M:N)

19、等三种基本类型,类型的划分依据参与关联的对角的数目。第57页,此课件共77页哦实际上,在面向对象分析和面向对象设计中遇到的绝大多数关联都是二元的,多元关联的语义,表示及实现,都比二元关联复杂得多,只要有可能就应该避免使用多元关联。第58页,此课件共77页哦7.3.3 例子例子对象模型把面向对象的概念(对象、类、继承等)与传统方法中常用的住处建模概念结合起来了,从而改进和拓广了普通的信息模型析可理解性和表达能力。第59页,此课件共77页哦图7-9是一家公司的对象模型,它表明,该公司有许多部门,部门名唯一地确定一个部门;每个部门由一名经理管理,也有的经理并不管理任何一个部门;每个部门生产多种产品,

20、每种产品仅由一个部门生产。第60页,此课件共77页哦图图7-9公司的对象模型公司的对象模型第61页,此课件共77页哦该公司有许多员工为之工作,员工又进一步划分为经理和工人两类。每名工人可参加多个工程项目,每个项目需要多名工人;每位经理可以主持多个项目,每个项目仅有一人主持。这个对象模型还描述了某些类对象所具有的属性,以及公司类对象提供的服务。第62页,此课件共77页哦7.4 动态模型动态模型一旦建立起对象模型之后,就需要考察对象的动态行为。动态模型是表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。第63页,此课件共77页哦7.4.1 术语术语1.事件在某个特定时

21、刻所发生的事情称为事件。它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。2.状态对象在某个特定阶段所处的情形就是状态。它是对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式。第64页,此课件共77页哦状态与事件密不可分,一个事件分开两个状态,一个状态隔开两上事件。事件表示时刻,状态代表时间间隔。在定义状态的时候,应该忽略那些不影响对象行为的属性。第65页,此课件共77页哦3.行为行为是指对象达到某种状态时所做的一系列处理操作。这些操作是需要耗费时间的。所有对象都具有自己的生命周期。第66页,此课件共77页哦7.4.2 表示方法表示方法图7-10给出了状态图中使用的

22、主要表示符号。第67页,此课件共77页哦状态用圆形框或椭圆框表示,框内可标上状态名也可以不给状态起名字,行为在框内用关键字do(后接冒号)标明。从一个状态到另一个状态的转换用箭头线表示,线上标以事件名。必要时可在事件名后面加一个方括号,括号内写上状态转换的条件。第68页,此课件共77页哦7.4.3 例子例子 第69页,此课件共77页哦图中表明,没有创建时,栈处于空状态;如果如果压入数据,栈处于半空状态;这时既可以继续压入,直到压满进入满状态。也可以弹出,当弹出最后一个数据后,栈就重新处于空状态。就绪后。第70页,此课件共77页哦7.5 功能模型功能模型功能模型表示变化的系统的“功能”性质,它指

23、明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。第71页,此课件共77页哦7.5.1 表示方法表示方法 通常,功能模型由一组数据流图组成。一般说来,与对象模型和动态模型比较起来,数据流图并没有增加新的信息,但是,建立功能模型有助于软件开发人员更深入地理解问域,改进和完善自己的设计。因此,不能完全忽视功能模型的作用。第72页,此课件共77页哦7.5.2 与其他两种模型的关系与其他两种模型的关系面向对象建模型技术所建立的三种模型,分别从三个不同侧面描述了所要开发的系统。这三种模型相互补充、相互配合,使得我们对系统的认识更加全面:l功能模型指明了系统应该“做什么”;l动态模型明确规定

24、了什么时候做;l对象模型则定义了做事情的实体。第73页,此课件共77页哦三种模型之间的关系:l针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。l状态转换驱使行为发生,这些行为在数据流图中被映射成处理,它们同时与对象模型中的服务相对应。l功能模型中的处理,对应于对对象模型中类&对象所提供的服务。通常,在顶层数据流图中的处理,对应于得杂对象提供的服务;在低层数据流衅中的处理,对应于更基本的对象(基本对象是复杂对象的组成部分)的服务。有时一个处理对应多个服务,也有一个服务对应多个处理的时候。第74页,此课件共77页哦l功能模型中的数据存储,以及数据的源点/终点)在功能模型中称为动作对象)

25、,通常是对象模型中的对象。l功能模型中的数据流,往往是对象模型中的属性值,也可能是整个对象。l功能模型中的处理要能产生动态模型中的事件。l对象模型描述了功能模型中的动作对象、数据存储以及数据流的结构。第75页,此课件共77页哦小结小结l对于传统的软件工程方法学,在软件的历史上作出过贡献,现在仍然适应于一些软件的开发。但是对于另外一些软件的开发来说,由于这类系统的需求无法预先定义,所以这种方法就不适应了。其基本原因就是对于传统的软件工程方法学的模型导致所开发出来的软件在系统的稳定性、可重用性和可维护性上都比较差。第76页,此课件共77页哦小结小结 l面向对象的软件工程方法学,由于开发出来的软件在系统的稳定性、可重用性和可维护性上都比较好,所以日益受到人们的重视。面向对象的软件工程方法学在本质上与快速原型法是相互补充和相互促进的。面向对象的软件工程方法学比较自然地模拟了人类认识自然的思维方式,其追求的目标和遵循的基本原则,是使描述的问题域与计算机的解空间在结构上一致。第77页,此课件共77页哦

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁