第八章类与对象修改
软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。
如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。
实现方案用UML交互图表示。
(2)设计技术支撑设施。
在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。
这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。
例如,数据的持久存储服务、安全控制服务和远程访问服务等。
在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。
(3)设计用户界面。
(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。
此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。
面向对象的软件设计过程如图8-1-1所示。
图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。
因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。
该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。
一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。
在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。
顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。
python实用教程第八章类与对象课件

• Python中的类提供了面向对象编程的所有基本功能:类的继承机 制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可 以调用基类中的同名方法。
• 对象可以包含任意数量和类型的数据。
8.2 类的定义与使用
8.2.1 类的定义
8.4 继承
• 继承的语法格式如下:
• class DerivedClassName(BaseClassName):
• <statement-1>
•.
•.
• <statement-N>
• 面向对象的编程带来的主要好处之一是代码的重用,实现这种重 用的方法之一是通过继承机制。继承完全可以理解成类之间的类 型和子类型关系。
use_class这个变量称为类的具体对象。
• 再看后面两行的调用: • print(f'调用类的属性:{use_class.i}') • print(f'调用类的方法:{use_class.f()}') • 这里第一行后面use_class.i部分的作用是调用类的属性,也就是前
面所说的类变量。第二行后面use_class.f()部分的作用是调用类的 方法。
加多个基类(父类或超类),各个基类之间使用逗号分隔。 • 需要注意圆括号中父类的顺序,若父类中有相同的方法名,在子
类使用时未指定,Python会从左到右进行搜索。即若某个方法在 子类中没有定义,则子类从左到右查找各个父类中是否包含这个 方法。 • 通过类的多重继承,一个子类就可以继承多个父类,并从多个父 类中取得所有非私有方法。
• • 语法中,obj代表类对象,name代表属性。
C++学习资料

课程内容第一章C++语言概述第二章基本数据类型和表达式第三章C++程序的流程控制第四章数组第五章C++函数第六章指针、引用和动态空间管理第七章结构和联合第八章类与对象第九章C++流第一章C++语言概述1.1C++语言的简史1.1.1 C语言1972年贝尔实验室C语言特点➢优点:高效、灵活、功能丰富、表达力强、一致性好➢局限性:●类型检查机制相对较弱,程序中的错误不能再编译时发现;●不支持代码重用。
1.1.2 C++语言20世纪80年代贝尔实验室C++是C语言的扩充,主要的扩充功能:●支持数据抽象●支持面向对象的设计及编程●改进了C语言中的若干不足之处1.2简单C++程序例1#include<iostream.h> //预处理命令,头文件void main() //主函数{int a,b; //定义变量cout<<”Enter two integer.”; //在标准输出设备上输出cin>>a>>b; //从标准输入设备上输入int result;result<<”\n The sum of”<<a<<”+”<<b<<”=”<<result<<endl;}字母区分大小写1.2.1注释:/*传统的C语言注释方法,注释内容可以再多行。
*///C++新增的注释方法,注释内容从//开始,到行末结束。
1.2.2 包含文件及头文件将其他文件中的源程序插入当前文件的#include语句位置中。
被包含文件一般称为头文件。
头文件扩展名一般为.h。
#include<文件名>头文件在编译系统的INCLUDE目录中查找。
#include”文件名”头文件现在当先目录查找,而后再在编译系统的INCLUDE目录中查找。
1.2.3 标准输入与输出在iostream.h中定义有两个对象:标准输入对象cin,用于从标准输入设备读入数据(一般指键盘)。
vfp

8. 1.5
命令按钮(CommandButton)控件
(6)Picture:显示在按钮上的.BMP图片 (7)DisablePicture:按钮失效时的.BMP图片 (8)Downpicture:按下按钮时显示的.BMP图片 2.事件 Click 事件发生在用户: 1)鼠标单击, 2) 有焦点时按空格 3) 默认命令按钮,按回车。 4) 按一个控件的访问键。 5) 在组合框或列表框中选择一项
8. 1.1 表单 (16)Windowtype 规定用户调用表单时的表单执行模式。 当设定为0时,系统调用表单命令顺序执行下去;否则设 定为1时,执行到该表单时,系统等待用户对表单操作, 直到关闭表单为止。 (17)windowstate 指定表单窗口在开始运行时是最大化还是最小化。 0:普通 1:最小化 2:最大化
8. 1.4 4 (4) Valid Event
文本框(TextBox) 文本框(TextBox)控件
在控件失去焦点之前发生该事件 说明: valid 中可以通过RETURN语句来返回值。 .T. : 控件失去焦点 .F. :控件没有失去焦点。
8. 1.5
命令按钮(CommandButton)控件
只能用于数值型数据。 1.属性 (1)ControlSource、Value、 (2)KeyBoardHighValue:键盘输入的最大值 (3)SppinnerHighValue:鼠标输入的最大值 (4)KeyBoardLowValue:键盘输入的最小值 (5)SppinnerLowValue:鼠标输入的最小值 (6)Increment:步长,鼠标单击一次向上或向下箭头时,数据 改变的量。 2.事件 (1)DownClick:单击控件的下箭头时 (2)UpClick:单击控件的上箭头时
第八章 面向对象程序设计(1)

