面向对象的基本概念_第1页
面向对象的基本概念_第2页
面向对象的基本概念_第3页
面向对象的基本概念_第4页
面向对象的基本概念_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

面向对象的基本概念第一页,共五十页,2022年,8月28日目的要求:使学生了解传统方法学的缺点,掌握面向对象的基本概念,三种模型:对象模型、动态模型、功能模型的基本概念。教学重点:掌握面向对象的基本概念。教学难点:三种模型:对象模型、动态模型的概念。讲授内容:认识传统方法学的缺点,引入软件工程的新途径。面向对象的基本概念,三种模型:对象模型、动态模型、功能模型的基本概念。教学目的、要求,重点、难点第二页,共五十页,2022年,8月28日第一节面向对象技术的基本概念第三页,共五十页,2022年,8月28日存在的问题:1、生产率提高的幅度远不能满足需要 2、软件重用程度很低 3、软件仍然很难维护 4、软件往往不能真正满足用户需要出现问题的原因:(最根本的原因有两个) 1、僵化的瀑布模型 1)某些类型的系统需求是模糊的 2)项目参与者之间存在通讯鸿沟 3)预先定义的需求可能是过时的 2、结构化技术的缺点 1)系统结构不稳定; 2)系统较难修改和扩充; 3)软件的可重用性较差。一、传统方法学的缺点第四页,共五十页,2022年,8月28日1、区分两类不同的软件系统

一类系统的需求比较稳定,而且能够预先指定,称为预先指定的系统;如:计算机控制系统,卫星图象处理系统,空中交通管理系统,火箭发射跟踪控制系统;操作系统,编译系统,数据库管理系统等;一类系统的需求是模糊的或随时间变化的,通常在系统安装运行之后,还会由用户驱动对需求进行动态修改,称为用户驱动系统;如:商业或行政数据处理系统,决策支持系统等。二、软件工程的新途径第五页,共五十页,2022年,8月28日2、快速原型法简介

快速原型法的核心是:用交互的快速建立起来的原型取代了形式的、僵化的大部头的规格说明,用户通过在计算机上运行和试用原形系统而向开发者提供真实的反馈意见。

原型法的基本思想是:首先建立一个用户主要需求的原型系统,让用户在计算机上运行、试用这个原型系统,通过实践、了解未来的系统概貌…最终建立起完全符合用户需要的新系统。瀑布模型:用户和分析员反复讨论,“纸上谈兵”;

原型系统:用户在计算机上运行、试用,“真枪实弹”;“试用----反馈----修改”的多次反复。第六页,共五十页,2022年,8月28日3、用原型法开发软件的过程

1)抛弃原型法

目的:评价目标系统的某个特性,以便更准确的确定需求,更严格的验证设计方案。使用完后将原型系统抛弃掉,然后重建正式的目标系统。

2)演化原型法

基本做法:经过初步调研和分析获知用户的基本需求之后,就利用适当的软件工具快速的实现一个原型系统,作为沟通各方的基础和用户实践的场所,开发人员根据用户试用后的意见,对原型进行修改和扩充,然后再次交给用户试用,并根据试用后提出的意见,再次对原型进行修改和扩充,经过多次迭代直到用户感到完全满意为止。第七页,共五十页,2022年,8月28日

1、面向对象方法简介

出发点和基本原则:尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程。即使描述问题的问题空间(问题域)与实现解法的解空间(求解域)在结构上尽可能一致。

概括的说,面向对象方法有下述4个要点:1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。

第二节面向对象的基本概念第八页,共五十页,2022年,8月28日

2)把所有对象都划分成各种对象类(类CLASS),每个对象类都定义了一组数据和一组方法。 3)按照子类(派生类)和父类(基类)的继承关系,把若干个对象类组成一个层次结构的系统(类等级)。4)对象彼此之间仅能通过传递消息互相联系。

OO=Objects+Classes+Inheritance+Communication

withmessage

面向对象=对象+类+继承+传递消息如果仅使用对象和消息的方法 ------称为基于对象的方法;如果进一步要求把所有端详划分为类 ------称为基于类的方法;只有同时使用对象,类,继承,消息的方法 ------真正面向对象的方法。第九页,共五十页,2022年,8月28日

1)与人类习惯的思维方式一致

传统的程序设计技术是面向过程的设计方法,以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。 把数据和代码作为分离的实体,是计算机的特点。但总存在“使用错误的数据调用正确的程序模块,或使用正确的数据调用了错误的程序模块”的危险。 传统的程序设计技术忽略了数据和操作之间的内在联系,设计的软件系统其解空间和问题空间并不一致,难于理解。

