第六章 面向对象的设计

合集下载

软件工程 面向对象分析与设计PPT课件

软件工程  面向对象分析与设计PPT课件

面向过程
围绕功能,函数,数据公用,兼顾很多细节 系统规模大、数据多、操作烦杂,程序员难以应付 厂长,直接指挥每一个工人选用材料生产汽车
面向对象
面对的是一个个对象 实际上,每一组数据有特定的用途,一组操作调用一组数据,
将这组数据和操作代码,封装成一个对象,与外界相对隔离, 相对独立 厂长-车间1(发动机)车间2(轮胎)车间3(底盘)…… 类,对象,对象间接送消息,完成任务 降低难度,减少出错机会
面向对象分析的基本过程
面向对象分析法体现 在过程上的特点:不 强调活动的顺序,允 许各种活动的交替、 回溯进行
定义use case
发现对象


型 开
定义属性及服务
细 说


建立结构与连接
划分主题
建立交互图
1.23
© 2009 by Duym
Software Engineering
面向过程(po)与面向对象(OO)
利用自己已建立的类,或别人的放在类库中的类,缩短开 发周期
1.14
© 2009 by Duym
Software Engineering
2.5多态(polymorphism)
一班、二班、三班 铃声响了,走进不同的教室,上不同的课程
向不同的对象,发出相同的消息,执行不同的 操作
鼠标双击文件,exe文件则运行该文件,doc文件则运行 word打开该文档
对象模型是客观世界对象、属性以及对象彼 此间关系的抽象表达,描述了系统的静态结 构
表示方法
类与对象 结构与连接
一般特殊关系,分类关系,归纳关系,继承 整体部分关系,组成关系 实例连接,对象间属性之间的静态联系 消息连接,对象行为之间的动态联系

第6 章 面向对象的软件设计PPT课件

第6 章 面向对象的软件设计PPT课件

第6 章 面向对象的软件设计
(7)效率 (8)持久保存对象 (9)参数化类 (10)开发环境 2.面向对象语言的选择 (1)可复用性 (2)类库和开发环境 (3)其他因素
第6 章 面向对象的软件设计
6.4.2 程序设计风格 1.提高可重用性 (1)提高方法的内聚 (2)减小方法的规模 (3)保持方法的一致性 (4)把策略与实现分开 (5)全面覆盖
第6 章 面向对象的软件设计
举例:
第6 章 面向对象的软件设计
6.3 详细设计
6.3.1 系统详细设计 1.细化和重组类 2.增加遗漏的属性,指定属性的类型和可见性 3.分配职责,定义执行每个职责的方法 通用职责分配软件模式 : (1)专家模式:应该将职责分配给信息专家 (2)创建者模式:如果类A和类B满足下列条件中的一个,
第6 章 面向对象的软件设计
2.详细设计 (1)细化、补充类的属性和操作 (2)设计类操作的实现算法 (3)优化数据访问路径 (4)实现外部交互式的控制 (5)调整类结构,增加继承性 (6)设计类之间的关联的实现方式 (7)确定对象属性的精确表示 (8)把类和关联打包归纳到模块中
第6 章 面向对象的软件设计
(6) 尽量不使用全局信息 (7)利用继承机制
第6 章 面向对象的软件设计
2.提高可扩充性 (1)封装实现策略 (2)不要用一个方法遍历多条关联链 (3)避免使用多分支语句 (4)精心确定公有方法 3.提高健壮性 (1)预防用户的操作错误 (2)检查参数的合法性 (3)不要预先确定限制条件 (4)先测试后优化
只和该子系统中的其他类协作; ✓ 子系统的数量不宜太多; ✓ 可以在子系统内部再次划分,以降低复杂度。
第6 章 面向对象的软件设计
6.2.2 物理体系结构建模 用构件图和部署图来描述系统的物理体系结构 1.构件图 构件图就是描述构件类及其它们之间的关系。 (1)构件间的依赖关系:主要是依赖关系,用

面向对象设计主要内容

面向对象设计主要内容

