面向对象技术及UML教程第1章 面向对象技术概述

合集下载

面向对象技术与UML

面向对象技术与UML
示例
假设有一个“动物”类,我们可以创建一个“狗”类来继承“动物”类,并添加特定的狗的行为。这样 ,如果需要添加其他动物类型,我们可以轻松地创建新的子类,而不需要修改“动物”类的代码。
里氏替换原则
定义
如果S是基类,T是派生类,则程序中使用S类型的对象的地 方都可以用T类型的对象来替换,而不会改变程序的行为。
案例二:复杂类的UML表示
定义一个复杂的类"Employee",包含属性"name"、"age"、 "department"和"position",以及方法"work"、"getSalary"和 "setSalary"。
使用UML类图表示该类,并使用聚合关系表示Employee类与 Department类之间的关系。
示例
一个“用户管理”类可能负责管 理用户信息、用户权限等。如果 它还负责处理订单或管理库存, 那么它就违反了单一职责原则。
开闭原则
定义
软件实体应该通过扩展来增加功能,而不是修改已有的代码。
解释
开闭原则鼓励使用继承和多态来实现软件的可扩展性。这意味着当需要添加新功能时,可以通过创建新的子类或实现 新的接口来扩展现有代码,而不是修改已有的代码。
确定方法
为每个类确定其方 法,包括私有、保 护和公共方法。
确定关联关系
使用实线和虚线表 示类之间的关联关 系。
类图的阅读与分析
阅读
01
首先从上到下、从左到右阅读类图,了解各个类的属性和方法。
分析
02
分析类之间的继承和关联关系,理解系统的层次结构和交互关
系。
工具

面向对象技术概述

面向对象技术概述
动态绑定是一种在运行时确定被执行代码的技术
15
面向对象的基本概念
在一般与特殊关系中,子类是父类的一个特例, 所以父类对象可以出现的地方,也允许其子类对 象出现。因此在运行过程中,当一个对象发送消 息请求服务时,要根据接收对象的具体情况将请 求的操作与实现的方法进行连接,即动态绑定
16
17
面向对象分析
Peter Coad和Edward Yourdon提出用下列等式识认面向对象 方法:
面向对象= 对象(object)+ 类(class)+ 继承(inheritance) + 通过消息的通信(communication with messages)
可以说,采用这四个概念开发的软件系统是面向对象的
是一种信息隐蔽技术,用户只能看见对象封装界面上的 信息,对象的内部实现对用户是隐蔽的。封装的目的是 使对象的使用者和生产者分离,使对象的定义和实现分 开
一个对象通常可由对象名、属性和操作三部分组 成
10
面向对象的基本概念
消息(message)
消息传递是对象间通信的手段,一个对象通过向另一个 对象发送消息来请求其服务。一个消息通常包括接收对 象名、调用的操作名和适当的参数(如果有必要的话)。 消息只告诉接收对象需要完成什么操作,但并不指示接 收者怎样完成操作。消息完全由接收者解释,接收者独 立决定采用什么方法完成所需的操作
6
面向对象的基本概念
7
面向对象的基本概念
类(class)
类是一组具有相同属性和相同操作的对象的集合。一个 类中的每个对象都是这个类的一个实例(instance)
类是创建对象的模板,从同一个类实例化的每个对源自都 具有相同的结构和行为8
面向对象的基本概念

第1章面向对象程序设计概述

第1章面向对象程序设计概述

第1章面向对象程序设计概述面向对象程序设计(Object-Oriented Programming,OOP)是一种常用的编程范式,其核心思想是将现实世界中的事物抽象为对象,并将对象之间的关系通过消息传递进行交互。

OOP主要包括封装、继承和多态三个特性,通过合理使用这些特性可以使程序更加模块化、灵活和可复用。

封装是OOP的基本特性之一,它将数据和行为封装到一个对象中,使得对象的内部状态对外部不可见,只能通过对象的公共接口来访问。

通过封装,可以隐藏内部的实现细节,提供更高层次的抽象,增强程序的安全性和可靠性。

继承是指通过已有的类(父类)派生出新的类(子类),子类继承了父类的数据和行为,并可以添加新的数据和行为。

继承可以促进代码的重用,减少代码冗余,提高开发效率。