第八章 表单设计与控件应用
8.2 表单的创建与管理
创建表单
表单向导
表单设计器
第八章 表单设计与控件应用
8.2 表单的创建与管理
表单设计器打开
可视化:菜单和工具栏/项目管理器 命令:CREATE FORM|SCREEN
第八章 表单设计与控件应用
8.1 面向对象程序设计基础
属性(Property) 属性(Property) 是对象所具有 的某种特性和状态 特性和状态。 的某种特性和状态。 比如, 比如,按钮的大小 体现在高度 (height)和宽度 ) (width)属性上。 )属性上。 事件(Event) 事件(Event) 指对象能够识 别的动作。 别的动作。当触发 某个事件时, 某个事件时,该事 件的程序代码就会 开始执行。比如, 开始执行。比如, 单击文件图标。 单击文件图标。
第八章 表单设计与控件应用
8.3 表单设计器
设置对象属性 静态(对象初始状态):在属性窗口中设置。 ):在属性窗口中设置 静态(对象初始状态):在属性窗口中设置。 动态(对象运行状态):在程序代码中设置。 ):在程序代码中设置 动态(对象运行状态):在程序代码中设置。
格式:对象引用.对象的属性名=属性值
第八章 表单设计与控件应用(1) 表单设计与控件应用(1)
Contents
1 2
面向对象程序设计基础 表单的基本操作
第八章 表单设计与控件应用
第八章 表单设计与控件应用
第八章 表单设计与控件应用
8.1 面向对象程序设计基础
8.1.1 基本概念 对象(Object) 对象(Object) 具有某些特性的具体事物的抽象。 具体事物的抽象 具有某些特性的具体事物的抽象。 FoxPro中 在Visual FoxPro中,表单及控件等都是应用 程序中的对象。用户通过对象的属性 事件和 属性、 程序中的对象。用户通过对象的属性、事件和方 法程序来处理对象。 程序来处理对象。
管理系统中的计算机应用第8章-系统实施

•
系统实施阶段是将新系统付诸实现的过程。 它的主要活动是根据系统设计所提供的控制结构 图、数据库设计、系统配置方案及详细设计资料, 编制和调试程序,创建完整的管理系统,并进行 系统的调试 ,新旧系统切换工作,将逻辑设计转 化为物理实际系统。 • 这是真正开发应用程序软件,并整合为实用 系统,最后投入运行的阶段。在此期间将投入大 量的人力、物力,占用较长的时间;同时使用部 门要发生组织机构、人员、设备、工作方法和工 作流程的重大变革,因此系统实施同样是系统开 发的重要阶段。
8.2.1程序设计的概述:
1.程序设计的任务 程序设计的任务,就是根据系统设计说明书中关于模块的详细描 述和处理过程的描述,选择合适的计算机语言来编制程序的工作。 2.程序设计的质量要求 随着计算机硬件技术的飞速发展,人们对程序设计的质量要求发 生了变化。过去强调程序的正确性、高效率和短小精悍,以适应设备 资源有限的计算机系统;现在则更加强调程序的正确性、可维护性、 可维护性和可理解性。 3.良好的编程习惯 编制程序需要熟悉所使用的语言,具有尽可能丰富的编程经验; 但是更加重要的是要具有系统的观点,采用结构化设计思想和工具, 自上而下统筹考虑,避免编程时变量随意增减,变量类型随机指定, 无法兼容时再任意转换等。
8.4 系统测试
系统测试是保证系统质量的关键,是对整个系统开发过程,包括系 统分析、系统设计和实施的最终审查。 1.系统测试的对象 系统测试的对象是整个应用软件系统。由于“程序十文档=软件”, 所以系统测试的对象包括需求分析、系统总体设计、详细设计各阶段的 文档以及源程序。 2.系统测试的目的 应用软件系统测试的目的是努力发现软件中的错误,并改正错误……测 试中可能发现的错误按其性质可分为以下几类: (1)功能错误。由于处理功能说明不够完整或不够确切,致使编 程时对功能有误解而产生的错误。 (2)系统错误。指与外部接口错误、子程序调用错误、参数使用 错误等。 (3)过程错误。主要指算术运算错误、逻辑错误等。 (4)数据错误。指数据结构、实体、属性错误,参数与控制数据 混淆等。 (5)编程错误。指语法错误、程序逻辑错误、编程书写错误等。
第八章三维修改器