• 通常用一个名词给代表对象的类命名。一个类代表一个实 体,根据类可以建立程序所需要的任意多个实例。
• 类识别时候还要处理一个问题: 是将某一事物表示为一个 对象还是另一个对象的基本属性。
• 6.2.2 类职责的分派
• 类职责的分派是软件设计工作的一部分,每个类代表一个 具有某些行为的对象,对象的行为由这个类的方法定义。
5-7
• 6.4 类间关系 • 类之间最基本的关系是:依赖、聚合和继承。
• 6.4.1 依赖关系 • 类之间的依赖关系通常体现在一个类的方法调用另一个类
的一个方法。 • 一般而言,如果类A使用类B,则在类A中由一个或者多个
方法调用类B中一个或者多个方法。如果被调用的方法是 静态方法,则类A只需要通过类名引用B,如果被调用的方 法是非静态的,则A必须通过访问类B的实例来调用该方法。 • 一个对象获得对另一个类的对象访问控制的方式,是软件 设计中的重要决策。
面向对象设计主要内容
13
• 一个类也可以实现多个接口,在这种情况下,这个类应提 供所有接口种所有方法的实现代码。
• 使用implements字句声明一个类实现多个接口,接口名 用逗号分隔开。
class ManyThings implements interface1,interface2,interface3
{ =name;
this.acctNumber = acctNumber;
this.balance = balance;
}
面向对象设计主要内容
11
• 6.5 接口
• 接口表示一组公共的方法,通过这组方法可以与一个对象 交互。
• 一个Java接口是一组常量和抽象方法的集合。
• 抽象方法是没有实现的方法,即对于抽象方法没有已定义 的实现代码,包含参数列表的方法声明头后面仅跟这一个 分号。

第六章 面向对象程序设计基础

第六章 面向对象程序设计基础

第六章面向对象程序设计基础例题1、类是一组具有相同属性和相同操作对象的集合,类之间共享属性和操作的机制称为()。

A、多态性B、动态绑定C、静态绑定D、继承2、以下有关VFP表单的叙述中,不正确的是()。

A、所谓表单就是数据表清单B、VFP表单是一个容器类的对象C、VFP的表单可以用来设计类似于窗口或对话框的用户界面D、在表单上可以设置各种控件对象3、表单内的控件都有一个默认名称,下拉列表框的默认名称是()。

A、combo1B、command1C、check1D、caption4、关于表单中的列表框和组全框的区别,下面叙述不正确的是()。

A、列表框提供一个列表给用户选择,而组合框不提供列表B、列表框任何时候都显示它的列表,而组合框通常只显示一项内容C、列表框中只能选择数据不能输入数据,而组合框可以选择或输入数据D、列表框只能显示数据列表供选择,而组合框兼有列表框和文本框的功能5、在表单中加入一个复选框check1和一个文本框text1,编写check1的click事件代码如下:thisform.text1.visable=this.value,则单击复选框后()。

A、文本框可见B、文本框不可见C、文本框是否可见由复选框当前值决定D、文本框是否可见与复选框当前值无关6、以下各项中,不可以作为文本框控件数据来源的是()。

A、数值型字段B、内存变量C、字符型字段D、备注型字段A类基础训练题一、填空题1、在面向对象程序设计中,类具有三个主要的特性,它们分别是_________、_________和_________。

2、VFP提供了一系列基类来支持用户派出生新类,VFP的基类有两种,它们是_________和_________。

3、在面向对象的程序设计中,对象所具有的特征被称为_________;对象的_________就是对象可以执行的动作或它的行为。

4、VFP提供了三种方式来创建表单,它们分别是使用_________创建表单;使用_________创建一个新的表单或修改一个已经存在的表单;使用“表单”菜单中的_________创建一个简单的表单。

VFP第6章面向对象的程序设计

VFP第6章面向对象的程序设计