2面向对象方法学的主要优点第十页,共五十页,2022年,8月28日

面向对象的软件技术以对象为核心,软件系统由对象组成。对象是对现实世界实体的正确抽象,它由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(对象的动态行为),封装在一起所构成的统一体。 面向对象的软件技术的基本原理,使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分过程中都用应用领域的概念去思考。第十一页,共五十页,2022年,8月28日

传统的软件开发过程可以用“瀑布”模型来描述,强调“自顶向下”按部就班地完成软件开发工作。 面向对象方法学的出发点和基本原则就是分析、设计、实现一个软件系统的方法和过程,尽可能接近人们认识世界解决问题的方法和过程。也就是使描述问题的问题空间和描述解法的解空间在结构上尽可能一致。第十二页,共五十页,2022年,8月28日

2)稳定性好;

传统的程序设计技术以算法为核心,开发过程基于功能分析和功能分解。 面向对象的软件技术以对象为核心,基于构造问题领域的对象模型。当系统的功能需求变化时并不会引起软件结构的整体变化,仅需要做一些局部修改。

3)可重用性好;

用已有零部件装配新的产品是典型的重用技术。 传统方法学中内聚性好的模块独立性高,但数据和程序彼此独立,实际上重用性差。 面向对象的软件技术中的对象具有很强的自含性,对象所固有的封装性和信息隐藏机理,使得对象的内部实现和外界隔离,具有较强的独立性。

第十三页,共五十页,2022年,8月28日4)较易开发大型软件产品

开发大型软件系统时,开发人员的组织方法不当是出现问题的主要原因。面向对象范型开发软件时,可以把一个大型软件产品看作一系列本质上相互独立的小产品来处理。一方面降低了技术难度,另一方面改善了管理工作。5)可维护性好;

面向对象的软件稳定性好 面向对象的软件比较容易修改 面向对象的软件比较容易理解 面向对象的软件易于测试和调试第十四页,共五十页,2022年,8月28日

在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,可以是具体的物理实体的抽象,也可是人为的概念,或是任何有明确边界和意义的东西。如:一名职工,一家公司,一个窗口,一座图书馆,一本图书,贷款和借款等。

面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。对象可以做的操作表示对象的动态行为,OOD中称为对象的服务或方法。二、基本概念(一)

对象第十五页,共五十页,2022年,8月28日1、对象的形象表示

一个对象如同一台录音机,当在软件中使用一个对象的时候,只能通过对象与外界的界面来操作它。实现对象操作的代码和数据是隐藏在对象内部的,一个对象好象是一个黑盒子。使用对象时只需知道它向外界提供的接口形式而无须知道内部的具体算法,不仅使对象变得非常简单、方便,而且具有很高的安全性和可靠性。操作1操作2操作3界面操作1、2、3的实现状态S图4.1对象的形象表示第十六页,共五十页,2022年,8月28日2、对象的定义

定义1(从面向对象程序设计角度看待对象)

对象是具有相同状态的一组操作的集合。

定义2:(从信息模拟角度看待对象)

对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。(对象是对属性值和操作的封装)。定义3:(形式化的定义)

对象::=<ID,MS,DS,MI> ID--对象的标识或名字

MS--对象中的操作集合

DS--对象的数据结构MI--对象受理的消息名集合(对外接口)第十七页,共五十页,2022年,8月28日

3、对象的特点

1)以数据为中心 2)对象是主动的 3)实现了数据封装 4)本质上具有并行性 5)模块独立性好第十八页,共五十页,2022年,8月28日1、类(Class)

类是对具有相同数据和相同操作的一组相似对象的定义,类是对具有相同属性和行为的一个或多个对象的描述(抽象)。 例如:在屏幕上不同位置用不同颜色不同半径画三个圆,是三个不同的对象,但他们有相同的数据(圆心坐标,半径,颜色)和相同的操作(显示自己,放大缩小半径,在屏幕上移动位置等),因此它们是同一类事物,可用“Circle类”来定义。

(二)其他概念第十九页,共五十页,2022年,8月28日2、实例(Instance)

实例就是由某个特定的类所描述的一个具体的对象。 类在现实世界中并不能真正存在。如:在地球上并没有抽象的“中国人”,只有一个个具体的中国人(张三、李四)。同样也没有抽象的“圆”,只有一个个具体的圆(圆心在(100,200)半径为50的红色显示的圆,圆心在(200,300)半径为30的兰色显示的圆)。 实际上,类是建立对象的“样板”,按照这个样板所建立的一个具体的对象,就是类的实际例子,通常称为实例。

