面向对象分析与设计(UML[1][1]20版第2章对象的概念资料
《面向对象分析与设计(UML)》课程大作业大纲
《面向对象分析与设计(UML)》课程大作业大纲一、课程简介《面向对象分析与设计(UML)》是一门是软件工程专业重要的、实践性很强的一门必修课。
UML是一种定义良好、易于表达、功能强大且适用于各种应用领域的建模语言,已被OMG采纳为标准。
目前UML已成为面向对象技术领域内占主导地位的标准建模语言。
掌握UML 语言,不仅有助于理解面向对象的分析与设计方法,也有助于对软件开发全过程的理解。
通过该课程的学习,使学生能基本掌握面向象技术基本概念和面向对象分析与设计方法,能够使用UML 语言来进行初步的系统分析与设计。
二、课程目标结合专业培养目标,本课程大作业要达到的目标如下:1.知识与技能目标通过本课程的学习,使学生掌握面向对象分析与设计基本理论和使用统一建模语言(UML)实现软件生命周期模型的六大阶段(需求分析,概要设计,详细设计,编码,测试,维护)的一般性原理、主要思想、关键技术;了解和掌握各阶段的规范文档书写格式,通过实验项目实践活动,培养学生理解和应用相关的知识技能,开发软件项目。
2.过程与方法目标了解面向对象分析与设计的发展历史及趋势,掌握运用UML 理论及方法解决实际问题的分析步骤。
通过具体方法的学习与运用,理解它们的优势与不足,从而锻炼和提高思维分析能力(归纳能力,演绎能力,对比分析能力,变通能力,总结能力,抽象能力)。
3.软件工程文档写作目标通过面向对象程序设计实践,培养作为一个软件工程技术人员必须具备的文档写作能力,严谨治学的科学研究态度,为未来的学习、工作和科研奠定良好的理论基础和实践基础。
通过本课程的大作业的训练,使学生在分析问题、解决问题等方面得到锻炼,增强学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
三、作业设计任务由指导教师向学生提供一定数量的设计题目,每一题目所用到的知识至少要覆盖《面向对象分析与设计(UML)》教学大纲中的大部分内容,主要包括利用UML2进行面向对象分析与设计的方法,运用面向对象的一般原则和模式进行应用系统的分析和设计建模。
电子教案 UML面向对象设计与分析教程
本章概述 本章的学习目标 主要内容
第1页
本章概述
• 面向对象技术是一种系统开发方法,是软件工程 学的一个重要分支。面向对象建模与设计是使用 现实世界的概念模型来思考问题的一种方法。对 于理解问题、与应用领域专家交流、建模企业级 应用、编写文档、设计程序和数据库来说, 面向 对象模型都非常有用。
第8页
一、面向对象思想的基本概念
2、对象
➢对象(object)是面向对象系统的基本构造块,是一些相 关的变量和方法的软件集。
第9页
一、面向对象思想的基本概念
2、对象
➢可以利用对象来代表现实世界中的对象: 可用一个飞行试驾程序来代表现实世界中的正在飞行 的飞机; 用机床数控程序来代表现实世界的运行的机床。
第33页
二、面向对象的三大要素
1、封装
➢封装性应满足的条件: 有一个清晰的边界; 有确定的接口; 受保护的内部实现。
第34页
二、面向对象的三大要素
1、封装
➢封装是面向对象编程防止程序员相互干扰的一种方式。 ➢例子:借钱。
第35页
二、面向对象的三大要素
1、封装
➢封装是一个重要原则,是指把属性和操作封装进一个对 象里,它的内部信息对外界隐藏,不允许外界直接存取对 象的属性,只能通过对象提供的有限的接口对对象的属性 数据进行操作。 ➢封装的信息屏蔽作用反映了事物的相对独立性,我们可 以只关心它对外所提供的接口,即能够提供什么样的服务, 而不用去关注其内部的细节问题。
第10页
一、面向对象思想的基本概念
2、对象
➢同样可以使用对象来代表抽象的概念: 点击按钮事件就是一个用在GUI窗口系统的公共对象, 它可以代表用户点击程序界面中的一个确定按钮的动作; 现实世界中的一个合同、银行账号、游戏方法、某个 规则、基准等也使用对象代表。
面向对象设计与UML建模
面向对象设计与UML建模面向对象设计是一种软件开发方法,它将现实世界的实体抽象为对象,并以对象之间的相互关系来组织和描述系统的行为。
而UML(统一建模语言)是一种用于可视化、规范化软件系统设计的标准建模语言。
本文将从面向对象设计的概念入手,介绍面向对象设计与UML建模的关系及应用。
一、面向对象设计的概念面向对象设计(Object-oriented Design)是一种以对象为中心的软件开发方法。
在面向对象设计中,将系统中的各个对象抽象出来,通过定义对象之间的属性和方法,以及对象之间的关系,来描述系统的功能和行为。
面向对象设计的核心思想是将现实世界的实体抽象为对象,对于每个对象,描述其属性和方法,并通过对象之间的交互来实现系统的功能。
这样的设计方式使得系统更加模块化,易于扩展和维护。
二、UML建模的概念UML(Unified Modeling Language)是一种用于规范化、可视化软件系统设计的标准建模语言。
它提供了一套丰富的符号和约定,用于描述系统的结构、行为和交互。
UML建模是面向对象设计的重要工具之一,它能够帮助开发人员更好地理解和设计系统。
通过使用UML,开发人员可以绘制出类图、时序图、用例图等各种类型的图表,来描述系统的不同方面和视角。
三、面向对象设计与UML建模的关系面向对象设计与UML建模是紧密相关的。
面向对象设计将系统抽象为对象,定义了对象的属性和方法,以及对象之间的关系。
而UML建模则是通过各种类型的图表来表示和描述这些对象、属性、方法和关系。
具体来说,面向对象设计中的类可以通过UML的类图来表示。
类图用于描述系统中的类及其之间的继承、关联、聚合等关系。
类图能够清晰地展示系统的结构,有助于开发人员对系统进行整体把握和分析。
此外,面向对象设计中的时序和交互可以通过UML的时序图、活动图和通信图来表示。
时序图用于描述对象之间的交互顺序,活动图用于描述系统的流程和行为,通信图用于描述对象之间的消息传递。
第2章 面向对象技术与UML-郭
在结构化方法中,现实世界被映射为功能(函数)的集合。
结构化方法的特点: 结构化程序设计:程序 = 算法 + 数据结构 从算法的角度进行建模,大量精力都集中在控制流程和 算法的分解上(功能分解)。 缺点:需求变动、维护困难
2.1 面向对象技术概述
面向对象方 法的引入: 软件复杂性 的增长, 使软件开发 越来越困难。 面向对象的 方法按照人 类的自然思 维的方式, 面对客观世 界建立软件 模型。
对象的标识(名字)
每一个对象都有一个唯一的标识, 即使其状态有可 能与其它对象一样。
no1 no2 no3
对象的状态(数据属性)
一个对象的状态是它反映于现实世界的一系列 属性:
基本描述 载客人数 它与其它对象的关系 任一时刻的历史状态
飞机类型 飞机驾驶员 所属的航空公司
可能的状态: 停泊 班机 747 飞行 着陆
继承的描述
子类可以继承父类的全部属性与操作,并 可以添加或重新定义所继承的方法。 如果是重新定义,称为覆盖。
注意:覆盖和重载是不同的。
覆盖的例子
重载的例子
public class A{ String name; public String getValues(){ return “Name is”+name; } } public class B extends A{ String address; public String getValues(){ return “address is”+address; } }
6. 多态性
定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 例子: 动物叫
面向对象分析与设计
面向对象分析与设计第三章UML是一种建模语言,用于对软件系统制品进行规约。
可视化构造和文档化,也可以用于业务建模以及其他非软件系统的建模。
因此他只是一种建模语言,而不是一种建模方法UML用于建立系统的分析模型和设计模型,而不是用于编程UML的主题部分并不是一种形式化语言,它只是部分的采用了形式化语言的定义方式,而且也不是严格的形式化第四章抽象是面向对象方法中使用最为广泛的原则:1:系统中的对象是对现实世界中事物的抽象2:类是对象的抽象3:一般类是对特殊类的抽象4:属性是事物静态特征的抽象5:操作是事物动态特征的抽象粒度控制:人在面对一个复杂的问题时,不可能在同一时刻纵观全局,又能洞察秋毫。
因此需要控制自己的视野;考虑全局时,注重其大的组成部分;暂时不去详细考察每一部分的具体细节;考虑某个部分的细节时暂时撇开其余部分和宏观上的问题,这就是粒度控制。
行为分析:采用如下行为分析原则,以控制行为的复杂性:以对象为单位描述系统中的各种行为;通过消息描述对象之间的行为依赖关系认识行为的起因,区分主动行为和被动行为认识系统的并发行为用况图:把用况、参与者以及它们之间的关系用一些图形符号进行可视化表示,便得到用况图(use case diagram)用况图是直接描述需求的,因此它是一个需求模型模型图中表达不尽的信息,需要以文字和表格等方式做进一步描述,这就是模型规约。
OOA与OOD的关系:不同的目标、内容和抽象层次:通过OOA和OOD所得到的系统模型分别成为OOA模型和OOD 模型,它们都是对系统的抽象描述,但是属于不同的抽象层次。
OOA的主要内容是研究问题域和系统责任,运用面向对象的观点发现问题域中与系统责任有关的对象,认识对象的内部特征和各类对象之间的关系,目标是建立一个直接映射问题域,符合用户需求的OOA模型。
OOD的主要内容是以OOA为基础,针对选定的实现平台进行系统设计,目标是产生一个能够在选定的软硬件平台上实现的OOD模型。
《面向对象分析与设计》
《面向对象分析与设计》第一部分面向对象技术的基本概念和基本方法1.1 软件开发方法的发展计算机诞生之后,计算机技术一直处于高速发展状态,计算机科学技术的发展由原来只依靠硬件的发展逐渐变为更多地依靠软件的发展。
事实上,软件技术的发展经历了多代历程。
第一代(20世纪50-60年代),是以FORTRAN和ALGOL等编程语言为标志的算法技术时代。
那时,程序设计全靠人们发挥创造才能,全靠技巧和窍门。
基于这种算法技术的软件生产率非常低,程序很难看懂,甚至程序员自己写的程序过一段时间后自己也看不懂,这给软件的修改、维护带来极大的困难。
于是60年代末出现了“软件危机”。
第二代(20世纪70年代末开始到80年代盛行的),以PASCAL、COBOL等编程语言和关系数据库管理系统为标志的结构化系统分析和设计技术。
为了克服软件危机,人们主要从如下两个方向做了努力:一是从管理的角度改进软件开发方法,提出了软件工程方法,大大改善了软件的质量与可维护性。
二是侧重于对软件开发过程中分析与设计方法的研究和改进。
这方面的重要成果就是在70年代出现了风靡一时的结构化开发方法—结构化系统分析和设计技术。
第三代(80年代开始至今还盛行的)以Smalltalk、C++等为代表的面向对象软件开发方法。
问题1:面向对象软件开发方法发展的动因是什么?传统的结构化程序设计以算法为核心,把本来密切相关的数据和对数据的操作分离开来,很难保持数据和操作的一致性,其软件开发方法也不符合人们的自然思维习惯,设计出来的软件系统其解空间与问题空间不一致,致使程序难以理解、修改和扩充,最终导致程序复杂性问题和软件危机。
为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。
问题2:面向对象软件开发方法的优点有哪些?面向对象开发方法一改过去传统的以功能分析和功能分解为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。
面向对象系统分析与设计教学大纲
《面向对象系统分析与设计》教学大纲一、课程的性质和任务面向对象系统分析与设计课程是计算机科学与技术本科专业的一门重要的专业课。
通过本课程的学习,使学生在已有的计算机软、硬件基础知识、程序设计知识、数据库和网络通信知识的基础上系统掌握面向对象系统分析与设计的基本方法和技术,并具有针对特定环境下的应用问题进行信息系统开发(包括系统分析、设计与实现)的能力。
二、课程的基本要求1.掌握系统分析与设计的基本概念和方法。
2.掌握面向对象的基本概念。
3.掌握面向对象系统分析与设计的常用方法和UML统一建摸语言。
4.能运用面向对象系统分析与设计的基本技术方法和开发工具,承当软件项目的开发,设计和管理。
三、课程的核心1.基本概念:系统、系统分析与设计、面向对象基本概念(对象和类、属性、消息、方法等)2.基本方法:面向对象系统分析与设计方法(包括OMT方法、UML统一建模语言等)、项目管理方法四、预备知识在学习本课程之前,应具有计算机、网络和数据库的基础知识、并应至少掌握一门面向对象程序设计语言(如VC++、JAVA或VB),至少掌握一种数据库管理系统(如ORACLE、SQL SERVER或ACCESS)的使用。
五、教学环节本课程由课堂教学、实验和课程设计等教学环节组成。
针对本课程的特点:技术新、外文资料多,课堂教学采用双语教学方式,使用多媒体教学手段,将理论教学与案例讲解、实际系统演示相结合,使学生系统掌握本课程的基本理论知识以及方法和技术;实验环节中要求学生学习并熟练掌握一种或几种流行的系统建模工具、数据库和编程语言以及项目管理软件的使用;课程设计环节包括设计题目的讨论、分析、设计和实现,通过课程设计使学生将理论应用于实践,加强学生对实际问题的分析和解决能力,以及团体协作和项目管理能力。
通过这些教学环节,将学生培养成为基础理论扎实、动手能力强,并且能力全面的综合型人才。
六、教学内容(一)课堂教学内容第一章系统分析与设计概论(Introduction to System Analysis and Design)1.1系统分析与设计基本概念(What is System Analysis and Design)1.1.1 系统和信息系统(System and Information System)1.1.2 系统分析与设计(System Analysis and Design)1.1.3信息系统生命期和信息系统开发生命期(System Life Cycle and the Process of System Development)1.1.4 信息系统分析和设计的基本原则(The Principles for System Analysis and Design)1.2系统开发模型和方法(System Development Models and Methods)1.2.1 常用模型:瀑布模型(Waterfall Model)螺旋模型(Spiral Model)喷泉模型(Fountain Model)1.2.2 结构化系统分析与设计方法(Structured System Analysis and Design)1.2.3 原型法(Prototyping)1.2.4 面向对象系统分析与设计方法(Object-Oriented System Analysis and Design)1.2.5 计算机辅助软件工程(CASE, Computer-Aided Software Engineering) 第二章面向对象的基本概念(Concepts of Object-Oriented Technology)2.1 对象和类(Objects and Classes)2.2 属性、消息、方法(Attributes、Messages、Methods)2.3 关系:关联(Associations)一般-特殊(is-a)整体-部分(part-of)2.4 状态、抽象化、封装、继承(Status、Abstraction、Encapsulation、Inheritance)第三章面向对象系统分析与设计方法(Object-Oriented System Analysis and Design Method)3.1 面向对象开发过程概述(The Process of Object-Oriented System Development)3.2 OMT方法3.3 Shlaer & Mellor法3.4 Coad & Yourdon法3.5 Booch法3.6 UML统一建模语言(Unified Modeling Language)第四章面向对象编程(Object-Oriented Programming)4.1分析、设计、编程的流程(The Process of Analysis, Design and Programming)4.2分析、设计、编程的关系(The Relationship of Analysis, Design and Programming)第五章UML面向对象设计基础(Object-Oriented Design with Unified Modeling Language)5.1用户模型视图:用例图(Use Case Diagram)5.2结构模型视图:类图(Class Diagram)对象图(Object Diagram)5.3行为模型视图:序列图(Sequence Diagram)协作图(Collaboration Diagram)状态图(State Diagram)活动图(Activity Diagram)5.4实现模型视图:组件图(Component Diagram)5.5环境模型视图:展开图(Deployment Diagram)第六章UML面向对象开发(Unified Modeling Language Development Method)6.1 UML系统分析和建模(UML System Analysis and Modeling)6.2 UML系统设计和建模(UML System Design and Modeling)第七章项目管理(Project Management)7.1项目和项目管理的概念(What is a Project and Project Management)7.2 项目管理知识体系(PMBOK , Project Management Body Of Knowledge)7.3两个工具:PERT图(PERT Chart)甘特图(Gantt Chart)(二)实验1.学习并使用系统建模工具(Rational Rose、Microsoft Visio等)2.学习并运用程序设计语言进行数据库编程,程序设计语言可选择VC++、JAVA或VB,数据库可选择ORACLE、SQL SERVER或ACCESS。
《UML面向对象分析、建模与设计》教学大纲
UML面向对象分析、建模与设计课程教学大纲01课程说明课程代码:课程名称:UML面向对象分析、建模与设计/UML object-oriented analysis, modeling and design开课学期:4学分/学时:3/32+16课程类型:必修02课程的性质、目的与任务《UML面向对象分析、建模与设计》是软件工程专业中一门综合性很强的基础课程,主要内容包括软件工程与面向对象方法、UML的定义和背景、UML基础(UML构造块、UML通用机制、UML“4+1”架构、UML建模工具)、UML系统动态建模(用例图、活动图、状态机图、顺序图、通信图)、类图、对象图、包图、组件图、部署图、统一软件开发过程、UML具体实例等。
本课程的目的与任务是使学生通过本课程的学习,从UML的基本概念入手,由浅入深地认识和学习软件工程核心要素,以体系化、工程化的方法思考软件工程过程。
本课程除要求学生掌握UML的图示语法和语义,重点要求学生掌握设计软件的逻辑能力以及对软件内部各种组织结构的表达能力,掌握对事物的抽象能力和建模的基本思想,为更深入地学习和今后的实践打下良好的基础。
03教学内容及教学基本要求1.软件工程与面向对象方法(2学时)了解软件工程的概念和历史,了解软件工程的目标和原则;了解面向对象方法的概念和历史,了解面向对象方法的优点。
2.统一建模语言UML(2学时)了解UML的定义和历史背景;了解UML的目标和应用范围。
3.初识UML(2学时)掌握UML构造块,分别是事物、关系、图;掌握UML的通用机制;了解“4+1”架构;了解常用的UML建模工具。
4.用例图(2学时)了解用例的概念、设计方法和注意事项理解用例图的组成元素,分别为参与者、用例、用例图中的关系;理解并掌握用例图中的关系,分别为参与者间的泛化关系、参与者与用例的关联关系、用例间的泛化关系、用例间的依赖关系;理解用例描述的概念;掌握用例说明文档的书写;掌握用例图建模,分别为对系统的语境建模和对系统的需求建模;了解用例图的使用环境。
UML面向对象的分析与设计
定义用例
定义领域模型
定义交互图
定义设计类图
24
OOAD
OOA/D的简单示例-骰子游戏
• 软件模拟游戏者掷两个骰子,如果总点数是7 则赢得游戏,否则为输
25
OOAD
定义用例(需求阶段)
定义用例
定义领域模型
定义交互图
定义设计类图
• 需求分析可能包括人们使用应用的情节或场景, 这些情节或场景可以被编写成用例。
由用例描述可初步得出领域模型
Player
1
name
1
Plays 1
DiceGame
1
Rolls
2
Die
faceValue
2
Includes
图1-3 骰子游戏的局部领域模型
28
OOAD 分配对象职责并绘制交互图(OOD)
定义用例
定义领域模型
定义交互图
定义设计类图
• OOD关注的是软件对象的定义——它们的职责 和协作
• 顺序图(sequence diagram,UML的一种交互 图)是描述协作的常见表示法。
• 顺序图展示出软件对象之间的消息流,和由消 息引起的方法调用。
29
OOAD 骰子游戏:游戏者请求掷(两个)骰子。系统展示结果:如 果骰子总点数是7,则游戏者赢,否则游戏者输。
顺序图动态的展示了系统如何实现用例, 展示了对象的职责和协作
• 培养OO开发的重要能力:识别领域对象,设 计软件对象(为软件对象分配职责)
7
OOAD
资源: 教材及参考书
8
OOAD
教材结构安排
•教材编排特色: •不像传统教材按主题编排 •而是遵循UP(统一过程)中”Iterative”(迭代)思 想。
《UML面向对象分析与设计》课程教案
XX XX职业技术学院教案课程名称UML面向对象分析与设计授课专业班级________________ 授课教师XXX ____________授课时间20XX-2OXX年度第X学期XXXX职业技术学院教务处制教案书写规范与要求一、以每次课为一个备课单元书写。
二、每一备课单元书写下列内容:1.周次、课次、授课时间、章节名称;2.简要说明:教学目的、重点、难点、教学方法和授课手段(包括与课程相关的上机和实验、课件制作等);3.教学主要内容(教案主体)及教学方法手段;4.作业内容。
注:其余授课电子版文件待本课程结束后,交教务处统一刻成光盘存档。
UML面向对象分析与设计课程授课总体计划书XXXX职业技术学院教案周次:第1周课次:第1课授课时间:20XX年2月18日周次:第1周课次:第1课授课时间:20XX年2月18日对象通过对外提供的方法在系统中发挥自己的作用,当系统中的其它对象请求这个对象执行某个方法时,就向该对象发送一个消息,对象响应这个请求,完成指左的操作。
程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。
二、面向对象的三大要素而向对象的三大要素是:封装、继承.多态。
1、封装(EnCaPSlIIation)是把对象的状态和行为绑到一起的机制,把对象形成一个独立的整体,并且尽可能的隐藏对象的内部细节。
封装有两个含义:一是把对象的全部状态和行为结合一起,形成一个不可分割的整体。
对彖的私有属性只能够由对彖的行为来修改和读取。
二是尽可能隐蔽对象的内部细节,与外界的联系只能够通过外部接口来实现。
封装的信息屏蔽作用反映了事物的相对独立性,我们可以只关心它对外所提供的接口,即能够提供什么样的服务,而不用去关注其内部的细节问题。
2、继承(InhCritanCC)是一种连接类与类的之间的层次模型。
继承是指特殊类的对象拥有英一般类的属性和行为。
继承意味着“自动地拥有”,即在特殊类中不必重新对已经在一般类中所定义过的属性和行为进行定义,而是特殊类自动地、隐含地拥有其一般类的属性和行为。
面向对象分析与设计 侯爱民 chapter02
2.8 UML的工具
Rational Rose 2003。Rational公司开发 的用于分析和设计面向对象软件系统的工 具。Grady Booch,Ivar Jacobson,Jim Rumbaugh此时是Rational公司的员工。 Together 6.1。用纯Java开发的工具。 ArgoUML v0.14。开放源代码的工具。 其他工具,Visio,Visual UML。
2.1 UML的历史
召开时间 UML98 UML99 UML2000 UML2001 UML2002 UML2003 1998.6.3-4 1999.10.28-30 2000.10.2-6 2001.10.1-5 召开地点 法国Mulhouse 美国科罗拉多 州Fort Collins 英国York 加拿大多伦多 www.yy.ics.kei o.ac.jp www.cs.york.a www.cs.toront www.inf.tudresden.de www.umlconfe 会议网址
2.1 UML的历史
众多的OO方法: 1991年,Grady Booch,Booch方法, 比较适合于系统的设计和构造。 1991年,James Rumbaugh,OMT 方法,Object Modelling Technique, 比较适合于分析和描述以数据为中心 的信息系统。
2.1 UML的历史
2.3 UML的构成
事物基本构造块关系 源自 命名 范围规则 UML的构成
可见性
完整性 执行 规范说明 修饰
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章 对象的概念
2019/10/18
33
前提条件:
函数库 类库 设计模式 框架
第2章 对象的概念
2019/10/18
34
第2章 对象的概念
遵循的规则
样式规则 完整的文档说明 准备编写比需要更多的代码 使用模式和框架 设计客户-提供者对象 使每个对象只有一个目标:高聚合 把接口与业务行为分开 为问题和命令设计对象
4
第2章 对象的概念
在面向对象编程中如何创建对象?
new Person(“Sue Smith”); aPerson = new Person(“Sue Smith”);
指派
2019/10/18
5
第2章 对象的概念
对象具有独立存在性 在面向对象的系统中,一个软件对象仅表示一
个真实世界中的物体
第2章 对象的概念
第2章 对象的概念
2019/10/18
1
学习目标: • 理解对象的含义 • 理解对象使用消息进行交流以完成
任务的方式 • 理解垃圾收集机制
• 理解类的含义 • 理解代码复用
第2章 对象的概念
使用面向对象的理由: 便于理解 便于交流 数据和过程(操作)不是人为分离的 代码更容易重用 面向对象是成熟的
下面哪些是关联,哪些是聚合?
街道上的房子
关联
书中的书页
聚合或关联
交响乐中的音符
聚合
家庭娱乐系统中的组件(电视机、VCR、大型
录音机、扩音器、游戏控制台)
关联
2019/10/18
13
第2章 对象的概念
除了关联和聚合之外,对象还有树(tree)和 图(graph)
树是层次结构的另一个名称 图是对象组之间连接的一个任意集合
代码,更容易维护。
2019/10/18
36
2019/10/18
3
第2章 对象的概念
对象(object)是一个实体,一个名 词。
所有的对象都有属性(attribute)和 行为(操作、behavior)
在面向对象的软件中,真实世界中的 对象会转化为代码
万事万物皆对象
建立模型(model)-尽力模拟,而 非全部
2019/10/18
2019/10/18
35
第2章 对象的概念
软件对象表示真实世界的物体,由属性来描述,可 用执行行为
消息允许对象交流和协作,以完成人为 当创建对象的程序不再需要该对象时,垃圾收集会
释放所占用的空间 类允许组合类似的对象,在相关对象之间共享元素
的定义 重用代码可用使开发更快、更简单,获得更健壮的
错误就会越来越少)
2019/10/18
31
常见的应用领域:
用户界面 数据库访问 分布式编程 输入/输出 网络访问 安全认证 2D/3D图形 电子邮件 图像处理、多媒体编码和解码等
2019/10/18
第2章 对象的概念
32
重用代码的形式:
重用系统中的函数 重用对象中的方法 重用系统中的类 在系统之间重用函数 在系统之间重用方法
例如:String(类),int(类型) 原型和对象的区别:原型可以相互赋值,但不
能给原型发送消息
2019/10/18
29
第2章 对象的概念
本书所采用的说法,在授课过程中将逐一介绍 如:属性、方法、复合、继承等
2019/10/18
30
第2章 对象的概念
重用代码的目的:
开发更快速、简单 维护更容易(代码较少,人为错误就较少) 更健壮的代码(每次重用代码时,都会重复测试它,
socket对象监听某个端口的入站请求 servlet是Web服务器拥有的对象,它接收从Web浏览器传送源自的请求2019/10/18
24
第2章 对象的概念
每个新对象都要占用计算机内存的一个小区域 当创建对象的程序不再使用该对象,怎么办? 垃圾收集 运行时系统(run-time system)负责监视系
顾客
这儿有什么面包 两种白面包,一种全麦面包
我要一条全麦面包 1.75欧元
给你钱 这是面包 这是找零
面包师
2019/10/18
20
第2章 对象的概念
顾客
getAvailableLoaves() 两种白面包,一种全麦面包
getPriceOf(wholemeal) 1.75欧元
buy(wholemeal) 全麦面包
17
第2章 对象的概念
注意:某些对象间的消息不能够被执行(表2-1)
2019/10/18
18
第2章 对象的概念
软件对象收到消息后,会启动操作 消息可以带参数(parameter,或argument)
aPerson.getHeight(aUnit)
2019/10/18
19
第2章 对象的概念
askForHelp()
object2 data
askForHelp() doSubTask()
object3 data askForMoreHelp()
2019/10/18
23
第2章 对象的概念
main操作的理念不仅应用在控制台上执行的程 序,也适用于更复杂的程序:
用户界面的main操作创建顶级窗口 Web服务器的main操作有一个无限循环,告诉
anotherPassenger
aDriver
2019/10/18
11
第2章 对象的概念
聚合
firstFloor
aHouse
secondFloor
diningRoom livingRoom
kitchen mainBedroom kidsBedroom
bathroom
2019/10/18
12
第2章 对象的概念
面包师
pay(2.00l) 0.25欧元
2019/10/18
21
第2章 对象的概念
面向对象的程序在工作时,首先要创建对象, 把它们连接在一起,让它们彼此发送消息,相 互协作。
但谁启动这个过程? 为此,程序必修有一个入口点。例如:main函
数
2019/10/18
22
第2章 对象的概念
object1 data main()
2019/10/18
6
第2章 对象的概念
把对象显示在图中,便于描述和 分析
表示法:UML对象图
anObject
attribute1 attribute2
operation1() operation2() operation3()
2019/10/18
7
第2章 对象的概念
一个咖啡机对象
aCoffeeMachine
在面向对象的程序中,程序所需要的所有信息 和服务都必须在某个地方可用
共享数据:作为类属性存在 单独数据:作为方法(操作)中的变量存在
对象之间可以相互使用数据和操作
2019/10/18
28
第2章 对象的概念
大多数面向对象的语言除了对象、类外,还有 非对象类型,即原型(primitive)
2019/10/18
14
第2章 对象的概念
对象图中的连接称为链接(link)
可导航性:如果要说明一个对象知道 另一个对象的位置,则通过箭头加以 说明
address aCustomer
name
anAddress
house=10 street county postcode=“TL5 10R”
统
2019/10/18
25
第2章 对象的概念
类封装了一组对象的公共属性 对象是类的实例化 类之间也存在关系,如:组合、继承、多态等
2019/10/18
26
第2章 对象的概念
面向对象使用类来描述某种对象拥有的编程元 素
参见Actor.java。
2019/10/18
27
第2章 对象的概念
drinkPrices avaliableDrinks drinkRecipes
displayDrinks() selectDrink() dispenseDrink() acceptMoney()
2019/10/18
8
第2章 对象的概念
封装是指对象在其操作中隐藏属性 隐藏的属性称为私有属性 封装是编程语言防止程序员相互干扰的一种方
式
2019/10/18
9
第2章 对象的概念
对象不是孤立的,对象间存在直接或间接、强 或弱的联系
对象建模存在的对象关系:关联或聚合 二者的区别:
关联是一种弱连接,不完全相互依赖 聚合是一种强连接,成为一个更大的对象
2019/10/18
10
第2章 对象的概念
关联
aPassenger aCar
aString
2019/10/18
15
第2章 对象的概念
对象一旦建立联系,即可通过协作完成更复杂 的任务
对象在协作时相互发送消息
发送方
消息 回应
接收方
2019/10/18
16
第2章 对象的概念
aClock
现在几点 14:00
你叫什么名字 “Liz” aDriver
aCar
启动引擎
2019/10/18