面向对象设计方法论文(精选9篇)
面向对象设计方法论文 第1篇
面向对象的嵌入式系统设计方法
摘要:通过UML语言对嵌入式系统建模,急准确地完成了分析人员与用户需形式化层次上的一致性,也为程序开发人员建立了清晰的程序结构和行为准则,大大缩短了系统开发周期,并使系统的升级和重用成为可能。本文通过一个用Atmel89C52单片机实现简单变频调速器系统,说明UML应用与嵌入式系统的分析设计方法。
关键词:嵌入式系统面向对象分析设计UML有限状态机
1概述
随着我国装备制造业的发展,嵌入式系统已经成为制造业的核心技术。它被广泛地应用到工业控制、仿真系统、医疗仪器、信息家电、通信设备等众多领域。目前,围绕嵌入式系统展开研究和开发,已经成为计算机软硬件技术发展最活跃的方向之一。
嵌入式系统不同于通常纯粹的软件系统或硬件系统,而是软件与硬件通过在一起的,有些功能既可以用软件实现,也可以通过硬件实现。另外,嵌入式系统设计所面临的挑战不仅涉及到计算机软件和硬件,也会涉及到许多非计算机工程中的问题,诸如机械尺寸问题、功耗问题和制造成本问题等。即使是计算机工程方面的问题,大部分系统在实时性、可靠性和多速率等问题方面也都有特别要求。
目前,实现嵌入式系统的硬件方法主要有:定制逻辑(ASIC)、现场可编程门阵列(FPGA)和嵌入式微处理器三种。在实际系统实施中,绝大多数系统是采用嵌入式微处理器方式,如单片机、单板机或嵌入式微处理器芯片等。这是因为用微处理器实现嵌入式系统是一种十分有效的方法,它使得在不同价位上设计不同特性的产品系列成为可能,并且能够扩充新特性以满足飞速发展变化的市场需求。
2嵌入式系统设计面临的问题和解决办法
过去嵌入式系统分析和设计方面的主要问题为:①分析设计没有一个统一的标准;②分析设计方法不统一;③从分析设计到制作和编程没有一个始终一贯的工程化方法,使得产品形成的每一个过程人为因素影响十分严重;④分析设计的成果不能被开发类似项目或产品的重用。以上4个方面的问题成为多年来制约嵌入式系统发展的主要瓶颈,使得大部分从事嵌入式系统应用开发的组织和团体,基本上是采用小组甚至是作坊式的`动作模式。这使得开发较复杂或大型系统的工作变得十分困难甚至无法进行,或因为系统需求的不断变化或小组成员的流动导致项目失败。我们知道,人类之间要想达成对任何事件的交流,前提是实现对该事物形态(或表现形式)和行为的标准化,之后才可能实现对该事物形态(或表现形式)和行为的标准化,之后才可能实现对其的存储、处理和交流。嵌入式系统制作过程产品以上4方面问题的主要原因是没有一个对嵌入式系统需求、分析、设计、制作、测试和维护过程的结构特征和行业特征统一的工程化描述方法。目前,面向对象技术正是建立在对真实世界抽象思维的基础上,统一建模语言(UML)为这种思维提供了可视化工具,解决了以上难题。使用UML对嵌入式系统建模,不仅可以使系统分析设计实现标准化,而且完全可以实现系统分析、设计和制作、测试分别由不同的项目成员在统一、一贯的方式下完成,也使得系统分析和设计模型在相似系统中重用成为可能。
3系统建模
面向对象的嵌入式系统建模同任何软件密集型系统建模一样,从系统中的类建模开始。为了解类的结构,首先对系统工作过程作一个总体陈述。无论是采用问题空间词汇抽象方法还是采用用例(usecase)驱动建模方法,目标都是找到系统以类或对象作为构造块的类图。如果采用用例驱动的系统分析方法,该内容也可以用用例视图加以模型规格说明,然后使其作为系统白盒测试依据。由于使用用例视图做的规格说明篇幅比较大,本文仅用文字描述说明这部分内容。
本文所例举的系统为一小型变频调速器系统。对任何一个三相交流电机,在输入单相交流电源的情况下,实现6Hz到[9Hz,50Hz]区间内任一频率的稳步启动运转。系统用户界面包括2位数码显示器、一个运行/停止指示器、电源开/关指示器、6个按钮键盘和电源开关。2位显示器用于显示电机当前正在运转的频率,6个按键分别代表启动、停机、正点动、反点动、频率加和频率减。启动命令使电机从6Hz以每步0.2Hz的步长稳步提升到当前设置频率上后在该频率上稳定运转;正点动命令使电机稳定在6Hz上正向运转;反点动命令时,电机转动频率与正点动上同,但旋转方向相反;频率加命令在电机运转时使电机以1Hz/s的速率增加运转频率和当前预置频率,在电机停止时仅改变预置频率;频率减命令与频率加命令相反;停机命令则无论电机运行在什么状态下,都使电机停止运转。
系统类图如图1所示。图中有2个硬件类Button*和Light*,1个主动类Microcontrollor和3个一般类Convertor、Watchdog和Display。Button*类代表所有按钮;Light*类代表2个发光数码管和1个运行指示灯;主动类Microcontrollor是系统主控模块,完成所有对象的调度和管理;3个一般类为3个功能独立的程序模块。
图2为系统实施图。微处理器节点是系统的主控节点,采用Atmel89C52。其内部8KBFlashROM和128BRAM资源已能满足系统需要,因此不再增加外部存储器。与其它节点的连接完全通过其本身的串并接口就可完成。按钮节点代表所有按钮,在系统变化时也可以用键盘取代,本例为6个单独机械按钮。显示节点代表系统显示部分,本例为2个数码管和1个表示电同运行状态的发光二极管。运行监控节点具有两部分功能,其一是通过WatchDog技术监视微处理器的运行状况,另一个是监视变换器输出的脉冲宽度。变换器邛树熊设计为专用电路,通过微处理器并行口接受三相正弦脉冲,根据电机功率转换成本相电机线圈所需要的脉冲电压。三相电机节点不属于嵌入式系统本身,但为了说明本嵌入式系统与控制对象关系而布置在同一实施图中。
图3为系统有限状态机行为模型。系统开机上电后,经过初始化处理自动进入到等待状态,在等待状态,Microcontrollor对象根据用户键盘按钮命令,调度相应的操作对象。当用户发出正或反点动命令时,系统进入点动运行态,此时Convertor对象输出6Hz正或反相序三相脉冲。当用户松开正或反点动按钮时,系统返回等待状态。在系统预置频率设定正确的情况下,用户按启动按钮时,系统先进入到启动运行态。在此状态时系统从6Hz开始按每步0.2Hz的步长稳步增加电机运转频率,直到达到预置频率时进入到稳定运行态。在稳定运行态用户可以改变预置频率,步长为1Hz。每次预置频率的改变事件,都会产生从稳定运行态到启动运行态的交替变动。当系统运行出现故障时,进入到故障处理状态处理,完成后自动返回到等待状态。
4系统实现
4.1数据处理
由于本文例举的系统为一小型变频调速嵌入式系统,所有三相正弦波形的PWM脉冲都由Atmel89C52的P1.0~P1.5端口输出。当把任何频率正弦波形分解成N等分时(N为6的整数倍),则要用N个等幅而不等宽的矩形脉冲来等效,每个脉冲区间如图4。每个频率正弦波划分为6个相序,每个相序为60°。每个相序分为N/6个区间,每区间分为7个小区间。每个区间采用中心对称脉冲波形,因此在每个小脉冲边沿只有一相功率驱动开关换相而使驱动电源电流平衡变化。在任何一相换相时,由软件自动加死区保护(死区时间一相上下臂开关同时关闭,如图4中竖双线间部分),以免功率驱动开关在换相瞬间上下臂同时导通而损坏元件。
虽然对于不同频率每个相序内脉冲区间数和占空比有所不同,但输出的波形却是相同的。又因为每个区间的7个小区间波形是中心对称的,因此在输出最后3个小波形时,只要把前3个小波形的占空时间和输出波形数据倒读并输出就可以完成。另外,每个脉冲区间仅需要4个占空定时T区间,t2,t3,t4(见下节说明),并且每个相序仅需要4个脉冲波形数据就可以了。三相正弦波区间数据关系如表1.
表1三相正弦波区间数据关系
相序IIIIIIIVVVI电压关系Ua>Ub>UcUb>Ua>UcUb>Uc>UaUc>Ub>UaUc>Ua>UbUa>Uc>Ub波形数据2AH,29H,19H,152AH,26H,25H,152AH,26H,16H,152AH,1AH,16H,15H2AH,1AH,19H,15H2AH,29H,19H,15区间数N/6N/6N/6N/6N/6N/6小区间定时t4,t3,t2,t1,t2,t3,t4
4.2系统资源配置
当系统的分析与设计采用面向对象方法时,并不意味着所使用的编程语言也一定是面向对象的。事实上,这种分析设计方法的具体实现可以使用任何编程语言(如汇编语言或C语言);但是,在程序设计上要尽可能地使用面向对象的思想,如体现程序结构方面的封装性、消息传递等。这种才会使程序结构清晰,便于应付随着需求变化而产生的不断更新和系统维护。
在实现本系统时,系统最重要的资源是程序存储器和定时器。由于采用了上小节所讨论的数据处理技术,大大压缩了数据空间。在实现时,把6Hz~50Hz频率空间划分成7个大的区段,使每个区间的脉冲周期在900μs左右,区间周期定时使用单片机内部的T2定时器的常数自动重装入方式。由于区间周期与输出频率关系是确定的(T区间=1/Nf频率),片内T0定时器用于区间内小区间t2、t3、t4定时,而t1定时由t1=T区间-2×t2-2×t3-t4计算得到。T1定时器用于监视系统输出的脉冲宽度,当P1口任何一端输出脉冲宽度超过1000μs时,系统通过中断进入故障处理状态。另外,系统还设一WatchDog电路X5045,监视系统程序运行情况。当程序运行异常时,系统通过复位进入到故障处理状态。系统的显示接口通过单片机串行接口实现。
5讨论
由于嵌入式系统的实现工具基本上都是非面向对象的,因此如何使面向对象的分析设计与非面向对象的实现工具之间的衔接就成为了一个值得探讨的问题。另外,嵌入式系统一般都具有不同于大型软件系统的具体要求,如实时性、可靠性、机械尺寸、能耗(如电池供电)要求等,因此在实现系统时还应根据开发者的经验进行特别处理。但是,采用面向对象建模后再实现系统实现的方法,为系统建立了可视化的组织结构和行业结构,实现了用户需求的可视化表示,缩短了系统的开发周期,很好地适应了用户需求的变化。
面向对象设计方法论文 第2篇
(计算机科学与技术本科专业使用)
一、教学目标
通过该实验课,学生应在熟练掌握过程化程序设计方法的基础上,领会面向对象程序设计及类的封装、数据隐藏、继承及多态等特性,逐步掌握面向对象程序设计方法,培养一定的程序设计能力,为以后各专业课程的学习打下良好的程序设计基础。
二、实验教学时数
三、实验内容
实验一 图形打印
1、实验目的:练习for循环
2、实验技能培训内容:打印几种特殊图形,如菱形和Z字形
3、主要仪器:计算机
4、实验方法:上机编程
实验二 判素数
1、实验目的:练习函数
2、实验技能培训内容:判断101-200之间有多少个素数,并输出所有素数。
3、主要仪器:计算机
4、实验方法:上机编程
实验三 递归函数练习
1、实验目的:练习递归函数
2、实验技能培训内容:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....3、主要仪器:计算机
4、实验方法:上机编程
实验四 数列排序
1、实验目的:练习数组及几种基本排序方法
2、实验技能培训内容:用选择、插入、冒泡、快速等几种基本的排序方法对数列进行排序。
3、主要仪器:计算机
4、实验方法:上机编程
实验五 矩阵乘积
1、实验目的:练习数组
20学时
2、实验技能培训内容:用数组存储两个矩阵,求两个矩阵的乘积。
3、主要仪器:计算机
4、实验方法:上机编程
实验六 设计时间日期类
1、实验目的:掌握简单类的设计方法
2、实验技能培训内容:构造一个TimeDate类,类中包含一个成员函数,用来在屏幕上显示时间与日期(采用建立在标准库time.h中的标准时间与日期来寻找与显示日期)。
3、主要仪器:计算机
4、实验方法:上机编程
实验七 设计计时类
1、实验目的:掌握简单类的设计方法
2、实验技能培训内容:建立Watch类,用来仿效秒表跟踪消逝的时间。用构造函数将消逝时间的初值置为零。提供两个成员函数Start()与Stop(),分别打开与关闭计时器。
3、主要仪器:计算机
4、实验方法:上机编程
实验八 设计字符栈类
1、实验目的:掌握简单类的设计方法
2、实验技能培训内容:用Stack类,写一个函数LoadStack(),用来返回已经将字母表(a-z)入栈的堆栈。在调用函数中,将这个堆栈赋值给另一个对象,并证明它包含字母表。可以改变堆栈的尺寸,以便它大得足以支持字母表。
3、主要仪器:计算机
4、实验方法:上机编程
实验九 友元的使用方法
1、实验目的:掌握友元的使用方法
2、实验技能培训内容:求两数的平方差(友元函数说明)
3、主要仪器:计算机
4、实验方法:上机编程
实验十 访问权限
1、实验目的:掌握类成员的各种访问权限
2、实验技能培训内容:类成员的各种访问权限
3、主要仪器:计算机
4、实验方法:上机编程
实验十一 类的派生
1、实验目的: 掌握类的派生
2、实验技能培训内容:给出基类AreaClass(形状类),建立两个派生类Box(方形类)与Isosceles(等腰三角形类),让每个派生类包含一个函数Area(),分别用来返回方形与等腰三角形的面积。
3、主要仪器:计算机
4、实验方法:上机编程
实验十二 用类方法求解一元二次方程
1、实验目的: 掌握类的派生
2、实验技能培训内容:实现一个Complex类和一个Real类。将Real类定义为Complex类的子类。然后设计一个求解一元二次实系数方程的根的类Root。
3、主要仪器:计算机
4、实验方法:上机编程
实验十三 类继承中的构造
1、实验目的: 掌握类继承中的构造
2、实验技能培训内容:类继承中的构造方法
3、主要仪器:计算机
4、实验方法:上机编程
实验十四 类继承中的构造
1、实验目的: 掌握类继承中的构造
2、实验技能培训内容:类继承中的构造方法
3、主要仪器:计算机
4、实验方法:上机编程
实验十五 大学生类
1、实验目的: 掌握虚函数的使用
2、实验技能培训内容:设计一个大学的类系统,包括Student(学生),Professor(教师),Staff(职员)。另有一个类既作为学生又兼作助教的可作为派生类StudentStaff,它是由Student类和Staff类派生而来,另外定义一个父类DataRec作为上述类(子类)的基类。
3、主要仪器:计算机
4、实验方法:上机编程
面向对象程序设计方法的系统哲学 第3篇
面向对象程序设计方法解决了传统结构化方法中问题空间与解空间不一致的问题, 避免从分析与设计到软件模块结构间的多次转换过程, 使开发变得简单、高效、合理。
从科学认识辨证法的角度来看, 结构化方法是还原主义方法在软件系统设计方法的映射。必然带有还原主义的局限性。运用结构化方法为现实世界的系统建模时, 随着分析越来越深入, 功能模块层次越来越多, 也就越来越难以重现功能模块间的有机联系。即容易“只见树木, 不见森林”。
利用面向对象方法设计程序, 实际上是利用抽象方法定义各种各样的抽象“类”, 通过将类具体化为对象和通过在对象之间传递消息来完成。其中, 通过模块和封装将对象的定义和对象的实现分开。通过继承体现类与类之间的关系。以及由此带来的动态链接性和并行性。从而构成面向对象的基本特征。因此面向对象方法在3个层次上实现了系统要素的复杂联系。
首先, 类的层次。面向对象方法按照相似原理和关系, 把所在研究的问题区分成一定的系统与类别。抽象出类的描述。类的抽象体现了面向对象方法的继承性特征。而继承特性正反映了系统的结构的主要特点。即底层系统对高层系统所具有的构成性关系, 和同层次系统间的相干性关系。
其次, 对象的层次。面向对象方法在对事物进行详细的剖析后, 将类的描述演化为对对象的描述, 在对象的层次上, 面向对象方法引入了封装的特征, 将对象的属性和方法进行封装。很好的模拟了系统要素间的相互独立的特点。同时对象中预先定义的消息也为实现系统要素间相互关系奠定了基础。
最后, 对象关系的层次。面向对象方法在剖析分析基础上再进行综合优化, 并在事物运动中和运动的相互关系中去考究事物的静态相似和动态相似的关系, 宏观相似和微观相似的关系, 横向相似和纵向相似的关系, 由此设计和实现对象间的传递消息。形成对象间的相互联系和作用。在对象关系的层次上, 对象间通过并发和动态链接, 实现相互链接和作用。以构成各种不同的应用系统功能。
综上所述, 面向对象方法的本质, 从现实世界中固有事物出发来构造系统, 用人类在现实生活中常用的思维方式来认识, 理解和描述客观事物。强制最终建立的系统能够映射问题空间, 虽然面向对象方法并没有从根本上解决目前的计算机软件危机, 但是面向对象方法远远由于传统的结构化设计方法, 并得到相当广泛的应用。此外, 面向对象方法还为我们提供了在认识论和方法论上的一种认识现实世界的有效方法。
摘要:一个程序的好坏, 它的容错能力的强弱, 以及最后的可实现性完全也不同程度地依赖于程序员的哲学观, 本文介绍面向对象程序设计方法所包含的系统哲学。
参考文献
浅谈面向对象程序设计方法 第4篇
关键词:面向对象程序设计 结构化程序设计
一、面向对象设计方法
软件设计有两种主流设计方法:以结构化程序设计为基础的结构化软件设计和由面向对象设计方法导出的面向对象的软件设计, 20世纪70年代末到80年代初的结构化设计方法即传统设计方法,以区别于后来兴起的面向对象的设计方法。在软件设计周期中,面向对象设计方法是一种全新的设计和构造软件的方法,它使计算机解决问题的方式更符合人类的解决问题的思维方式,更能直接的描述客观世界,同时也可以增加的代碼的可重用性,是目前和未来软件开发的方向[1]。
面向对象设计在整个软件设计中占据着非常重要的部分,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,但是面向对象分析和面向对象设计之间没有明显的界限,面向对象的方法是基于抽象、信息隐藏、功能独立和模块化等重要软件设计概念基础上的,现阶段的软件设计基本上都运用了面向对象的设计方法[2]。面向对象的开发支持鼓励软件实践中的信息隐藏,数据抽象和封装,可以对单独对一个对象内部进行隔离修改,那么就使得运用面向对象开发的软件更容易修改、扩充和维护[1]。
对象和类是面向对象程序设计的基石,其基本的机制便是方法和消息。消息是要求某个对象执行类中某个操作的规格说明;方法就是对象执行的操作。面向对象程序设计三个重要特征:封装性,继承性和多态性。
(一)对象(Object)和类(Clasess)
对象即指现实生活中无所不在、各种各样的实体,它可以使具体的事物,也可以是抽象的实体[2]。从对象的构成和内容来看,设计程序时使用对象有以下优点:对象是对物体的直接抽象,这种抽象简化了实际物体的模型,同时以一种可以操作的形式将实体表达出来。进行了数据的封装后,掩蔽了实现的复杂性,对于用户使用起来就更加方便。
在现实生活中,具有相似性质,执行相同操作的对象,称为同一类对象,即类是同一种对象的集合与抽象[2]。例如,在Visual Basic中窗体都是Form类的实体,一个单独的窗体也是一个类。
(二)数据封装(Data Encapsulation)
数据封装是类的一个重要特性。数据封装是把数据和相关的操作设在一个包中,那么程序不能直接访问对象中的变量,只有通过对象的方法才能作用于数据。
(三)继承(Inheritance)
我们首先在对象的基础上创建对象,新的对象就会继承原先对象的所有属性和特点,同时根据实际情况也可以选择和修改父对象的属性和功能,这就叫做继承。利用这点,可以将旧的程序扩充为当前所需要的,也可以从已知的类中派生出新的类来。
(四)多态性(Polymorphism)
多态性就是多种表现形式,不同事物具有不同表现形式的能力,具体来说,可以用“一个对外接口,多个内在实现方法”表示。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。
二、结构化程序设计与面向对象程序设计
结构化程序设计是由算法和数据结构组成,算法指处理数据的特定的方法。结构化程序设计首要想法是如何处理数据,然后再选择最为方便处理的数据结构,那么重点主要集中在数据上了。结构化程序设计的基本思想是:系统按功能要求分解为若干个子模块,子模块再根据需求进一步分解为子模块,不断的进行分解,从上往下进行分解,这样的形式是自顶向下的“瀑布式”设计,仅运用了顺序、分支和循环三种结构设计编码。
面向对象程序设计中,用户需要做的事向对象传送消息。编程人员在设计过程中要做的就是向对象处理适当的消息以及它的内部数据,这样就最大限度了提高了代码的可重用性,缩短了调试时间。面向对象程序设计与结构化程序设计是相反的,面向对象的程序设计是从下往上的“喷泉式”的设计,对象是数据处理方法紧密结合的整体。
三、Windows及应用程序与面对对象的程序设计
Windows中的图形用户接口包括窗口,下拉式菜单,对话框等各种控件,这就使得Windows应用程序非常容易使用。我们用结构化的程序设计方法开发Windows应用程序非常困难,即使要在屏幕上生成一个简单的窗口或是一个简单的下拉式菜单也要编写几十条甚至几百条复杂的代码,写这些代码的前提必须是我们对Windows具有非常深入的了解。那么在这种情况下,一种开发时间短、质量高、复用性高等比结构化程序设计方法优良的设计方法。由于Windows的进城的核心也是对消息的处理,因此Windows程序编程是以消息为核心。消息也是面向对象程序设计的基本机制,程序的进程的核心也是对消息的处理,因此面向对象程序设计比结构化程序设计更适合于开发Windows应用程序。利用面向对象程序设计的封装性可以把Windows应用程序的所具有的行为进行封装,形成一个类层次库,这样就为Windows应用程序提供一个一致、直观和简单的与Windows的接口。面向对象程序设计具有继承性这一特性,Windows的应用程序可简单、方便的继承和选择性的使用Windows特性而不必重写这些代码,同时,编程人员也可以借用其他应用程序的功能代码,或是稍作修改,也不必考虑Windows底层的细节。那么这样看来,类层次库就大大的降低了Windows程序设计的复杂性,编程人员也不必一条一条代码的编写,显著的减少了创建Windows应用程序界面所需的源代码量,因此面向对象的程序设计在开发应用程序方面显示出巨大的优越性。
四、结语
面向对象的程序设计方法是当前软件设计的一个主要潮流,采用这种方法开发出的软件具有极大的稳定性、可维护性和可重用性,面向对象程序设计方法运用于软件设计中极大的提高的功能代码的复用性,大大的提高了工作效率。
参考文献:
[1]李双双,李探.面对对象的设计方法[J].计算机光盘软件与应用,2010年第5期
[2]史济民,顾春华,李昌武,苑荣.软件工程——原理、方法与应用(第二版)[M].北京:高等教育出版社,1990
面向对象设计方法论文 第5篇
1、在目录第二部分需求分析中,搭建用例图之后,需要加入对每个用例的事件流文档描述,即用例说明,这个描述很重要,在之后分析逻辑业务类、创建交互图以及用例测试中都要参考此文档。详见下午发放的用例图打印单。
2、在第三部分系统架构设计中,学生通常将模板内容原样拷贝,如果毕业设计没有采用任何架构方案或者根本没有去分析和开发架构层的类和类图,此处可略。
3、目录4.2业务逻辑对象类的设计,目的在于发现业务逻辑类并搭建类间关系即业务逻辑类图,属于面向对象分析范畴,只有找到了这些业务逻辑类,才能在详细设计中搭建交互图,否则在时序图中,顶端并排排列的类实例就成了无源之水,因此,4.2部分前置到详细设计之前。此部分检查学生根据他的业务逻辑是否有类似20页和21页的类图。
4、关于详细设计:交互图在于描述系统的整体动态内容,即我们在上一步面向对象分析中发现的类的实例之间的交互关系,也可以说一张交互图描述了一个用例内部的“如何做”,交互图包括时序图和协作图,前者侧重于描述交互的时间序列,后则侧重于描述对象的组织关系,二者在语义上是等价的,学生可根据需要选择用哪个图,要求学生对系统的主要业务用例要用一个交互图描述,比如ATM系统的取款用例、存款用例;状态图和活动图描述的是系统的局部动态内容,前者体现的是类内部状态的变化和迁徙,后者体现类方法的流程,类似于流程图。总体说来,这部分就是学生根据需要描述的内容选择相应的动态模型图。
面向对象设计方法论文 第6篇
用面向对象方法设计无人直升机信息处理系统
面向对象的`设计方法在系统设计中得到了越来越广泛的应用.地面信息处理系统是无人机的重要组成部分,在无人机执行任务过程中,地面信息处理系统提供的无人机的飞行参数和设备参数是飞行员实施监控的依据.分析了共轴式无人驾驶直升机地面信息处理系统的特点和需求,应用面向对象的设计方法,设计了无人机测控地面站信息处理系统,该系统具有易重复使用、易改进、易测试、易维护和易扩充等特点.经过多次试飞证明,该系统满足飞行要求.
作 者:赵琦 张晓林 作者单位:北京航空航天大学电子工程系刊 名:北京航空航天大学学报 ISTIC EI PKU英文刊名:JOURNAL OF BEIJING UNIVERSITY OF AERONAUTICS AND ASTRONAUTICS年,卷(期):28(4)分类号:V243.5关键词:无人驾驶直升机 遥测 遥控 信息处理 面向对象
面向对象设计方法论文 第7篇
多杆机构可以通过不同杆系的串联组合及对杆系参数的调整实现末端执行机构复杂的运动规律和运动轨迹,从而满足不同机械的结构设计要求,广泛应用于各种机械、仪表和机电一体化产品结构设计中。
多杆机构的传统杆系设计方法主要包括图解法,解析法,图谱法和模型实验法等,尤其是随着数值计算方法的发展,解析法成为各类多杆机构运动设计的一种有效方法。文献针对多杆机构末端执行机构运动存在非线性传递的问题提出了一种基于遗传算法的多杆压力机运动优化方法;文献通过对多杆系统的分级处理,借助杆系设计变量、约束函数和目标函数推导出最终的增广目标函数,从而计算得到系统的主要参数(运动参数和结构参数);文献通过建立了滑块位移,速度,加速度的数学模型,按滑块在工作行程内速度波动最小的原则建立了优化设计数学模型,最终运用复数矢量法对压力机双曲柄多杆机构进行了运动分析;文献以一种平面八连杆机构为例建立了平面多杆机构的运动分析数学模型,并利用MATLAB对其进行了优化设计和仿真分析。上述方法解决多杆机构运动设计问题的核心思想在于依赖建立能够客观反映机构运动学和动力学特性的代数解析方程(组),借助系统耦合矩阵,实现对全系统状态方程的程式化推导,通过探讨方程(组)解的形式以及方程(组)解的存在条件等方式,实现对特定结构,特定参数变化条件下系统动态性能的定性描述与比较。然而,当多杆机构给定的运动设计要求较多或较复杂,难以用数学语言对其进行模型表达时,上述多杆结构优化设计方法表现出明显的建模周期长,模型可靠性差,模型重用性差等缺点,延长了产品的设计周期,增加了产品的设计成本。
自20世纪80年代以来,诸多学者提出从系统工程角度将计算机辅助设计优化技术应用于复杂产品研发,借助多种计算机辅助设计软件实现了不同领域仿真物理模型自动向数学模型的转化,并通过综合使用数值仿真技术、优化技术、统计技术、计算机和网络技术,最终实现多目标多约束条件下,产品综合性能和整体质量的改进,极大地提高了产品的设计效率,缩短了产品的设计周期。
1多杆机构优化设计问题
具有不等式约束的多杆机构优化设计问题的数学表达模型可以概括为:
min/maxf(x)=f(x1,x2,…,xn)
s.t.Rj(x··)=gj(x1,x2,…,xm)0≤(j=1,2,…,m)
即在满足m个不等式约束gj(x)≤0的限制条件下,求使目标函数f(x)趋于最小或最大的设计变量向量x=[x1,x2,…,xn]T,(x篟n,Rn为设计变量可行域)。其中目标函数f(x)可以是给定的滑块运动要求,也可以是机构整体的动力学输出特性要求。当给定的运动要求较多或杆系较复杂时,针对多杆机构结构优化设计可以归纳为典型的多目标多约束优化问题。
1.1双曲柄滑块机构
以一种由双曲柄机构与曲柄滑块机构串联组成的六连杆机构,即双曲柄滑块机构的优化设计问题为例。双曲柄滑块机构运动原理图,由于双曲柄机构ABCD的存在,双曲柄滑块机构的滑块运动输出特性得到了有效改善。在恒速驱动条件下,2种机构滑块运动输出特性对比。在相同滑块负载条件下,2种机构驱动电机扭矩对比。
在相同驱动条件下,双曲柄滑块机构与传统曲柄滑块机构相比,两者具有相同的工作周期,且在图示工作行程内,双曲柄滑块机构滑块运动速度趋于平稳,而传统曲柄滑块机构则表现出明显的速度波动。当上述机构应用于锻压机械传动系统,尤其是进行拉伸工艺操作时,传统曲柄滑块机构的上述运动特性极易造成拉伸件的拉裂,加剧模具的磨损。
在相同滑块负载条件下,双曲柄滑块机构与传统曲柄滑块机构相比,在图示负载作用周期内,双曲柄滑块机构驱动扭矩最大值明显小于传统曲柄滑块机构。双曲柄滑块机构上述动力学特性使其更适于作为需要实现大增力比的大型机械传动系统。
由于双曲柄滑块机构的上述特性,该机构被广泛应用于不同功能机床的传动系统,最典型的应用包括多连杆压力机的传动机构和插齿机传动机构,前者利用双曲柄滑块机构滑块加工工作行程内速度变化平稳的优点,相对传统锻压机械在相同加工效率的条件下,能够显著提高拉深工件的成形质量,同时降低模具的磨损;后者则利用相同负载条件下,双曲柄机构的加入能够显著降低系统对于驱动电机容量要求的特点,在不影响加工效率的前提下达到显著的增力效果,最大限度地提高相关加工设备的加工能力。
1.2多杆机构多目标多约束问题描述
以上述双曲柄滑块机构为例,作为多连杆压力机传动系统为适应不同加工工艺操作,不同加工材料,不同材料加工厚度对滑块加工运动轨迹的不同要求,往往需要针对特性的滑块运动轨迹对杆系结构参数进行优化设计;而作为插齿机传动机构,由于要综合考虑结构强度,齿刀寿命等因素,也需针对不同的结构增力要求对其结构参数进行优化。
如何针对不同加工应用领域,不同的功能设计要求,对同一多杆机构的尺寸参数进行优化,使其更合理地规划末端执行机构的运动学和动力学输出特性是多杆机构优化设计的核心问题。显然,上述双曲柄滑块机构针对不同加工应用领域,其优化目标侧重点不同,当双曲柄滑块机构应用于多连杆压力机时,其优化目标可以概括为:求使滑块运动输出满足特定曲线要求的连杆参数优化组合,侧重于对滑块运动学特性的优化;当双曲柄滑块机构应用于插齿机时,其优化目标则更侧重于提高双曲柄机构的增力效果,即求能够使机构输出扭矩最大化的杆系参数优化组合。
其中,M代表变量Loa,Lab,Lbc,Loc的可行域,双曲柄机构成立条件可以表述为:取最短杆为机架,且最短构件与最长构件长度之和小于或等于其他两构件长度之和,即:
Loc
Loc
Loc
Loa+Lab+Lbc-Loc-2max(Loa,Lab,Lbc,Loc)≤0
2基于Isight与ADAMS面向对象的多杆机构优化设计
通过Isight对用户建立的ADAMS参数化仿真模型的仿真分析流程进行集成和管理,借助Isight提供的多种优化搜索策略对多杆机构的多目标多约束优化问题进行求解,从而获得满足设计要求的整体优化结果。
2.1ADAMS参数化模型的建立
取双曲柄滑块机构从动曲柄水平位置为建模参考位置,利用优化参数对模型坐标点进行参数化,从而建立双曲柄滑块机构的仿真参数化模型。最终建立由杆系几何参数约束的ADAMS参数化模型。其中:α=cosLab2+Loa2+Loc2-Lbc22LoaLoa2槡+Loc()2,β=atanLocLoa()。
2.2双曲柄滑块机构优化
Isight具备试验设计方法(designofexperiment),梯度优化算法(gradientoptimization),直接搜索方法(directsearch),全局优化算法(globaloptimization)等多个优化求解模块,考虑到上述双曲柄滑块机构设计参数不多,以梯度优化算法中的NLPQL算法为例,对双曲柄滑块相关目标函数的优化问题进行求解。
NLPQL算法将目标函数以二阶泰勒级数展开,并通过把约束条件线性化的方式二次规划得到下一个设计点,然后根据2个可供选择的优化函数执行一次线性搜索,其中Hessian矩阵由BFGS公式更新,该算法具有运行稳定,数据收敛速度快的特点。
3仿真结果分析
在Isight中设置好设计变量,约束条件和优化目标后调用ADAMS模型进行批处理运算,计算过程中对每个样本点进行迭代,以双曲柄滑块机构增力特性优化流程结果为例。
在NLPQL算法作用下,设计变量在所定义的变化限制范围内逐步收敛得到所限制范围内的局部最优解。,相同负载条件下,优化后的驱动扭矩较优化之前降低了35%,达到了良好的优化效果。
4结语
面向对象的程序设计质量控制方法 第8篇
关键词:程序质量,程序设计,程序设计风格,模块化
1. 程序设计的一些准则
人们总是希望编制清晰、紧凑、高效的程序,但这些特性在编码时往往互相矛盾,一般应依次考虑下列原则:
(1)程序的正确性与可靠性
程序的价值首先在于能够运行并正确地解决问题,即在预定的条件下输入必要的数据后,能得到正确的输出结果。其次,还要求程序必须稳定可靠,在遇到意外情况时能自动进行适当的处理。例如,程序能识别由于误操作输入的不合理数据,并能采取适当的对策,以确保程序的运行不受干扰。可靠性指的是程序正常工作的能力,一般用平均无故障时间来衡量。
(2)程序的可读性
现代计算机的应用程序往往由若干人分工合作完成。某个人编写的程序不仅自己能读懂,还要使其他人也能够读懂,这样才便于整个程序系统的调试、组装。为此,应尽可能在程序中关键的位置上使用注释语句,说明程序模块的功能、变量的作用等。
(3)程序的可维护性
程序运行时可能出现故障。出现故障后检查故障的原因、确定程序中的错误位置、修正程序中的错误等操作需要一定的时间。程序可维护性的优劣就是以这类操作所需时间的长短来体现的。
(4)程序的重用
程序的重用是降低软件开发成本、提高软件质量的有效途径,尽可能编写可重用的模块,减少重复的劳动。
(5)程序的可移植性
程序的可移植性指的是在某一种型号的计算机上编写的程序,转到其它型号的计算机上运行的能力。
(6)程序的可扩充性
程序的可扩充性指的是在不改变整体结构的前提下,经过某些处理使程序的功能有所扩充。
(7)程序的效率
程序的效率主要是指程序运行时所占有的系统资源与程序本身处理功能的比率。
2. 程序结构
程序结构的主要原则:
(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。
(2)选用的控制结构只准许有一个入口和一个出口。
(3)复杂结构应该用基本控制结构进行组合嵌套来实现。
(4)严格控制GOTO语句。
3. 良好的程序设计风格
良好的程序设计风格是软件开发人员应该具备的基本素质。良好的编写习惯,不但有助于代码的移植和纠错,也有助于软件开发人员之间的协作。
(1)源程序文档化。正确、适当地使用注释,恰当地使用标识符,完整地编制文档。
(2)数据说明的次序应标准化,对于复杂数据结构,应说明实现这个数据结构的方法和特点。
(3)语句结构应该简单而直接。如不要为了节省空间而把多个语句写在同一行。
(4)输入/输出。对所有输入输出数据都进行检验,对输入数据,说明其可用的选择或边界值;输出的内容应保持格式一致。
(5)尽可能提高程序的效率。
4. 模块化
采用模块化程序设计可以使软件结构清晰,不仅容易设计,也容易阅读和理解。因为程序错误通常局限于有关的模块以及它们之间的接口之中,所以模块化程序设计使软件容易测试和调试,有助于提高软件的可靠性。
4.1 分解
根据人们解决问题的一般规律,将一个复杂的问题分解成若干个较小的问题,能够减小解题所需要的总工作量。
4.2 模块的独立性
每个模块是一个特定子功能,模块之间仅仅交换那些为完成系统功能必须交换的信息,相对于其它模块独立。模块的独立程度可以用两个定性标准来度量,一是内聚,二是耦合。
4.2.1 内聚(1)偶然性内聚
模块内各成分在功能上互不相关,即使有关系,也很松散。
(2)逻辑性内聚
模块完成的各项任务逻辑上相关,通常由若干个逻辑功能相似的成分组成。
(3)时间性内聚
模块包含的各项任务必须在同一时间段内执行。
(4)过程性内聚
一个模块内处理的元素是相关的,而且必须按照某一特定次序执行。
(5)通信性内聚
模块内部的各成分都使用同一种输入数据,或产生同一个输出数据,它们靠公用数据联系在一起。
(6)顺序性内聚
模块内各组成部分必须顺序执行,前一部分的输出就是后一部分的输入。
(7)功能性内聚
模块内所有成分结合在一起,用于完成一个单一的功能。
内聚度越高越好,设计程序时,应该能够识别内聚度的高低,尽可能地提高模块的内聚度,从而获得较高的模块独立性。
4.2.2 耦合
(1)非直接耦合
两个模块之间任何一个都能够不依赖于其它模块而独立工作,相互之间没有信息传递。
(2)数据耦合
如果模块之间通过参数交换信息,而信息仅限于数据,则构成数据耦合。
(3)特征耦合
模块之间不仅仅交换数据,而且交换数据结构。
(4)控制耦合
模块间传递的信息中含有控制信息。
(5)外部耦合
若干个模块与同一个外部环境关联。
(6)公共耦合
若干个模块访问同一个全局性的数据结构。
(7)内容耦合
两个模块之间出现一个模块使用另一个模块内部的数据或控制信息,或者一个模块直接转移到另一个模块的内部。
在程序设计时应追求尽可能松散耦合。因为耦合松散的程序对模块的设计、测试和维护相对独立。模块间的耦合程度直接影响程序的可理解性、可测试性和可维护性。
5. 结束语
质量是软件需求方最关心的问题。软件设计成功的标准是用户使用你所设计的软件可以很容易完成要完成的任务。软件的质量因素有很多,主要有以下方面:
正确性与精确性:软件开发人员要为“正确”、“精确”四个字竭尽全力。
性能与效率:用户都希望软件的运行速度高些,并且占用资源少些。
易用性:由于人们的专业领域不同、操作习惯不同等原因,对软件的感觉与要求差异很大,软件开发人员要多从用户的角度来考虑问题。
可理解性与简洁性:编程时还要注意不可滥用技巧,应该用自然的方式编程,简洁是一种美。
程序的正确性是保证程序质量的前提。软件开发人员的工作是创建正确的、完全符合要求的代码。保证代码的正确性是软件开发人员的责任,因此,软件开发人员在把代码提交给编译器之前必须彻底地检查代码的正确性。采用一个良好的定义过程是第一道防线,其次是进行检查。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。
参考文献
[1]张忠林,王坚生,兰丽.软件项目管理思想在“软件工程”实践教学中的应用[J].计算机教育,2010,(05):157-160.
[2]王美华,张刚,丁京柱.面向对象的程序设计[J].河北工业科技.1999,(12):26-30.
面向对象设计方法论文 第9篇
【关键词】面向对象 程序设计 发展史 UML
1 面向对象特征概述
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。面向对象程序设计具有抽象性、封装性、继承性和多态性等特征。
抽象:指从事物中舍弃个别的、非本质的特征,而抽取共同的、本质特征的思维方式。
封装:将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。
继承:让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。
多态:指一般类和特殊类可以有相同格式的属性或操作,但这些属性或操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。
2 面向对象设计方法发展历史
在这里把面向对象方法的发展分为三个阶段:雏形阶段、完善阶段和繁荣阶段。
(一)雏形阶段
1967年挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,首先引入了类的概念和继承机制,它是面向对象的先驱。1972年Palo Alno研究中心(PARC)发布了Smalltalk-72,其中正式使用了“面向对象”这个术语。Smalltakl的问世标志着面向对象程序设计方法的正式形成。
可以说出现了面向对象语言之后,面向对象思想才得到了迅速的发展。过去的几十年中,程序设计语言对抽象机制的支持程度不断提高:从机器语言到汇编语言,到高级语言,直到面向对象语言。汇编语言出现后,程序员就避免了直接使用0-1,而是利用符号来表示机器指令,从而更方便地编写程序;当程序规模继续增长的时候,出现了Fortran、C、Pascal等高级语言,这些高级语言使得编写复杂的程序变得容易,程序员们可以更好地对付日益增加的复杂性。
(二)完善阶段
PARC先后发布了Smalltalk-72、76和78等版本,直至1981年推出该语言完善的版本Smalltalk-80。Smalltalk-80的问世被认为是面向对象语言发展史上最重要的里程碑。迄今绝大部分面向对象的基本概念及其支持机制在Smalltalk-80中都已具备。它是第一个完善的、能够实际应用的面向对象语言。但是随后的Smalltalk-80的应用尚不够广泛,其原因是:
追求纯OO的宗旨使得许多软件开发人员感到不便。
一种新的软件开发方法被广泛地接受需要一定的时间。
针对该语言的商品化软件开发工作到1987年才开始进行。
(三)繁荣阶段
从20世纪80年代中期到90年代,是面向對象语言走向繁荣的阶段。其主要表现是大批比较实用的面向对象编程语言的涌现,例如C++、Objective-C、Object Pascal、CLOS、Eiffel和Actor等。这些面向对象的编程语言分为纯OO型语言和混合型OO语言。混合型语言是在传统的过程式语言基础上增加了OO语言成分形成的,在实用性方面具有更大的优势。此时的纯OO型语言也比较重视实用性。现在,在面向对象编程方面,普遍采用语言、类库和可视化编程环境相结合的方式,如Visual C++、JBuilder和Delphi等。面向对象方法也从编程发展到设计、分析,进而发展到整个软件生命周期。
到20世纪90年代,面向对象的分析与设计方法已多达数十种,这些方法都各有所长。目前,统一建模语言已经成为世界性的建模语言,适用于多种开发方法。把UML作为面向对象的建模语言,不但在软件产业界获得了普遍支持,在学术界影响也很大。在面向对象的过程指导方面,目前还没有国际规范发布。当前较为流行的用于面向对象软件开发的过程指导有“统一软件开发过程”(RUP)和国内的青鸟面向对象软件开发过程指导等。
3 面向对象设计方法应用现状
当前,面向对象方法几乎覆盖了计算机软件领域的所有分支。例如,已经出现了面向对象的编程语言、面向对象的分析、面向对象的设计、面向对象的测试、面向对象的维护、面向对象的图形用户界面、面向对象的数据库、面向对象的数据结构、面向对象的智能程序设计、面向对象的软件开发环境和面向对象的体系结构等。此外,许多新领域都以面向对象理论为基础或作为 主要技术,如面向对象的软件体系结构、领域工程、智能代理、基于构件的软件工程和面向服务的软件开发等。
4 结语
计算机软件技术的发展日新月异,在很短的时间内即涌现出了大量的软件开发工具并迅速地更新换代,给编程人员进行程序设计带来了极大的方便。在不久的将来相信面向对象程序设计技术必将应用到更多的程序中。
【参考文献】
[1] 麻志毅,著.面向对象分析与设计.机械工业出版社,2013,2.
【面向对象设计方法论文】相关文章:
面向对象设计方法06-10
面向对象分析和设计07-12
面向对象分析和设计10-03
面向对象的分析和设计03-09
浅谈面向对象程序设计10-23
面向对象分析和与设计03-09
9、软件工程面向对象方法学引论总结07-06
Java面向对象程序设计课后答案05-23
面向/基于对象06-16