此外,继承也提供了一种层次化的结构,有助于理清对象之间的关系。

多态是指同一种操作作用于不同的对象,可以产生不同的结果。

多态可以增加程序的灵活性和拓展性,减少代码的耦合度。

在OOP中,多态通常通过接口或父类的指针来实现。

由于动态绑定的特性,运行时才真正确定调用的是哪个对象的方法。

除了封装、继承和多态,面向对象程序设计还涉及其他重要的概念和技术。

例如,类定义是创建对象的模板,描述了对象具有的属性和方法。

对象是类的实例,具有独立的内存空间和状态。

消息传递是对象之间相互交互的方式,对象通过发送消息来请求其他对象的服务。

聚合和组合是表示对象之间关系的方法,聚合表示弱的关联关系,组合表示强的关联关系。

在面向对象程序设计中,还有一些设计原则和模式值得注意。

开闭原则(Open Close Principle,OCP)要求软件实体对扩展开放,对修改关闭。

单一职责原则(Single Responsibility Principle,SRP)要求一个类只负责一个职责,保持类的高内聚性。

依赖倒置原则(Dependency Inversion Principle,DIP)要求依赖关系要建立在抽象上,而不是具体类上。

面向对象与UML 第一章 Java概述

面向对象与UML 第一章  Java概述
Java语言基本元素
关键字 ( Reserved Word ) 常量( Constant ) 变量(Variable) 基本数据类型(Data Type)
1.1 基本数据类型与运算符
关键字 ( Reserved Word ) 具有专门的意义和用途,不能当作一般的标识符 使用,这些标识符称为关键字(reserved word)。
int nSecond = 10 ;
1.1 基本数据类型与运算符
变量( Variable ) Java中变量的缺省初值都是确定的:
布尔变量的初值为:false 整数变量的初值为:0 浮点数变量的初值为:0.0 引用(复合)变量的初值为:null 在方法实现中定义的变量必须显式的初始化。
1.1 基本数据类型与运算符
常量(Constant) Java中的常量值是用文字串表示的,常量一旦被 初始化就不能改变。
Java中用关键字final来定义,定义格式为:
final Type ConstName = value [, ConstName =value …]; final int SIZE = 100; final double PI=3.14159;
1.3 数组与字符串
字符串 • 在Java中,存放字符串常量的对象用String类,
对于字符串变量,由于程序中经常需要对它做添 加,插入,修改等操作,一般存放在StringBuffer 类的对象中。
1.3 数组与字符串
字符串 • 字符串常量使用双引号括住的一串字符,比如:
" Hello world! " • Java编译器自动为每一个字符串常量生成一个
… arrayName[arraySize-1]=new type(paramList);

1 UML概述

1 UML概述

活动图:描述活动之间的控制流
交互图:描述对象之间的交互情况 时序图:重点描述消息发生的事件顺序 协作图:重点描述各个对象之间收发消息 的情况
UML图
UML图
静态图 类图 构件图 对象图 部署图 用案图 协作图 状态图
动态图
序列图 活动图
关于保险的一张类图
客 户 保险单 1 1..* Owns Contains 0..* 0..* 1..* 1..* 代理 Handles
定的服务或执行特定的行为。
建模语言的出现
公认的面向对象建模语言出现于70年代中期。 从1989年到1994年,其数量从不到十种增加到了
五十多种。但是OO方法的用户并不了解 不同建
模语言的优缺点及相互之间的差异,因而很难根 据应用特点选择合适的建模语言,于是爆发了一 场“方法大战”。 90年代中,一批新方法出现了,其中最引入注目
静态图
类图:展示对象类、接口、及其相互合作与关 联 包图:在UML 1.1 以后,它不再被看作一 种独立的模型图
对象图:展示对象及其相互之间的关系
实现图:
组件图:描述部件的物理结构以及各部件 之间的依赖关系;
部署图:定义系统中软硬件的物理构架。
动态图
状态图:描述由事件驱动的系统/对象的状态 转移


结构化测试方法
面向对象的测试方法
谁应该建模