对称修改
调整子对象
拥有明显折痕的对称效果
焊接缝选项的效果
伸展修改器Stretch
伸展修改器可以模拟挤压和拉伸的传统动画效果。伸展沿着特定拉伸轴 应用缩放效果,并沿着剩余的两个副轴应用相反的缩放效果。副轴上相反的 缩放量会根据缩放效果中心的距离而变化。最大缩放量在中心处,且会朝着 末端衰减。
参数设置
未设置分段数时的弯曲效果
弯曲效果
弯曲效果
弯曲效果
弯曲的限制效果
弯曲的子对象调整效果
对一组对象添加弯曲修改
转椅 倒角Box、Poly、放样、bend 倒角Box、Poly、放样、bend
锥化修改器Taper
锥化修改器通过缩放对象几何体的两端产生锥化轮廓,一端放大而另一端 缩小。通过两组轴控制锥化的量和曲线。可以对几何体的一段限制锥化。
晶格框显示效果
自由变形的编辑
参数设置
控制点设置效果
椅子:Poly、 椅子:Poly、FFD
窗帘:放样、FFD 窗帘:放样、FFD
网格平滑修改器 MeshSmoth
网格平滑修改器通过多种不同方法平滑场景中的几何体。允许用户细分 几何体,同时在角和边插补新面的角度以及将单个平滑组应用于对象中的所 有面。网格平滑的效果使角和边变圆,就像它们被锉平或刨平一样。使用网 格平滑的参数可控制新面的大小和数量,以及它们如何影响对象曲面。下面 是网格平滑的效果。
锥化Gizmo框
锥化的效果
锥化的效果
锥化的效果
石凳:taper、 石凳:taper、boolean
《公文写作概论》第八章——事务类公文