03
Visual FoxPro中的事件 驱动编程
事件驱动编程的概念
事件驱动编程是一种编程范式,它通 过事件来触发程序的执行。在事件驱 动的程序中,事件是由用户操作或其 他系统事件触发的,例如点击按钮、 键盘输入等。
在事件驱动的程序中,程序的状态由 事件和事件处理程序来管理。当某个 事件发生时,相应的事件处理程序会 被调用,以响应该事件。
什么是对象
对象是面向对象程序设计的基本单元,代表了现实世界中的 事物或概念。
对象由属性和方法组成,属性描述对象的状态,方法定义对 象的行为。
对象的属性、方法和事件
属性
描述对象特性的数据元素,如颜色、大小等。
方法
定义在对象上的操作,用于实现特定的功能 或行为。
事件
由用户或系统触发,导致对象状态改变或执 行特定操作。
根据项目需求选择合适的数据访问方式,如直接访问数据 库、使用ORM框架等。
01
数据流控制
设计合适的数据流控制结构,如顺序、 循环、条件等,实现数据的处理和流转。
02
03
数据验证
对输入数据进行验证,确保数据的合 法性和准确性。
THANKS FOR WATCHING
感谢您的观看
为控件编写事件处理程序,以响应用户的操 作或系统事件。
调用方法
通过调用控件的方法来执行特定的操作,如 显示或隐藏控件。
05
面向对象程序设计在 Visual FoxPro中的应用
数据库应用程序的设计
数据库模型选择
根据项目需求选择合适的数据库模型,如关系 型、层次型或网络型。
数据结构设计
定义数据库中的表、字段、主键、外键等,以 及表之间的关系。
事件处理程序

面向对象分析与设计课件第6章 顺序图与通信图建模

面向对象分析与设计课件第6章 顺序图与通信图建模