• •
业务建模:以领域专家为主,需求分析人员是主力,系统分析员、 架构师可参与
需求模型:以需求分析人员为主,系统分析员是主力,领域专家提 供指导,架构师和资深开发人员参与
设计模型:高层设计模型以架构师为主,系统分析员从需求方面提 供支持,资深开发人员从技术实现方面提供支持。详细设计模型则 以资深开发人员为主,架构师提供指导。 实现模型:以资深开发人员(设计人员)为主,架构师提供总体指 导。

面向对象程序设计01-3.面向对象技术

面向对象程序设计01-3.面向对象技术
16
面向对象的基本特征
多态
只要图形家族提供的接口不变,那么图形家族内部发 生变化,比如增加了一个五边形派生类,都不会影响 外部的对象。 多态能确保类接口的稳定性,从而能够形成稳定且易 于理解的程序结构。 多态增加了软件的灵活性,便于系统功能的扩充。
17
面向对象的软件开发方法
软件开发过程主要包括分析、设计、编码、测试等阶段 。面向对象的开发方法就是将面向对象的思想应用于软 件开发过程中的各个阶段,其主要过程为:从实际问题 出发,用面向对象的方法分析用户需求,建立分析模型 ;然后,面向计算机的实现进行系统设计,建立系统的 设计模型;最后,利用面向对象的编程语言实现软件系 统。下图显示了面向对象软件开发的主要过程。
面向对象的UML描述
3.类之间的关系
(2)聚集与组合
组合(composition)是一种特殊形式的聚集,其特殊在于 整体对象负责创建和删除部分对象,部分对象只属于一 个整体对象。两者是一种“共存亡”的关系。UML中用实 心菱形表示。
32
面向对象的UML描述
3.类之间的关系
(3)泛化
泛化(generalization)是一般事物和具体事物之间的关 系。具体事物与一般事物有完全一致的属性和操作,并 对其进行了扩展。UML中用从派生类指向基类的箭头表示 ,箭头是一个空三角形。存在如下两种画法:
面向对象技术概述
面向对象的基本特征 面向对象的软件开发方法 面向对象的UML描述
1
面向对象技术概述
面向对象方法认为,客观世界是由各种对象组成的,
任何事物都是对象。每个对象都有自己的运动规律和内部
状态。复杂的对象可以由相对比较简单的各种对象以某种
方式构成。不同对象的组合及相互作用就构成了我们要研

uml 基础教程 第一章--uml与面向对象

uml 基础教程 第一章--uml与面向对象
第一章 UML与面向对象
2020/6/13
基础内容:类和对象的关系 重点掌握:面向对象的四个特征 一般了解:面向对象项目的设计
2020/6/13
1.1 面向对象开发
1.1.1 理解面向对象
一、对象
• 面向对象认为客观世界是由各种各样的对象组成, 每个对象都有自己的数据和操作,对象和对象之间 是通过对象暴露在外的接口进行调用的,不同对象 之间的相互作用和联系构成了各种系统。
2020/6/13
•面向对象概念中,这种关系叫继承。每个Appliance 的子类都继承了Appliance的特征。同时,要重点注 意下,每个子类都增加了自己的属性和操作。 •因此,继承是一种连接类与类之间的层次模型,是 指特殊类的对象拥有其一般类的属性和行为。特殊 类中不必重新对已经在一般类中所定义的属性和行 为进行定义。特殊类自动地、隐含地拥有其一般类 的属性和行为。
0/6/13
• 在设计阶段,要考虑的是定义软件系统中技术细 节的类(如处理用户接口、数据库、通信和并行性 等问题的类),把分析阶段的结果扩展成技术解决 方案。
• 构造阶段,把设计阶段的类转换成某种面向对象 程序设计语言的的代码(工具可以完成)。
• 测试阶段,系统通常需要经过单元测试、集成测 试、系统测试和验收测试。不同的测试小组使用不 同的UML图作为测试依据:单元测试使用类图和类 规格说明;集成测试使用构件图和协作图;系统测 试使用用例图来验证系统的行为;验收测试由用户 进行,以验证系统测试的结果是否满足在分析阶段 确定的需求。
2020/6/13
1.2 UML简介
1.2.1 对系统建模的必要性
UML具体有哪些作用:
• (1)对于软件系统用户,软件的开发模型向他们 描述了软件开发者对于软件系统需求的理解。