第二十页,共五十页,2022年,8月28日3、消息(Message)

消息,就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常一个消息由下述三部分组成: 接受消息的对象; 消息选择符(消息名); 零个或多个变元;例如:MyCircle是一个半径4,圆心位于(100,200)的Circle类的对象,也就是Circle类的一个实例。 当要求它以绿色显示时,在C中应发出以下消息:MyCircle.Show(Green);

其中:MyCircle是接受消息的对象的名字;

Show是消息选择符(消息名);

Green是消息的变元; 当MyCircle接受到这个消息后,将执行在Circle类中定义的Show操作。第二十一页,共五十页,2022年,8月28日4、方法(Method)

方法就是对象所能执行的操作,也就是类中定义的服务。方法描述了对象执行操作的算法,响应消息的方法。(在C++中,把方法称为成员函数)例如:为了Circle类的对象能够响应让它在屏幕上显示自己的消息Show(Green),在Circle类必须给出成员函数Show(int

color)的定义,(也就是要给出这个成员函数的实现代码)。第二十二页,共五十页,2022年,8月28日5、属性(Attribute)

属性,就是类中所定义的数据,它是对客观世界中的实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。例如:Circle类中定义的代表圆心坐标、半径、颜色等的数据成员,就是圆的属性。第二十三页,共五十页,2022年,8月28日属性:姓名 年龄 单位 职称 工资操作:调工资 评职称 受聘方法:调工资(计算公式) 评职称(步骤,条件)类:教师数据结构方法体状态:李伟 25 计算机 讲师 1000行为:调工资 评职称 受聘李伟.调工资(…)数据值执行的操作人事处向对象发消息抽象方法名(参数)抽象实例对象:李伟抽象实例对象、类和消息传递第二十四页,共五十页,2022年,8月28日6、封装(Encapsulation)

面向对象的程序中把数据和实现操作的代码集中起来放在对象内部。 使用一个对象的时候,只需知道它向外界提供的接口形式,而无需知道它的数据结构细节和实现操作的算法。 具有封装性的条件: (1)有一个清晰的边界; (2)有明确的接口; (3)受保护的内部实现。第二十五页,共五十页,2022年,8月28日7、继承(Inheritance)

广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。第二十六页,共五十页,2022年,8月28日A的操作A的变量类A类AA的实例变量A的实例a1B的操作B的变量类B:A的子类从A继承特性继承来的A的实例变量B的实例变量B的实例b1类B.子类父类的实例父类子类的实例

继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。图4.3实现继承机制的原理第二十七页,共五十页,2022年,8月28日8、多态性(Polymorphism)

来自于希腊语,意思是“有许多特性”。 多态性是指子类对象可以象父类对象那样使用,同样的消息可以发送给父类对象也可以发送给子类对象。在类的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。 多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了数据冗余,而且显著提高了软件的可重用性和可扩充性。第二十八页,共五十页,2022年,8月28日9、重载(OverLoading) 1)函数重载:是指同一作用域内若干个参数特征不同的函数可以使用相同的函数名字; 2)运算符重载:是指同一个运算符可以施加于不同类型的操作数上面。 在C++语言中,函数重载是通过静态联编实现的,编译时根据函数变元的个数和类型,决定到底使用函数的哪个实现代码;运算符重载也是载编译时根据操作数的类型,决定使用该运算符的哪种语义。第二十九页,共五十页,2022年,8月28日

所谓建模,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型是由一组图示符号和组织这些符号的规则组成,利用她们来定义和描述问题域中的术语和概念。 模型是一种思考工具,利用这种工具可以把知识规范地表示出来。 模型通过把系统的重要部分分解成人的头脑一次能处理的若干子部分,从而减少系统的复杂程度; 在对目标系统进行分析的初始阶段,棉队大量模糊的、涉及众多专业领域的、错综复杂的信息,系统分析员往往感到无从下手,模型提高了组织大量信息的一种有效机制。第三节对象模型第三十页,共五十页,2022年,8月28日

用面向对象方法开发软件,通常需要建立三种形式的模型:

对象模型:描述系统的数据结构;

动态模型:描述系统的控制结构;

功能模型:描述系统功能。

一个典型的软件系统组合了上述三个方面的内容:它使用数据结构(对象模型),执行操作(动态模型),并完成数据值的变化(功能模型)。

用面向对象方法开发软件,在任何情况下,对象模型始终都是最重要、最基本、最核心的。第三十一页,共五十页,2022年,8月28日