总结
8.3.1 总结的定义
总结是对之前工作活动进行全面回顾、检查、分析、评判,概括经验教训,用以指导今后更好地开展工作的一种事务性公文文种。总结与计划是相辅相成的一对文种,总结是对计划的检验,同时又是制定计划的基础。
8.3.2 总结的特点
普遍性(广泛性):总结是一种适用范围十分普遍的文种。就其使用主体来说,既包括党政机关、企事业单位,也包括社会团体和个人。就总结的范围而言,可以覆盖到各个领域,既包括政治、经济、文化等领域,也包括教育、科技、环境等方面;既包括对具体工作的总结,也包括对思想方面的总结。借鉴性(经验性):总结的目的是把工作实践中的成功经验和失败教训总结归纳出来,为今后工作的开展提供经验性的借鉴意义。客观性(真实性):总结是人们自身实践活动的真实反映,应当完全忠实于客观事实。总结中的材料必须是真实的;内容要实事求是;观点必须与实际情况相符合,不允许有任何主观臆断。理论性:总结要写事实,但是它必须对搜集来的事实、数据、材料等进行认真的归类、整理、分析和研究,从感性认识上升到理性认识,达到一定的理论高度。本体性(自我性):总结是对本地区、本部门、本单位的工作情况进行回顾,因此都用第一人称,总结中的材料是自身工作的情况。指导性:总结的目的就是总结经验,发现不足,并上升到一定的理论高度,来指导以后的工作。
快
所谓“快”,就是指制发的及时性和快捷性。
新
简报的价值,就在于它能迅速地将各种新动态、新经验、新问题等信息汇集反馈给上级领导机关。
简
所谓“简”,就是指内容的简洁性。其内容要求短而精,把要点叙述清楚即可,不需要详细描述或发长篇议论。
8.5.2 简报的特点
按范围分
按内容分
专题简报是针对某项工作的动态或专项问题的解决过程与经验的简报。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
启动文本编辑器并打开该文件
多态性是面向对象程序设计的一个重 能增加程序的灵活性。 要特征,能增加程序的灵活性 能增加程序的灵活性
8.1.2 面向对象程序设计的特点
面向过程程序设计是围绕功能进行 一个函数实现一个功能 所有的数据都是公用的
一个函数可以使用任何一组数据, 一个函数可以使用任何一组数据, 而一组数据又能被多个函数所使用
8.1 面向对象程序设计方法概述
当程序规模较大时,c就显得力不从 心了。C++就是为了解决编写大程序过 程中的困难而产生的。
8.1 面向对象程序设计方法概述 8.1.1 什么是面向对象的程序设计
面向对象的程序设计的基本思路 和人们日常生活中处理问题的思路是相似的 一个复杂的事物分解为许多部分组成 生产汽车
●基于对象程序设计所面对的是一个个对象 所有的数据分别属于不同的对象 ●在面向过程的结构化程序设计中
程序=算法+数据结构
算法和数据结构两者是互相独立、分开设计的,面 向过程的程序设计是以算法为主体的 在程序设计中,算法和数据结构是互相紧密联系不可 一个算法对应一组数据结构,而不宜 分的,应当以一个算法对应一组数据结构 一个算法对应一组数据结构 提倡一个算法对应多组数据结构,以及一组数据结构 对应多个算法。
2. 面向对象设计 面向对象设计(object oriented design,OOD)
根据面向对象分析形成的需求模型 对每一部分分别进行具体的设计 先是进行类的设计包含多个层次(利用继承与派生) 以这些类为基础提出程序设计的思路和方法包括对算法的设计 在设计阶段,并不牵涉某一种具体的计算机语言,而是 用一种更通用的描述工具(如伪代码或流程图)来描述。
8.1.4 面向对象的软件开发
随着软件规模的迅速增大,软件人员面 临的问题十分复杂。
规范整个软件开发过程 明确软件开发过程中每个阶段的任务 保证前一个阶段工作的正确性的情况下,再进行 下一阶段的工作
面向对象的软件工程包括以下几个部分:
1. 面向对象分析 面向对象分析(object oriented analysis,OOA)
5. 多态性 多态性(polymorphism)
由继承而产生的相关的不同的类,其对象对同一消息会作 其对象对同一消息会作 出不同的响应 Windows环境下 几个相似而不完全相同的对象, 几个相似而不完全相同的对象, 双击 有时要求在向它们发出同一个 消息时,它们的反应各不相同, 消息时,它们的反应各不相同, 一个文本文件 分别执行不同的操作。 分别执行不同的操作。这种情 一个可执行文件 况就是多态现象 执行此程序
图8.3
面向对象程序设计它面对的是一个个对象
程序设计者的任务包括 设计所需的各种类和对象 决定把哪些数据和操作封装在一起 怎样向有关对象发送消息 以完成所需的任务
每一组数据都是有特定的用途的,是某种操作的对象 也就是说,一组操作调用一组数据。 这时他如同一个总调度,不断地向各个对象发出命令, 让这些对象活动起来,完成自己职责范围内的工作。各 个对象的操作完成了,整体任务也就完成了。 面向对象程序设计方法是十分有效的,它能大大降低程序设计 人员的工作难度,减少出错机会。
对问题表述的从简到繁
•属性与动作的集合 属性与动作的集合 问题二: 问题二:对于复杂 问题三: –在一个类型中定义属性,同时定义 在一个类型中定义属性, 在一个类型中定义属性 问题三:对客观世 单个变量: 单个变量 系统的描述, : 系统的描述,将有 反映无关联的属性 问题一: 问题一: 界的描述, 对变 与这些属性相关的操作 界的描述,总是属 大量属性数据及其c; int a, b, 量的操作是另 数据) 性(数据)与性能 相关操作, 相关操作,数据与 外定义的,与 外定义的, 动作)相联系的, (动作)相联系的, 变量的集合 操作之间的对应关 变量定义分离。 变量定义分离。 在计算机内部如何 系也十分复杂反映同类型相关属性 数组: 数组: 表达? 表达?
这种对外界隐蔽的做法称为信息隐蔽 信息隐蔽(imformation hiding) 信息隐蔽 有利于数据安全,防止无关 的人了解和修改数据
3. 抽象 (abstraction)
相同的属 性和行为
类(class)
类是对象的抽象, 类是对象的抽象,而对象则是类的特 或者说是类的具体表现形式。 例,或者说是类的具体表现形式。 抽象的过程 抽象的作用 是将有关事物的共性归纳、集中的过程。 是表示同一类事物的本质。C和C++中的数据 类型就是对一批具体的数的抽象。
外界获取时钟的 时间, 时间ห้องสมุดไป่ตู้比如钟表 正面的表盘
从外界对时钟设 置时间, 置时间,比如钟 表背面的设置按 钮
8.2 8.2.1定义类类型 定义类类型
类和对象的定义
类是构造类型:包含数据和与这些数据相关的函数 是构造类型:包含数据和与这些数据相关的函数 数据和与这些数据相关的 类(类型)的定义: 类型)的定义: 类型关键字: 类型关键字 class 成员存取控制关键字: 成员存取控制关键字: private: 私有成员,只有在类内部定义的函数可以 私有成员, 访问 public: 公有成员,类外部的函数可访问 公有成员, protect: 保护成员,只有“类的家族”可以访问 保护成员,只有“类的家族” 类是对象的抽象,而对象是类的具体实例(instance) 类是对象的抽象,而对象是类的具体实例 抽象 具体实例
第3 篇 基于对象的程序设计
第8章 类和对象 章 第9章 关于类和对象的进一步讨论 章 第10章 运算符重载 章
第8章 类和对象 章
8.1 8.2 8.3 8.4 8.5 8.6 面向对象程序设计方法概述 类的声明和对象的定义 类的成员函数 对象成员的引用 类的封装性和信息隐蔽 类和对象的简单应用举例
发动机
底盘
车身
轮子 各部分之 间有一定 的联系
组装在一起
几个有关的概念: 几个有关的概念
1. 对象 对象(object) 客观世界中任何一个事物都可以看成一个对象 对象是构成系统的基本单位
对象 两个要素 属性(attribute) 属性(attribute) 对象之间就是通 过发送和接收消 息互相联系的。 息互相联系的。 行为(behavior) 行为 通过传送相应的消息 使某一个对象实现某 一种行为(即操作 即操作) 一种行为 即操作 根据外界给的信息进 行相应的操作
软件工程中的系统分析阶段,系统分析员要作的事: 对用户的需求作出精确的分析和明确的描述 从宏观的角度概括出系统应该做什么 按照面向对象的概念和方法,对任务进行分析 从客观存在的事物和事物之间的关系中,归纳出有关 归纳出有关 的对象(包括对象的属性和行为)以及对象之间的联系 的对象 将具有相同属性和行为的对象用一个类(class)来表示 建立一个能反映真实工作情况的需求模型
4. 继承与重用
面向对象程序设计中的继承机制 建立了A类 又想建立B 类 B与A内容基本相同 只是A的基础上增加一些属性和行为
只需在类A的基础上增加一些新内容即可 只需在类 的基础上增加一些新内容即可 “白马”继承了 “马”的基本特 征,又增加了新 “白马”是从“马”派生出来的,称为子类或派生类 的特征(颜色) “马”是父类,或称为基类 C++的继承机制,采用继承的方法可很方便地利用一个 的继承机制, 的继承机制 已有的类建立一个新的类。 已有的类建立一个新的类。 这就是 “软件重用”(software reusability) 的思想。 软件重用”
8.1.3 类和对象的作用
C++程序是由许多类所构成的 程序是由许多类所构成的 C++程序设计 支持
面向过 程的程 序设计
基于对 象的程 序设计
面向对 象的程 序设计 在基于对象的程序设 计上利用了继承机制 和多态性,就成为面 向对象的程序设计
基于对象就是基于类。与面向过 程的程序不同,基于对象的程序 是以类和对象为基础的,程序的 操作是围绕对象进行的
基于对象和面向对象程序设计是把一个算 法和一组数据结构封装在一个对象中
对象 = 算法 + 数据结构 程序 = (对象+对象+对象+…) + 消息 程序 = 对象s + 消息 消息的作用 就是对对象 的控制
“对象s”表示 多个对象
程序设计的关键是: 设计好每一个对象 确定向这些对象发出的命令 使各对象完成相应操作。
私有成员, 私有成员,只有类内部 class Clock{ 定义的函数可以访问。 定义的函数可以访问。 private: int hour, minute, second; 公有成员,类内部、 公有成员,类内部、外部定 public: 义的函数都可以调用。 义的函数都可以调用。 void Settime(int h, int m, int s){ hour=h;minute=m;second=s; } Main()相对于 相对于Clock类是 外部” 类是“ 相对于 void Gettime(int &h, int &m, int &s){类是“外部” 的,不能直接访问Clock内的私有 不能直接访问 内的私有 h=hour; m=minute; s=second; 成员,但可以通过调用Clock定义 成员,但可以通过调用 定义 } 的公有函数,实现对Clock私有成 的公有函数,实现对 私有成 void main(){ }; 员的设置与数据获取。 员的设置与数据获取。 Clock ck; int h,m,s; ck.Settime(8,15,23); ck.Gettime(h,m,s); cout<<"Time "<<h<<":"<<m<<":"<<s<<endl; }
调用对象中的函数就是向该对象传送 一个消息(message),要求该对象实现 一个消息 , 某一行为(功能 功能)。 某一行为 功能 。