面向对象技术概述

面向对象技术概述


常用软件开发方法

面向过程的方法: 面向过程的方法主要考虑事务流和 要完成的功能,数据被当作系统整体的一个部分来处 理,常常是分析过程的一个副产品。其代表方法是结 构化分析与设计方法.
面向数据的方法: 面向数据的方法将数据作为一种 独立的资源对待,数据是支持所有应用项目的基 础,处理过程也是重要的,但是它们必须存取数 据库中的数据。其代表方法是数据库设计方法。 信息工程的方法:信息工程是在软件工程和数据库 基础上形成和发展起来的,其方法采用的前提是 数据位于现代数据处理系统的中心,数据类型不 会发生很大的变化,因此这种方法是面向数据的 方法。

消息一般由三个部分组成:(接受消息的对象,接受 对象应采用的方法,方法所需要的参数)。计算任务 通常先由某一对象受理(该对象接收到某种消息),然 后,通过对象间的通信,计算任务就分散到各个有关 对象中,最后,再由某些对象给出结果(通过发送消 息)。 对象可以动态地创建,创建后即可以活动。对象在不 同时刻可处于不同状态,对象的活动是指对象状态的 改变,它是由对象所接收的消息引发的。对象一经创 建,就能接收消息,并向其他对象发送消息。对象接 收到消息后,可能出现:(1)自身状态改变(2)创建新 对象(3)向其他对象发送消息。


面向对象分析