对象模型表示静态的、结构化的系统的“数据”性质。为建立动态模型和功能模型提供了实质性的框架。 现有的建立对象模型的表示方法包含下列符号: 表示类的符号(应该既能表示属性又能表示服务); 表示对象(类实例)的符号: 表示继承关系的符号; 表示类和(或)对象间其他关系的符号;第三十二页,共五十页,2022年,8月28日1、类---&---对象

“类---&---对象”是一个专用术语,含义是“一个类及属于该类的对象”。(一)表示类---&---对象的符号

表示类---&---对象的图形符号表示类的图形符号(虚线框代表属于该类的对象)类名服务属性类名服务属性图6.4表示符号第三十三页,共五十页,2022年,8月28日2、命名 命名应遵守的三条规则: 1)使用标准术语; “交通信号灯”比“信号单元”好; “传送带”比“零件传送设备”好 2)使用具有确切含义的名词; “库房”比“房屋”或“存物场所”更确切; 3)必要时用名词短语做名字; “最小的领土单元”,“公司员工”等。第三十四页,共五十页,2022年,8月28日1、归纳关系

一般和特殊的关系,它反映了一个类和若干个互不相容的子类之间的分类关系。高层类(基类)说明一般性的属性;低层类(派生类)说明特殊属性。(二)表示结构的图形符号一般化类具体类1具体类2..图4.5表示归纳关系的图形符号第三十五页,共五十页,2022年,8月28日2、组合关系

就是“整体和部分”“关系,它反映了对象之间的构成关系。(也称聚集关系)。

整体部分1部分21,m0,n图4.6表示组合关系的图形符号第三十六页,共五十页,2022年,8月28日教材封面前言目录章节习题1,m1,n图4.7描绘教材结构的聚集树第三十七页,共五十页,2022年,8月28日3、关联关系

反映对象之间相互依赖、相互作用的关系。通常把两类对象之间的二元关系再细分为一对一、一对多、多对多等三种基本类型。 1)表示符号:用相互依赖、相互作用的两个对象之间的连线表示。 2)阶:参与关联的对象的个数。 3)链属性:关联链的性质。 4)限定:一个受限的关联由两个对象及一个限定词组成。可把限定词看作一种特殊的链属性。利用限定词能有效地减少关联的阶数。 5)消息连接:反映一个对象对另一个对象的处理依赖性。第三十八页,共五十页,2022年,8月28日教师书1+图6.8教师与属于他的书之间的关联关系文件用户1+图4.9链属性的表示方法1+访问权限第三十九页,共五十页,2022年,8月28日文件文件名目录图4.10一个受限的关联发送者接受者图4.11消息连接的表示符号第四十页,共五十页,2022年,8月28日例子

某公司有许多部门,部门名唯一地确定一个部门;每个部门由一名经理管理,也有的经理并不管理任何一个部门;每个部门生产多种产品,每种产品仅由一个部门生产。该公司有许多名员工为之工作,员工又进一步划分为经理和工人两类。每名工人可参加多个工程项目,每个项目需要多名工人;每位经理可以主持多个项目,每个项目仅有一人主持。相应的对象模型如下。第四十一页,共五十页,2022年,8月28日员工姓名地址身份证号码工资工人经理..项目项目名预算优先级公司名字电话号码主要产品地址部门名部门产品产品名成本重量服务1+1+1+1+1+参加主持管理0,1生产为之工作第四十二页,共五十页,2022年,8月28日

动态模型表示瞬时的、行为化的系统的”控制“性质,它规定了对象模型中的对象的合法变化序列。 一旦建立起对象模型之后,就需要考察对象的动态行为。通常,用状态图来描绘对象的状态、触发状态转换的事件、以及对象的行为(对事件的响应)。 每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。动态模型是基于事件共享而互相关联的一组状态图的集合。第四节动态模型第四十三页,共五十页,2022年,8月28日1、事件

事件是某个特定时刻所发生的事情,它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。时间没有持续时间,是瞬间完成的。(事件就是引起对象状态转换的控制信息)。2、状态

状态就是对象在其生命周期中的某个特定阶段所处的某种情形,它是对影响对象行为的属性值的一种抽象。 状态有持续性,它占用一段时间间隔。 状态和事件密不可分,一个事件可分为两个状态,一个状态隔开两个事件。事件表示时刻,状态表示时间间隔。3、行为

行为是指对象达到某种状态时所做的一系列处理操作。(一)

温馨提示

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

评论

0/150

提交评论