Ad d (Ch ro m o so m e )
loop [nt So rtByAcco m m o d a ti o n () Cro ssOve r(Ch ro m o so m e )
m u ta ti o n ()
CanbeEnded(int): Boolean
图6-1 顺序图中常见的对象
6.1.2 生命线(lifeline)
生命线是从对象图标向下出来的延伸的一条直线,也是和对象紧密联系在 一起的一种模型元素,用于表示对象的生存期或生存期内的某个时间片段。
事实上,在顺序图中,对象和生命线是不可分割的同一个元素,生命线是 对象的一个组成部分,代表了对象的整个或部分生命期。顺序图中即不存在 没有生命线的对象,也不存在没有对象的生命线。当然这并不排除生命线分 支的概念。
除了图形符号,UML还使用消息表达式的方式来描述消息。 按照对象间交互的形式,可以把消息分成方法调用、发送信号、创建实例 和销毁对象等多种形式。其中,最常用的形式就是对象间的方法调用。
6.1.4 消息(Message)
描述方法调用或发送信号的消息的语法格式定义如下: [returnvalue=] message_name (arguments) : type_of_return_value return_value:是消息的可选部分,表示存储消息返回值的变量。这个变 量可以是发送者的一个属性、整个交互的全局属性、或者是某个拥有交互的 类的属性。 message_name:表示消息名称,可以是接收者的某个方法名或发送的信号 名等。 arguments:表示消息参数列表,是一个用逗号分隔的若干个参数构成的 列表,其中每个参数都可以是参数名或参数值。 type_of_return_value:返回值类型。

面向对象的设计

面向对象的设计
总结词
多态是指同一消息可以被不同的对象接收并 产生不同的结果。
详细描述
多态是面向对象编程的三大特性之一,它使 得程序具有更好的扩展性和灵活性。在多态 中,父类引用指向子类对象,通过父类引用 来调用子类的方法,实现了动态绑定。例如 ,一个父类类型的变量可以引用多种子类的 对象,当调用该变量上的方法时,会根据实
THANK YOU
感谢各位观看
பைடு நூலகம்
际引用的对象类型来决定执行哪个方法。
03
面向对象设计的应用场景
游戏开发
游戏开发中面向对象设计的应用场景非常广泛,例如角色、场景、物品等都可以作为对象进行设计。 通过面向对象的方法,可以将游戏中的各个元素抽象为对象,并定义其属性和行为,从而实现更加灵 活和可维护的游戏开发。
游戏中的角色可以抽象为具有生命值、攻击力、防御力等属性的对象,场景可以抽象为具有地图、障 碍物、资源等属性的对象,物品可以抽象为具有属性、效果等属性的对象。通过面向对象的设计,可 以更加方便地实现游戏逻辑和交互功能,提高游戏开发的效率和可维护性。
接口
定义了一组方法,没有实现细节,实现类需要提供具体实现 。
代码复用和重构
代码复用
通过继承、接口、组合等方式实现代 码复用,避免重复代码。
重构
对代码进行修改和调整,以提高可读 性、可维护性和可扩展性。
05
面向对象设计的挑战与解决方案
大规模系统的设计
总结词
在设计和实现大规模系统时,需要关注系统的可扩展性和模块化。
• 应用场景:在企业级软件开发中,面向对象的设计方法可以帮助开发者更好地 理解和组织复杂的业务需求,提高软件的质量和稳定性。例如,在财务管理软 件中,可以抽象出“凭证”、“账目”等对象,使得软件更加符合实际业务需 求。

第六章 对象图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第六章 对象图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
链主要用来导航。链一端的一个对象可以得到 另一位置上的一个或一组对象,然后向其发送 消息。链的每一端也可以显示一个角色名称, 但不能显示多重性。
对象图的建模技术
为对象结构建模
识别建模机制。建模机制被描述为系统的某些功能或行为,经常会被耦 合为用例,由一组类、接口和其他事物的交互产生。可以创建协作来描 述机制。
识别参与的类和接口等元素,以及这些元素之间的关系。 识别并选择对象。考虑这个机制的脚本在某时刻被冻结时的情况,识别
并选择出各个对象。 按需要显示每个对象的状态。 识别并显示出对象之间的链,即对象的类目之间关联的实例。
对象图使用要点
注重于表达系统静态设计视图或静态交互视图的一个方面。 表示由一个交互图描绘的动态场景的一个画面。 只包含对理解该方面不可缺少的那些元素。 提供与它的抽象层次相一致的细节,应该只显露出对理解是不可缺
对象图的组成元素——对象
对象是类的实例,是一个封装了状态和行为的具 有良好边界和标识符的离散实体。对象通过其类 型、名称和状态区别于其他对象而存在。
对象名:在矩形框的顶端显示。 类型:具体的类目 状态:由对象的所有属性以及运行时的当前值
组成。
表示法:在对象名后跟一个冒号加上类型名, 并且使用下划线与类进行区分。
stu : Student 标准表示法 : Student 匿名表示法 stu 省略类名的表示法
对象图的组成元素——链
链是关联关系的实例,是两个或多个对象之间 的独立连接。因此,链在对象图中的作用就十 分类似于关联关系在类图中的作用。
在UML中,链同样使用一根实线段来表示,如 图6-27所示。
对象图
类图的实例——对象图
对象图概述 对象图的组成元素
对象 链

Python程序设计-清华大学出版社-董付国第6章 面向对象程序设计

Python程序设计-清华大学出版社-董付国第6章 面向对象程序设计

6.1 类的定义与使用
>>> class A: def __init__(self, value1 = 0, value2 = 0): self._value1 = value1 self.__value2 = value2 def setValue(self, value1, value2): self._value1 = value1 self.__value2 = value2 def show(self): print self._value1 print self.value2 >>> a = A() >>> a._value1 0 >>> a._A__value2 0
6.1 类的定义与使用
属性有两种,一种是实例属性,另一种是类属性。实例属 性是在伪构造函数__init__中定义的,定义时以self作为前 缀;类属性是在类中方法之外定义的属性。在主程序中 (在类的的外部),实例属性属于实例(对象)只能通过对 象名访问;类属性属于类可通过类名访问。 在类的方法中可以调用类的其它方法,可以访问类属性、 对象属性。 类和对象都可以动态地增加成员
6.3.2 Python3.x中的属性
>>> class Test: def show(self): print(self.value) print(self.__v) >>> t = Test() >>> t.show() 出错信息 AttributeError: 'Test' object has no attribute 'value' >>> t.value = 3 >>> t.show() 3 出错信息 AttributeError: 'Test' object has no attribute '_Test__v' >>> t.__v = 5 >>> t.show() 3 出错信息 AttributeError: 'Test' object has no attribute '_Test__v' >>> t._Test__v = 5 >>> t.show() 3 5

面向对象的设计与分析课件

面向对象的设计与分析课件

WENKU DESIGN
2023-2026
END
THANKS
感谢观看
KEEP VIEW
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
PART 01
面向对象的基本概念
对象与类
对象
现实世界中的事物或概念在面向对象 编程中的表示。每个对象都有其属性 (状态)和方法(行为)。

对象的抽象,定义了一组具有相同属 性和方法的对象的共同特征。类是对 象的模板或蓝图。
封装与继承
封装
将对象的属性和方法封装在一起,隐藏对象的内部实现细节,只通过对象的方法来访问其属性。
目的
提高类的可维护性和可复用性,降低类之间的耦 合度。
示例
一个表示用户的类,只负责存储和提供用户数据, 不包含其他如登录、注册等操作。
开闭原则
定义
软件实体应该对扩展开放,对修改封闭。即软件实体应该通过扩 展来实现变化,而不是通过修改已有的代码来实现变化。
目的
提高软件的可维护性和可复用性,降低修改代码的风险。
目的
降低类之间的耦合度,提高系统的可维护性和可复用性。
示例
使用接口或抽象类来实现高层模块和低层模块之间的依赖关系, 而不是直接依赖于具体实现类。
PART 03
面向对象的分析方法
识别对象与类
01
确定问题域中的实 体
通过分析问题背景,识别出问题 域中的实体,如人、事物、组织 等。
02
抽象出对象的属性 和行为
VS
继承的实现
继承的实现方式因编程语言而异。在Java 中,子类通过使用关键字"extends"来继 承父类。在C中,子类通过在类名前使用 冒号":"来实现继承。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

处理并发操作
❖ 并发的对象(子系统)
同时 异步 作用于同一事件
❖ 处理
将并发子系统分配到不同处理器 将并发子系统分配到同一处理器
❖系统提供同步控制
描述子系统间的通信
❖ 子系统协作模型
客户/服务器 端对端
客户 子系统
请求
服务器 子系统
peer subsystem
请求 请求
contract
peer subsystem
❖ 追求“聪明”和“技巧”---〉提倡“简明”和“直 接”
消息设计
责任设 计
属性、操作、 协作者
类/对
象 模型
使用 实例
对象关系模型
对象-行为模 型
系统设计过程
⑴ 划分子系统; ⑵ 确定需要并发运行的子系统并为它们分配处理
器; ⑶ 描述子系统之间的通信; ⑷ 确定系统资源的管理和控制; ⑸ 确定人机交互构件;
⑹ 选择实现数据管理和任务管理的基本策略。
四种主要子系统
打印队列
打印服务器
[打印机就绪] 打印文件
打印机
活动图Activity Diagram
Win.printAll()
Disk full
显示磁盘满
Disk free
显示在打印
建立打印文件
^printer.print()
删去显示信息
物理架构建模
❖ 逻辑架构和物理架构
逻辑架构 物理架构
❖ 构件图 ❖ 配置图
学生
姓名:string
学号:string
1

购买 0..* 属于
书名:string 价格:real
对象图Object Diagram
王平:学生
姓名:王平 学号:020106
英语:书 书名:英语 价格:26.5
数学:书 书名:数学 价格:21.8
对象间关系
❖ 关联关系 (Association) ❖ 聚集关系(Aggregation) ❖ 泛化关系(Generalization) ❖ 依赖关系(Dependency) ❖ 细化关系 (Refinement)
❖ 问题域子系统 ❖ 人机交互子系统 ❖ 任务管理子系统 ❖ 数据管理子系统
划分子系统
❖ 划分原则
模块化、功能独立、信息隐藏 同一个子系统的类拥有共同特性 同一个子系统的类具有共同目的 同一个子系统的类提供相似服务 同一个子系统的类间相对高耦合
❖ 子系统标准
有明确的借口,与其他子系统通信 一般类只和子系统内部的其它类协作
到达 向底楼移动
在底楼
上楼
向上移动
向下移动 超时
到达
上楼
到达 上楼
空闲
时序图(Sequence Diagram)
打印文件 计算机
打印服务器
计算机
打印队列
打印文件
[打印机就绪] 打印文件
[打印机忙] 保存文件
协作图(Collaboration Diagram)
计算机 打印文件
[打印机忙] 保存文件
第六章 面向对象的设计
❖ 面向对象的设计模型 ❖ 系统设计 ❖ 对象设计 ❖ 领域对象设计
面向对象设计的任务
❖ 面向对象设计的任务
系统设计
❖系统整体结构的设计
对象设计
❖对OOA模型中类/对象模型的具体化和细化
消息设计
❖从对象- 关系模型,设计出消息模型
设计模型复审
面向对象设计
子系统设计 类及对象设计
人机交互设计
❖ 分类分析用户特点,设计不同界面 ❖ 增加用户界面专用的类和对象 ❖ 利用快速原型演示,改进界面设计
任务管理设计
❖ 策略
确定任务的特征 定义一个协调者任务和与之关联的对象 集成其它任务和协调者
❖ 步骤
识别由事件驱动和时间驱动的任务 识别关键性任务、任务优先级和任务管理类 定义任务 必要时扩充有关任务的类和对象
RUP—基于UML的统一建模过程
第八章 编码和语言选择
❖ 编码的目的 ❖ 编码的风格 ❖ 编码使用的语言
编码的目的
编码
模块的过程性描述一一一>源程序
(不可执行的)
(可执行的)
❖ 编码的过程
熟悉所选语言的功能和程序开发环境 仔细阅读设计文档详细设计 弄清要编码的模块的外部接口与内部过程
编码的风格
包图
子系统A 子系统B
子系统D 子系统C
子系统E
子系统F
动态建模
❖ 状态图(State Diagram) ❖ 时序图(Sequence Diagram) ❖ 协作图(Collaboration Diagram) ❖ 活动图(Activity Diagram)
消息
同步消息 异步消息 简单消息
状态图State Diagram
❖ UML的模型元素
表示模型中的某个概念 表示模型元素之间的关系
❖ UML的元模型结构
元元模型层 元模型层 模型层 用户模型层
❖ UML模型
❖图
静态图 动态图
❖ 视图
用例视图 逻辑视图 并发视图 构件视图 部署视图
UML模型
UML的特点
❖ 统一标准 ❖ 面向对象 ❖ 表达能力强大 ❖ 可视化
UML
❖ Unified Modeling Language ❖ 近10年来OOSE最重要的成果 ❖ 贡献者:Grady Booch, Ivar Jacobson,
Jin Rumbaugh ❖ 中文网站
http://www.
UML的组成
UML的应用
❖ 用于描述系统开发的不同类型于不同阶段
从需求分析到软件设计到软件测试及维护 可视化问题描述,帮助理解问题 帮助建立各阶段的文档 获取和交流有关应用问题求解的知识 辅助构建系统
静态建模
❖ 用例模型
用例图表示 从最终用户的角度描述系统功能
❖ 类和对象模型
类图和对象图表示
类图Class Diagram
数据管理设计
❖ 解决对象数据的存储和检索 ❖ 数据管理设计
定义数据格式
❖与所使用的数据存储管理模式相关
设计相应的操作
❖说明对象及所属类和对象如何存储自己
对象设计
分析模型
类 属性 方法 关系 行为
设计模型
对象 数据结构 算法 消息传递 控制
对象描述
❖ 对象描述
协议描述:一组消息和对消息的注释 实现描述:对对象接收到某个消息后所执行的操
作的实现细节的描述
❖ 算法设计 ❖ 程序构件与接口
对象间的接口和对象的整体结构
领域对象的设计
❖ 设计目的——支已有的组件 引入父类,分组管理领域类 添加一般化类以建立协议 调整OOA模型 设计复审
❖ 设计模板
第七章 统一建模语言UML
❖ UML简介 ❖ 静态建模 ❖ 动态建模 ❖ 物理架构建模 ❖ RUP
相关文档
最新文档