对象模型。对象模型表示静态的、结构化的系统的“数据”性 质。它是对模拟客观世界实体的对象以及对象彼此间的关系的 映射,描述了系统的静态结构。面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模 型,提供了实质性的框架。在建立对象模型时,人们的目标是 从客观世界中提炼出对具体应用有价值的概念。 动态模型。动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。 功能模型。功能模型表示变化的系统的“功能”性质,它指明 了系统应该“做什么”,因此更直接地反映了用户对目标系统 的需求。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 面向对象方法学 1.1.1 面向对象方法学概述
程序设计的目的是设计出可以使用的软件系统。 为了设计出高质量的软件系统就需要研究程序设 计中涉及的基本概念、描述工具和所采用的方法。 至今为止,常见的有结构化程序设计方法和面向 对象程序设计方法。
1.1 面向对象方法学 随着高级语言的出现人们希望计算机可以完成更复 杂的工作,这就要求编写规模更大、复杂度更高的 软件。随着软件复杂程度的提高,软件的开发和维 护费用也不断地在提高,人们需要更加有效的软件 开发方法,因此提出了结构化程序设计方法的概念 结构化程序设计方法主要特点是:自顶向下、逐步 求精;模块化;语句结构化。简单地说,利用结构 化程序设计方法实现程序设计需要经过两个基本过 程:分解和组装。
1.1 面向对象方法学 1.1.2 面向对象方法学的基本特征 面向对象程序设计的基本特征包括了封装性、继 承性和多态性,对象之间是通过消息相互作用的。 1.抽象 抽象是解决实际问题经常采用的策略,也是人类 认识世界的本能方式。所谓抽象是指从许多事物 中,舍弃个别的、非本质的属性,抽取出共同的、 本质的属性的过程,它是形成概念的必要手段。
1.1 面向对象方法学
在面向对象的程序设计中,封装是指将对象的属 性和行为分别用数据结构和方法描述,并将它们 绑定在一起形成一个可供访问的基本逻辑单元。 用户对数据结构的访问ห้องสมุดไป่ตู้能通过提供的方法实施。 封装是实现数据隐藏的有效手段,是一种很好的 管理数据与操作行为的机制,它可以保证数据结 构的安全性,提高了应用系统的可维护性和可移 植性。
1.1 面向对象方法学 2.封装 封装是指将现实世界中某个事物的属性与行为聚 集在一个逻辑单元内部的机制。封装指将对象属 性和操作结合在一起,构成一个独立的对象。它 的内部信息是隐藏的,不允许外界直接存取对象 的属性,而只能通过指定的接口与对象联系。
实际上,封装并不是新的概念,在日常生活中, 处处可以看到封装机制的应用。例如,一台日常 的电视机 。
1.1 面向对象方法学 5.多态 当对象收到消息时要予以响应,不同的类对象收 到同一个消息可以产生完全不同的响应效果,这 种现象叫做多态。利用多态机制,用户可以发送 一个通用的消息,而实现的细节由接收对象自行 决定,这样,同一个消息可能会导致调用不同的 方法。 在面向对象程序设计中,多态性依托于继承性。 利用类的继承机制可以形成一个类的层次结构, 把具有通用功能的消息放在较高层次,而具体的 实现放在较低层次,在这些较低层次上生成的对 象能够对通用消息作出不同的响应。
1.1 面向对象方法学 4.继承 继承是类之间的一种常见关系。这种关系为共享 数据和操作提供了一种良好的机制。通过继承, 一个类的定义可以基于另外一个已经存在的类, 分别将它们称为“子类”和“父类”,“父类” 又称为“基类”。子类可以继承父类的全部内容, 并在此基础上,对父类表述的内容加以扩展或覆 盖。 根据继承关系的特性,继承分为两种主要形式: 直接继承和间接继承 单继承和多继承
1.1 面向对象方法学 3.消息 消息是指对象之间在交互中所传递的通信信息。 简单地说,消息是一个对象要求另一个对象实施 某项操作的请求。在一条消息中,需要包含消息 的接收者和要求接收者执行哪项操作的请求,但 并没有说明应该怎样做。具体的操作过程由接收 者自行决定,这样可以很好地保证系统的封装性。 消息传递是对象之间相互联系的惟一途径。发送 者发送消息,接收者接收该消息,并通过调用相 应的方法响应该消息。
1.1 面向对象方法学
数据抽象是一种更高级别的抽象方法。它将现实 世界中存在的事物作为抽象单元,其抽象内容既 包括事物的属性特征,也包括行为特征。数据抽 象是面向对象程序设计所采用的核心方法,通过 数据抽象得到了现实世界的一个一个的事物,这 些事物就是一个一个的对象。
例如现实世界中一个学校有许多学生,在抽象过 程中每个学生可以用学号、姓名、性别、年龄、 家庭住址等信息进行描述;同时每个学生还可以 有注册学籍、选修课程等行为。
1.1 面向对象方法学
1.1 面向对象方法学 随着软件规模的进一步增加,结构化的程序设计方 法的弱点也就暴露出来了,结构化程序设计方法分 析问题主要是从计算机实现的角度来考虑问题,面 对复杂问题时,不利于理清问题本身。因此对问题 的抽象程度比较低,程序的重用性和扩展性比较低。 在这种情况下面向对象程序设计方法应运而生。 面向对象程序设计方法包括面向对象分析、面向对 象设计和使用面向对象程序设计语言的实现,还可 以包括面向对象的测试。采用面向对象方法进行分 析时,所分析的问题都使用对象来描述,对象之间 通过消息进行联系。
面向对象技术及UML教程
第1章 面向对象技术概述
第1章 面向对象技术概述
面向对象(Object-Oriented)不仅是一些具体的软 件开发技术与策略,而是一整套关于如何看待软件 系统与现实世界的关系,用什么观点来研究问题并 进行求解,以及如何进行系统构造的软件方法学。 本章主要先来了解一下面向对象技术的基本知识和 基本概念,为后面介绍面向对象分析和设计建模语 言UML做好铺垫。面向对象程序设计方法已经被大 家广泛接受,成为当前最流行的程序设计方法。
把这种思想应用到软件开发上,开发人员可以把需 要解决的问题看成是多个独立的,同时又相互联系 的对象组成的一个系统,这样有助于开发人员更深 入地理解问题本身。 什么是面向对象程序设计语言呢?主要看这个语言 定义的类型是否都支持对象的声明,以及这个语言 对对象的封装、继承和多态的支持程度,不同的语 言面向对象的程度不同 。
1.1 面向对象方法学
什么是面向对象呢?这里从二个层次来介绍这个概 念:第一个层次就是面向对象思想;第二个层次是 面向对象程序设计语言。
严格意义上说,面向对象思想与程序设计无关,它 是人们对自然世界的一种认识,把世界中的所有事 物都看作是对象,每个对象既是独立的,同时这些 对象又是相互联系的。
1.1 面向对象方法学
相关文档
最新文档