面向对象与面向过程

2024-06-17

面向对象与面向过程(精选十篇)

面向对象与面向过程 篇1

1 面向过程程序设计

“面向过程”是一种以模块为中心的编程思想。面向过程的软件, 其程序结构是按功能划分为若干个基本模块, 这些模块形成一个树状结构, 这个树形结构表现的是各个模块之间相互调用的关系;各模块之间的关系尽可能简单, 在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。面向过程的程序流程在编码时已确定[1]。

“面向过程”所采用的是自顶向下、逐步求精的开发方法, 先将一个复杂的大系统分解为若干个可独立设计的子模块, 并明确各模块间的组装与交互机制, 在各个子模块设计完成之后将这些子模块组合起来, 形成最终的大系统。系统的模块化设计, 目前还没有一个完全机械式的形式化的方法[1]。

“面向过程”中的模块设计坚持的是“高内聚, 低耦合”的设计原则。其中“高内聚”是指每一个模块都执行一个完整的功能, 具有一个完整功能的业务都组合在一个模块当中, 而不会分散到两个或者多个模块当中。“低耦合”是指每一个模块之间的共用的信息应该尽量少, 比如说参数, 全局变量等, 换句话说, 就是每个模块之间的交集应该尽可能的小, 应该尽量降低每个模块之间的耦合度。

2 面向对象程序设计

“面向对象”的特色是程序围绕被操作的对象来设计, 不是围绕操作本身。所以面向对象里有几个新的概念, 这就是对象、类、方法、事件、属性等。“面向对象”方法是一种把面向对象的思想应用于软件开发过程中, 知道开发活动的系统开发方法, 简称OO (Object-Oriented) 方法, 是建立在“对象”概念基础上的方法学。它的基本思想是把软件系统分解成一个个的对象, 以对象为中心, 以类和继承为构造机制来认识、理解、刻画客观世界和设计、构建相应的软件系统。

“面向对象”是一种以事物为中心的编程思想。把数据及对数据的操作放在一起, 作为一个相互依存的整体——对象。对同类对象抽象出其共性, 形成类。类中的大多数数据, 只能用本类的方法进行处理。类通过接口与外界发生关系, 对象与对象之间通过消息进行通信。程序流程由用户在使用中决定[2]。

面向对象程序设计方法的中心是围绕着对象、类、消息、继承性和多态性等机制展开的。其中对象、类是面向对象程序设计方法的核心, 消息是连接它们的纽带, 继承性是面向对象程序设计方法得以最大限度地实现代码重用, 而多态性则是使这一方法更加灵活和高效。

3 泛型程序设计

泛型程序设计是以类型需求为中心的程序设计方法。就是说要将程序写得尽可能通用, 可以适合多种数据类型的操作, 同时并不损失效率。泛型程序设计的抽象机制是直接建立在需求分析上, 从而易于同需求分析阶段更好地衔接。泛型程序设计的过程就是发现类型需求、分析类型需求之间的关系, 并运用这种类型需求关系实现系统结构和逻辑的过程[3]。

泛型设计的目标是将算法从对象的行为中分离出来, 做到算法的设计与数据结构无关, 从而实现算法软件的复用。泛型设计必须创新一种技术, 将数据结构与算法之间的强祸合关系削弱为弱祸合关系, 从而解决算法软件的复用问题。

泛型程序设计有三个非常重要的概念, 也是泛型程序设计的基石, 它们是概念 (Concept) 、模型 (Modeling) 、强化 (Refinement) 。概念是一组能支持相应的操作类型数据的定义, 这些操作与具体的数据类型无关, 也可以认为它是一组类型的集合。当某个类型满足某个“概念”的所有条件, 称此模型为该“概念”的一个“模型”。如果概念C2拥有概念C1的所有功能, 并且加上其他功能, 便说C2是C1的一个强化。它们三者之间的关系如图1所示:

4 三种程序设计的比较

上述三种程序设计方法虽然在本质上有很大的区别, 但它们之间仍然存在连系。面向对象是面向过程发展到一定阶段的产物, 而泛型程序设计又是面向对象发展到一定阶段的产物, 比如面向对象中的类的成员函数离不开面向过程中的函数, 而没有面向对象中对类型的抽象, 也不会有泛型程序设计的发展。

4.1 抽象层次

面向过程的开发在解决问题的时候有点欠缺, 抽象层次不够, 因为面向过程主要是以数据流和时间的触发进行过程, 以函数和模块为共享的单位, 如果应用的需求经常变化, 则面向过程建立起来的程序结构也会随着需求的改变而发生变化。面向对象的开发是从现实世界抽象出一个个的对象, 再对具有共同特征的对象抽象出类, 并通过继承来实现程序的共享和重用, 通过消息来实现各个对象之间的通信。在类这一层次对软件系统进行抽象, 而泛型程序设计比面向对象程序设计具有更高的抽象能力。由于面向对象程序设计是以共同的基类为共性抽象, 而泛型程序设计是以共同的需求条件为共性抽象, 因此, 泛型程序设计比面向对象程序设计具有更高的抽象能力, 并且泛型程序设计包含了面向对象程序设计的核心内容[4]。

4.2 语言的复杂性

面向过程的设计是以函数和模块为共享单位, 因此, 面向过程的语言相对而言要简单一些, 面向对象是以类和接口来对程序进行抽象和组装, 比面向过程的语言抽象性更高, 而类和接口的组织和建立要比函数的建立复杂得多, 因此, 面向对象的程序设计语言比面向过程的程序设计语言要复杂。而泛型程序设计是以共同的需求条件为共同的抽象, 具有相同的需求条件, 在泛型程序设计中就可以进行相同的抽象, 而在需求层次上的抽象要比在类和对象上的抽象又要复杂得多。在泛型程序设计中, 往往一个数据类型就可能要比面向过程和面向对象的一行代码还要长, 因此, 泛型程序设计的程序语言要比面向过程和面向对象程序设计语言都要复杂得多。

4.3 通用性

面向过程采用数据结构来构造计算类型, 用算法表示处理事物的方法, 事物之间的联系是通过过程的调用来实现。面向过程虽然强调数据结构和算法, 但是在构造上和形式上却是分离的, 没有达到形式与内容的统一, 通用性一般。面向对象用类来描述事物的抽象, 用消息和继承来表示事物的联系和层次关系, 把数据和对数据的操作封装在类中, 通过建立一个个对象来构件软件系统, 以对象—消息为机制的系统在通用性方面比面向过程要优越很多。泛型程序设计比面向对象程序设计更具有通用性。面向对象程序设计的通用性是建立在类和类的继承机制上的, 这导致了面向对象的算法只能被用在有限的类型上, 而泛型程序设计的算法是建立在结构一致性上, 因此泛型程序的算法不局限于某些具体的数据类型, 而能够运用到的类型集是无限的、非绑定的[4]。

4.4 对软件的建模

面向对象是以模块为软件的基础, 因此, 面向对象程序设计所采用的软件建模都是和模块有关的, 比如数据流图, 状态转换图等。面向对象是以类和对象为基础来组织数据的, 因此面向对象的建模是围绕着类和对象来进行的, 比如类图、对象图、交互图、活动图等。泛型程序设计是以需求为基础的程序设计, 因此泛型程序设计的建模是围绕着不同的需求来进行的。

5 结束语

面向过程程序设计、面向对象程序设计与泛型程序设计方法各有千秋, 当今软件开发领域的主流是面向对象的程序设计方法。在某些情况下, 它们的设计原则可能各自对立, 但如果能将这三种设计方法的优点巧妙结合, 就能更好的解决软件开发领域的实际问题。

参考文献

[1]SommervilleI, .软件工程 (第8版) [M].北京:机械工业出版社.2007.

[2]SChach, S R.面向对象软件工程[M].北京:机械工业出版社.2009.

[3]Stanley B.Lippman Barbara E.Moo Josée LaJoie.C++Primer (第3版) [M].电子工业出版社.

面向对象与面向过程 篇2

面向对象分析与设计试题B卷

一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分)3.下列不属于面向对象技术的基本特征的是()。

A.封装性

B.模块性

C.多态性

D.继承性

4.面向对象程序设计将描述事物的数据与()封装在一起,作为一个相互依存、不可分割的整体来处理。

A.信息

B.数据隐藏

C.对数据的操作

D.数据抽象

5.关于面向对象方法的优点,下列不正确的叙述是()。

A.与人类习惯的思维方法比较一致

B.可重用性好

C.以数据操作为中心

D.可维护性好 8.下列不属于类的成员函数的是()。

A.构造函数

B.析构函数

C.友元函数

D.拷贝构造函数

9.继承机制的作用是()。

A.信息隐藏

B.数据封装

C.派生新类

D.数据抽象

14.()是从用户使用系统的角度描述系统功能的图形表达方法。

A.类图

B.对象图

C.序列图

D.用例图

15.()是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。

A.对象图

B.组件图

C.类图

D.配置图

16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。

A.对象图

B.协作图

C.状态图

D.序列图

17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。

A.组件图

B.协作图

C.状态图

D.配置图

18.在用UML进行数据库的分析与设计过程中,()就是进行数据库的需求分析,使用用例图、类图、顺序图、活动图等建立业务模型。

A.逻辑数据模型设计

B 业务Use Case模型设计

C.物理数据模型设计

D.物理实现设计

19.使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。

请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

A.业务Use Case模型设计

B.逻辑数据模型设计 C.物理数据模型设计

C.物理实现设计 20.UML的动态建模表示包含()种图。

A.9

B.5

C.4

D.2

二、填空题(每空 1 分,共 20 分)1.面向对象开发方法一改过去传统的以_______________为基础的______________的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_______的集合,其______________又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的______,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与____________在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的________、________、_________等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服____________。因此,它已成为成熟的广为采用的软件开发方法。

2.对象是客观实体的抽象表示,是由__________________________和________________________两部分组成。而______是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的___________。通过________关系又可形成一种类层次结构。

3.UML中用于描述系统的静态建模的视图称为静态视图,包括________、_________、_________、__________和__________。

四.简答题(每空4分,共 20 分)1.简述面向对象软件开发方法的优点。2.简述面向对象技术的三大机制。3.简述OOA模型的层次结构。

4.简述OOD模型的总体结构,并画图表示。

5.应用UML进行系统分析和设计所需建立视图有那几种?

请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

五.试用UML对教学管理系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能;(2)成绩管理功能。试完成下列工作:(1)建立系统静态结构模型—画出系统用例图和类图;(10分)(2)建立系统动态结构模型—画出系统序列图和协作图;(10分)(3)建立关系数据库逻辑模型。(10分)

面向对象分析与设计试题参考答案

一、单项选择题(每小题 1 分,共 20 分)

1.D

2.C

3.B

4.C

5.C 6.D

7.D

8.C

9.C

10.D 11.B 12.B 13.B

14.D

15.C 16.D 17.D 18.B

19.B

20.C

二、填空题(每空 1 分,共 20 分)

1.功能分析, 面向过程, 对象,面向对象的设计, 概念,解空间,封装, 继承, 多态, 软件危机 2.描述对象属性的数据,四.简答题

1.简述面向对象技术发展的动因。

答:为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。面向对象开发方法一改过去传统的以功能分析为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

2.简述面向对象技术的三大机制。答:(1)封装性(encapsulation)

请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品” , 类,实例,继承

3.用例图、类图、对象图、包图、构件图、配置图 请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。(2)继承性

如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。(3)多态性

在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。3.简述OOA模型的层次结构。

答:OOA模型采用五层次结构,它们分别是:(1)对象-类层

划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。(2)属性层

定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。(3)服务层

表示对象的服务或行为,即是要定义类上的操作。(4)结构层

标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用“整体-部分”关系表示;当一个类属于另一个类时,用类之间继承关系表示。(5)主题层

可将相关类或对象划分为一个主题。4.简述OOD模型的总体结构,并画图表示。OOD体系结构的各个部分内容:(1)问题论域部分,在OOA模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。

(2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括 菜单设计、窗口设计、输入/输出界面设计等等。

请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

(3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。

(4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括:

— 数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。

— 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。

class & object layer(类及对象层)attribute layer(类及对象层)service layer(服务层)问题论域部分人机交互部分任务管理部分数据管理部分类边界实例边界实例连接属性消息服务struct layer(结构层)subject layer(主题层)主题图1.5 OOD模型的总体结构5.(1)系统用例图如下

请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

查询课程信息老师老师查询学生成绩选课注册学生学生查询课程成绩管理老师信息学生成绩管理管理学生信息管理员管理课程信息管理开设课程管理员成绩统计(b)成绩管理的用例图(a)选课管理的用例图

对象类图如下:

教师编号姓名地址电话1..*0..*课程课程名描述学时加入课程()1..*0..*学生编号姓名地址电话开设课程课程名授课日期授课时间地点指定老师()学生满否()选修课程学生名课程名学期增加记录()选课统计()(a)选课对象类图开设课程课程名授课日期授课时间地点指定老师()学生满否()学生成绩登记学生名学期课程名成绩加入成绩()打印()(b)成绩管理对象类图成绩统计学期课程名成绩按课程统计()按学生统计()打印()

请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 , 精选淘宝热门商品”

(2)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表:

学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业、班级备注)教师(教师号、姓名、出生日期、性别、籍贯、地址、电话、职称、专长、备注)课程(课程号、课程名、描述、学分、学时、性质、备注)

开设课程(课程号、学期、授课日期、授课时间、地点、选修人数、备注)

面向对象与面向过程 篇3

关键词 面向对象技术UML 课程 教学改革 教学实践

中图分类号:G633.67 文献标识码:A

0 引言

面向对象技术UML是当前最为流行的软件设计技术,在实际工程有着广泛的应用。在大学教育中该课程一直受到教师和学生的关注,也是学生专业发展的基础,诸多学生对于该课程有着浓厚的学习兴趣。①在面向对象技术UML课程教学中,需要根据课程特点实施不同的教学方法,教师要掌握课程教学的主动权,积极发挥课程引导者的作用。②然而,实际中却由于部分教师缺乏教学经验或者不能采用有效地教学方法,学生不能领悟到教师的教学意图,也不能掌握课程内容,导致了诸多学生对教学的不满,产生强烈的排斥课程现象,影响正常的教学秩序。③因此,面向对象技术UML课程教学改革势在必行。本文探索了当前面向对象技术UML课程教学中存在主要问题,并提出了诸多改进措施,改善当今面向对象技术UML课程教学面貌。

1 面向对象技术UML课程教学存在问题分析

面向对象技术UML课程教学在过去有了重要的改变,尤其是采用多媒体教学以来,在教学效果上有了很大的提高,但该课程开始历史较短,仍然存在诸多问题,具体如下:(1)教材内容。由于面向对象技术UML课程涉及较多的专业知识,这些知识又随着计算机技术变化出现新的变化,这就导致教材内容不能满足课程教学需求,教材内容也在部门知识设置上也缺乏足夠深度。(2)课程授课缺乏规范。面向对象技术UML课程的教学案例设计没有形成一个有机的整体,不能很好地把每个知识点前后贯穿,如用于需求分析建模的案例不能延续到系统分析及设计,学生在学习中难度较大,造成学生学习疲倦,对面向对象技术UML课程产生消极情感,从而不能很好地学好该课程。(3)课程教学水平较为落后。面向对象技术UML课程需要很强的实践,不仅需要课堂系统的讲解,部分教师缺乏实践意识,过多的灌输理论知识,不能提高学生的应用能力,在教学的有效性上缺乏足够的考虑。教师在授课中往往较为单一,这与该课程的开设时间和难度有着重要的联系,并且在实际中也缺乏足够的参考资料,教师教学能力也受到挑战。

2 面向对象技术UML课程改进分析

面向对象技术UML课程改革需要根据学生的需求,按照课程发展特点,及实际经验进行研究具体的实施过程,提高面向对象技术UML课程的有效性,帮助学生发展计算机软件设计能力,具体的改进分析如下:

2.1 教学目标改革

面向对象技术UML课程需要完善教学目标,建立有效地改革体制,制定良好的教学方针,在实施改革主要从以下方面分析:(1)基于教师能力的目标改革。面向对象技术UML课程确实存在较大的教学难度,这就需要重点分析教师教学中存在的困难点,由成立专门的研究小组进行讨论,通过采纳广泛有经验教师的观点形成解决方案,突破现有教学资源限制。同时,进行制定教师教学任务,细化到每节课程内容,给教师制定相应的目标,提高教师教学的主动性。(2)基于学生学习能力的目标改革。学生的学习情况是面向对象技术UML课程的最终核心,需要统计学生的学习情况,根据具体情况调整教学方针,按照学生在课堂的需求制定相应的教学措施,提高学生在课堂中的积极性。同时,针对学生的学习情况要落实检查,督促学生的学习。

2.2 教学过程改革

面向对象技术UML课程需要从教学细节中探索切实可行的改革措施,这是该课程获得发展的基础,也进行改革的关键,主要内容如下:(1)实施先进教学模式。面向对象技术UML课程的改革需要从整体上制定教学模式,先进的模式能够保证该课程教学整体策略,按照先进的思想完善教学体系。基于项目驱动教学法就是典型的教学模式,在其他课程中获得良好的推广,面向对象技术UML课程也可以采取该方式,根据该理论制定详细的教学过程,在教学中研究能够提升教学空间的内容,达到教学方法的先进性。(2)推广实践教学,增加实践内容。面向对象技术UML课程是一门应用技术,在课程设置上教师要注重引入实践内容,即使课堂时间有限,也可以根据课程给学生布置课外作业,引导学生的学习兴趣,通过实践来检验课程的学习效果,并让学生获得学习的成就感。

3 总结

面向对象技术UML课程需要根据教学实际情况展开改革,改革的主题方针也要围绕学生的学习需求。在实际课堂中落实各种改革方针,达到提高教学效果的目的。此外,未来教学中应提高学生的主体参与时间,给学生更多自我学习的时间,促进其自学能力的发展。

注释

① 王艳萍,李海燕,许波. UML实例化教学改革初探[J]. 实验室研究与探索,2011(09).

② 吉逸,陈国庆,曹玖新.研究生创新型学习的教学研究与实践[J].计算机工程与科学,2011(S1).

面向过程和面向对象解析 篇4

结构化分析方法是从功能角度来看待系统的, 它展示了系统中端到端的处理过程, 所以它在需求分析中显得尤为重要。但从上例中我们也发现, 这种自上而下的功能分解, 意味着整体的采购过程将首先被分析, 分解出各子过程的依赖关系, 然后才是对订购子过程的分析。实际上, 分析过程往往不是这样, 通常同时需要各个不同层次上的系统信息, 较低层的模型可能先被描述, 然后经过抽象最后产生一个总模型。特别对一些大型的项目, 需求不明确, 结构复杂, 因果关系无法分辨清楚, 再把这种清晰的过程模拟出来实在是太困难了, 在这种情况下面向过程就不再适用。

在实际应用中, 以上的矛盾目前已经被解决, 同时也产生了很多新的方法论, 面向对象就是现在比较常用的方法论之一。

面向对象 (Object Oriented, 简称OO) 方法认为, 世界是由一个个独立的“对象”组成的, 一切皆对象, 每个对象都有自己的状态和动作。具有相似状态和动作的对象抽象出“类”, 而这些“对象”就是这个“类”的一个实例。繁杂的对象可以由简单的对象以某种方式组合而成, 不同的对象相互作用就形成了系统。

面向对象的四大特性就是抽象、继承、封装、多态。这也是区别于面向过程的主要方面。

1) 抽象:是指将具有一致的状态和行为的对象抽象成类。所以类就是一组具有相同属性和方法的对象的集合, 比如:小明这个人-对象, 人类-类。其中特殊的是抽象类, 它不能被实例化, 抽象方法只需声明, 而不需实现;

2) 继承:是子类自动共享父类属性和方法的一种机制, 是面向对象方法区别于其他方法的一个核心思想。继承性规范了类的等级结构, 实现了公共特性的共享, 提高了软件的重用性;

3) 封装:封装的目的是使对象的定义和实现分离, 减少耦合。对象之间只能通过接口进行信息交流, 对象外部不能对对象中的数据随意进行访问和修改;

4) 多态:指同一操作作用于不同对象时可以有不同的执行结果。

与结构化方法类似, 面向对象方法也包括面向对象分析 (OOA) 、面向对象设计 (OOD) 、面向对象的程序设计 (OOP) 三个阶段, 常用的辅助工具有UML、CASE工具等。

我们同样以一个例子来运用一下面向对象方法。例:对于一个图书管理系统来说, 它具有两类用户, 一类具有借阅权限, 而另一类只能在馆内阅读。

面向对象的一个任务就是找出其中的对象, 然后根据这些对象抽象出所具有的类和类与类之间的关系。对象分类就是描述对象类与对象类之间是如何通过共有属性和服务相互关联。在本例中, 只有阅读权限的用户是一类用户, 具有借阅权限的用户是另一类用户, 他们具有不同的权限, 但也可以抽象出他们都是用户, 他们都有用户名、地址、电话等共有属性, 具有注册和取销注册的动作, 所以在这两个类之上, 又可以抽象出一个用户类, 它是这两个类的父类, 具有这两个类的共有属性。这两个类继承用户类, 便具有了这些共有属性, 同时, 这两个类又可以增加自己各自的属性和方法。在某些需要下, 还可以对这两个分类再进行细分, 加入更多的不同的属性和方法形成下一级的子类, 这些子类同样继承于这两个类之一, 并间接继承于用户类, 具有其相应父类及父类的父类的属性和方法。

面向对象的思想更符合人类认识世界的过程, 人类认识世界是以客体为视角的, 客体的属性反应客体在某一时刻的状态, 客体的行为反映客体所能从事的活动。客体和客体之间没有直接的关系, 它们是通过某种刺激才发生连接。就像人类的个体, 人与人无直接的关系, 当一个人需要另一个人帮助时, 两个个体才发生关系。面向过程更加注重功能, 分化了个体, 背离了人们认识世界的方式。面向对象将属性和方法绑定在一起形成了相对稳定的个体, 如果需要改变也只是这个类对象个体的变化, 不会像面向过程一样, 牵一发而动全身, 一个变化就引起很多部分跟着变化, 这使得安全性及扩展性都得到了提高。再有就是重用性, 它是衡量一个软件产品成功与否的重要标志。面向过程的设计, 每个过程都是针对某个项目某个处理的特定过程, 它无法实现大力度的复用, 而面向对象的设计有高度的抽象, 它把功能的实现封装在组件的内部, 对外提供统一的接口, 只要调用这个组件时, 符合这些接口的要求, 就可以把该组件放在相似的项目中使用。基于以上的优势, 面向对象的分析方法越来越多的被人们使用, 成为现在分析和设计方法中的主流。

摘要:本文从软件分析、设计的角度, 讨论了面向过程和面向对象思想的特点及分析方法。面向过程和面向对象都是对软件分析、设计的一种认识思想, 它指导着人们以不同的方式去分析和设计软件。软件的分析和设计在软件的生命周期中是非常重要的, 它决定着将产生什么样的软件, 这会涉及到编程语言的选择、软件的结构、可扩展性等多个方面。本文结合实际的案例, 简要讨论了面向过程和面向对象的分析和设计方法, 其中也涉及到多种工具 (即DFD图, UML图) 的使用, 以说明不同的分析、设计思想的特点。

关键词:面向过程,自上而下,面向对象

参考文献

[1]圣安德鲁斯大学著.软件工程[M].8版.程成, 陈霞, 译.机械工业出版社.

[2]张友生著.系统分析师教程[M].清华大学出版社.

[3]面向对象.百度百科.http://baike.baidu.com/view/125370.htm.

面向对象与面向过程 篇5

王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。

当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。

系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关系所有病人的每天和每周工作安排。

1、建立牙科诊所管理系统的对象模型。

2、建立牙科诊所管理系统的用例模型。

3、用数据流图建立所述牙科诊所管理系统的功能模型。

4、画出牙科诊所管理系统的状态图。

1、建立牙科诊所管理系统的对象模型

(1)词法分析,找出(名词)作为对象的候选者;

王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。

当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。

系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关系所有病人的每天和每周工作安排。

(2)找出问题域中对象,对候选对象进行严格筛选,从中删除不正确的或不必要的,只保留确实应该记录其信息或需要提供服务的那些对象。

王大夫(牙医的实例)

小镇(牙科诊所的地址属性)

牙科诊所

牙科助手 牙科保健员 接待员(外部角色,不是问题域内的对象)

软件系统(与“系统”同义,指将来开发的软件产品)

预约

病人

预约登记表 就诊时间(与“预约时间”,“约定时间”同义,都是“预约登记表”的属性)

预约时间 约定时间 系统

名字(与“姓名”同义,是病人记录的属性)

记录的病人数据(即“病人记录”)

病历号(病人记录的属性)

姓名

日期(“预约登记表”的属性)

预约信息(与“病人清单”包含的信息基本相同)

病人清单

病人记录

电话号码(病人记录的属性)

每天工作安排 每周工作安排

(3)确定问题域中对象彼此之间的关系。

1牙科诊所11..*病人清单1..*1预约登记表111..*工作安排1..**预约11病人记录1病人1..*每天工作安排每周工作安排

2、建立牙科诊所管理系统的用例模型。

牙科诊所管理系统<>完成预约*1111*查询预约*职员*更新预约<><>取消预约<>1*牙医1打印工作安排访问预约登记表<><>访问病人记录*

3、用数据流图建立所述牙科诊所管理系统的功能模型。

1查询病人数据病人数据病人数据D1病人记录姓名病人日期2查询预约日期有效日期3完成预约预约信息7打印工作安排每天和每周工作安排牙医4取消预约姓名/日期预约信息预约信息预约信息预约信息职员姓名5更新预约D2预约登记表预约信息姓名/日期6查询预约预约信息职员

4、画出牙科诊所管理系统的状态图。

牙科诊所管理系统的主要功能是实现病人预约,状态图如下,图中把除了完成病人预约之外的事务笼统地称为日常事务。

面向对象的软件设计技术 篇6

关键词:面向对象;特征;软件分析;设计技术

中图分类号:TP319文献标识码:A文章编号:1007-9599 (2011) 06-0000-01

Object-oriented Software Design Technology

Shi Tong

(Shanghai East China Normal University,Shanghai200062,China)

Abstract:This paper introduces an object-oriented concepts and features,as well as object-oriented software development and design of the correlation analysis,explore the object-oriented software development technology,the main content,which includes object-oriented requirements analysis techniques,surface System design technology to the object,object-oriented programming techniques and object-oriented testing techniques.

Keywords:Object-oriented;Features;Software analysis;Design technology

一、引言

随着传统结构化方法的软件开发技术的弊端不断凸现,人们逐步转向了面向对象的软件开发技术,到上世纪90年代,面向对象技术是软件开发技术中核心的开心技术,虽然近年IT界已经提出了面向服务的软件开发技术,但由于其在软件业的应用不成熟性和一些局限性,和面向对象技术的相关优势,其仍然是当今软件开发与设计的核心技术之一。

二、面向对象

(一)面向对象

1.面向对象就是把现实世界中任何一种事物看作一种可以被认识的对象,并对其具有的相关属性和行为进行发现和研究。而面向对象技术的基本思想实现了从现实世界到计算机世界的映射,即现实问题空间到计算机的解空间,其中,问题空间到解空间为自然映射的抽象,解空间到问题空间为真实而完整的反映映射。

2.对象:是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,对象表示具体的事物和抽象的规则、计划或事件。

3.类和实例:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,或者说,类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

4.消息和方法:对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。

(二)面向对象的特征

1.对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。

2.抽象性。抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。

3.继承性。继承性是子类可以自动共享父类的数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

三、面向对象的软件分析与设计

(一)面向对象的需求分析技术。按照软件工程角度来说,面向对象的需求分析是软件开发过程中的需求分析阶段,其主要是运用面向对象技术和面向对象的思想对问题空间进行思考,分析,研究等工作。面向对象的需求分析一般采用方法包括自顶向下和自底向上的方法进行系统建模。

(二)面向对象的系统设计技术。面向对象的系统设计技术阶段的主要任务就是计算机世界的解空间中的相关对象和对象之间的关系进行模型化,根据相互联系,将对象进行类型划分。具体来说,即根据需求分析的内容和相关说明,将需求分析阶段的工作进行形式化的说明和描述,达到功能规格说明,并进行层次地逐步地细化,直到细化到能用面向对象的程序语言设计和实现为止。系统设计阶段要围绕以数据为中心,程序设计与数据相结合的设计方法。

(三)面向对象的程序设计技术。面向对象的程序设计技术是面向对象的系统设计的后期工作,是对计算机世界的解空间进行具体地实现,其工作与具体的程序设计语言是不相关的,与解空间的实现策略是相关的。在确定策略后,实施程序设计的步骤,如图1所示。

(四)面向对象的测试技术。面向对象的测试技术就是采用面向对象的方法开发系统测试,与其他的测试没有本质的区别。系统测试的目的在于检测系统的正确性和稳定性,测试步骤是从局部测试开始,再到整体测试。局部测试是对系统中部分构件的综合测试,整体测试是对整个系统进行综合、全面和局部与局部之间的联系性、稳定性的检测。测试技术最主要的测试方法是“主攻型”的综合性测试,尤其在软件的开发期间,表现尤为重要。

四、总结

软件的质量与软件的开发技术与方法是密切相关的,人们针对软件质量的要求,提出了多种软件开发技术和方法,但都遇到了软件维护方面的多种问题,尤其在采用结构化的软件开发方法。面向对象的软件设计和方法提供了以往开发方法更好的解决办法,其以数据为软件的开发中心,结合用户需求和系统功能进行系统结构的建立和设计,最后形成软件的框架与结构。

参考文献:

[1]倪彬.面向对象的系统分析[J].软件世界,1995,96(2)

[2]陈余年,方美琪.面向对象软件工程[M].北京:清华大学出版社,1999,2

[3]张海藩.软件工程导论[M].北京:清华大学出版社,1998,1

面向对象软件概要设计过程 篇7

近年来软件质量越来越受到人们的关注, 据统计设计阶段产生的软件缺陷占了全部软件缺陷的27%。而概要设计是设计的基础, 没有好的概要设计也就不可能有好的详细设计, 进而也不可能有质量高的软件产品。

在软件过程中, 概要设计是在需求分析阶段完成之后进行的。需求分析和概要设计是两个极其重要的阶段。需求分析, 完成的是找到软件"做什么"的问题, 概要设计要完成的是整体项目"怎么做"的问题。需求分析是概要设计的依据, 而概要设计则是需求分析自然的逻辑延续。从需求分析走向概要设计, 就是从待解决问题的领域走向解决方案的领域, 也就是从客观的现实世界走向主观的计算机待建系统世界的过程。概要设计阶段我们要明确该阶段的基本任务, 清楚设计的基本过程, 这样才能得到高质量的设计制品。

2、面向对象概要设计方法学

方法学是指导我们解决问题的原则, 是具体问题解决方案的哲学基础, 是思考问题, 解决问题的方式方法。下面的一些方法学是概要设计的理论基础和逻辑起点, 同时它们在整个软件工程中都有体现。了解这些方法论, 有助于加深对软件工程的理解;应用这些方法论在优化软件工程的活动中会起到事半功倍的效果。

·分治法:将大的问题分解为小的问题, 从而缩小问题的规模, 降低问题的复杂度, 减少风险。

·逻辑完整性:所有的活动和所有的制品, 都有其逻辑上的起点和支撑点;同时, 也都有其逻辑上相应的结果。

·可管理:所有的活动和制品都应当能够被控制和调整。

·文档化:将不可见的活动和思维成果外化为具体的文档。

·敏捷与M D A (模型驱动架构) :敏捷的原则在于够用就好;而M D A立足于用模型取代部分文档, 增强设计的可追溯性与可重构性。

3、面向对象概要设计的依据和准则

3.1面向对象概要设计的依据

需求分析阶段产生的制品是进行概要设计的依据。需求分析的过程是对现实世界中的待解决问题的建模过程, 同时也是深入剖析待建系统的过程。软件需求分析阶段完成后得到的制品有:

U se Case (用例) :通过对前置条件、后置条件和事件流的描述来界定系统使用者对于系统的功能性需求。

D om ain M odel (领域模型) :明确待建系统中的业务实体以及它们之间的关系。

SR S/A R S (Software/A pplication R equirem ents Specification, 软件/应用需求规格说明书) :综述待建系统的目的、功能性需求、接口/界面需求、约束以及非功能性需求。

需求分析阶段产生的用例和领域模型是项目组内部的技术架构和文档说明。而最终呈现给用户的产品是需求规格说明书, 该文档可以看成是项目开发者和用户之间的协议, 它规定了最终的软件产品所应满足的各种要求。3.2面向对象概要设计的准则

(1) 模块化。

解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模块完成一个特定的子功能, 所有的模块按某种方法组装起来, 成为一个整体, 完成整个系统所要求的功能。

(2) 信息隐蔽和抽象化。

抽象是认识复杂现象过程中使用的思维工具, 即抽出事物本质的共同的特性而暂不考虑它的细节。信息隐蔽指在设计和确定模块时, 使得一个模块内部包含的信息 (过程或数据) , 对于不需要这些信息的其它模块来说, 是不能访问的。通过抽象, 可以确定组成软件的过程实体。通过信息隐蔽, 可以定义和实施对模块的过程细节和局部数据结构的存取限制。

(3) 模块独立性[1]。

耦合性与内聚性是模块独立性的两个定性标准, 将软件系统划分模块时, 尽量做到高内聚低耦合, 提高模块的独立性, 为设计高质量的软件结构奠定基础。

4、面向对象概要设计的设计过程

概要设计阶段的基本任务

软件设计是一个把软件需求转换为软件表示的过程, 最初这种表示只是描述了软件的总的体系结构, 称为软件概要设计。概要设计阶段的基本任务有:

1、设计软件系统结构 (简称软件结构) 。

2、数据结构及数据库设计。

3、编写概要设计文档。

4、评审。

面向对象概要设计的设计过程

明确了概要设计的基本任务之后, 需要着手具体的设计过程了。根据项目开发小组软件成熟能力不同, 其概要设计过程和最终的制品也会有所差异。以下描述的设计过程是需求分析阶段完成, 并且已经捕捉了所有的用例、建立了领域模型、需求规格说明书和用户达成了一致的前提条件下进行的。面向对象概要设计一般包括以下4条主线 (见下图) :

1、完成组件需求规格说明书 (CR S) 。该部分内容是概要设计的重点, 组件需求规格说明书是接下来进行详细设计的重要依据。具体过程如下:

(1) 确定系统物理结构。一般要根据需求规格说明书中开发者和用户约定的有关软硬件环境来确定, 比如该应用是Intranet还是Internet的, 浏览器要求是IE还是其它, 是否有负载均衡、防火墙等。根据这些情况, 画出系统物理结构图, 来描述项目整体的网络环境和服务器分布情况。

(2) 确定系统技术架构。根据用户需求确定表示层、业务逻辑层和数据访问层所使用的具体技术。例如, 是W eb应用, 那么采用A SP、JSP、A SP.N et还是A jax, 数据库是用M y SQ L、Server SQ L还是O racle等。

(3) 设计部署图和安装包目录图。部署图描述文件、文件夹、数据库等软件制品在计算机、服务器或磁盘等物理结点上的分布情况[2]。安装包目录图描述系统安装目录层次结构, 它体现的是模块的划分和模块之间的层次关系。

(4) 设计组件图、组件接口图和时序图。对象管理小组 (O bject M anagem ent G roup, O M G) 的建模语言规范中将组件定义为:"系统中一种物理的、可代替的部件、它封装了实现并提供了一系列可用的接口。组件是系统中一种物理的、可代替的部件, 它封装了实现并提供了一系列可用的接口"。在设计上, 它们之间是相互促进、逐步完善的过程, 并没有绝对的设计上的先后顺序。对于实体的描述它们要和部署图和安装包目录图里的描述保持一致。

(5) 组件图、组件接口图和时序图设计完成之后, 接下来就要撰写组件需求规格说明书了。该文档主要是为了接下来的详细设计, 根据文档中对组件功能、需要的接口和可以提供的接口等方面的描述, 设计人员就可以进行详细设计了。

2、完成测试脚本的录制。

(1) 完成测试计划。根据需求分析阶段完成的活动图和需求规格说明书的描述制订系统级测试计划。

(2) 设计U I静态原型。首先需要完成界面流 (U I Flow) 图。界面流图描述待建系统界面由哪些页面构成, 以及它们间的层次与导航关系。U I静态原型描述的是静态页面上的功能分布、页面布局等信息。如果是W eb应用, U I静态原型就是一个个的htm l文档。

(3) 根据测试计划和U I静态原型完成测试脚本的录制。

3、完成数据库定义脚本。首先根据需求分析阶段得到的领域模型设计总体E-R图, 然后完成数据库定义的脚本。

4、数据交换模式 (Com m unication Schem a) 。如果待建系统需要和异构数据库进行交互的话, 就需要在概要设计阶段完成Com m unication Schem a。

实际上概要设计的4个主要方面并不是绝对相互独立的, 设计过程中每一部分的变更可能都会引起其它部分的改动, 所以在设计过程中一定要相互协作, 使最后的设计制品保持一致。因为概要设计的制品在软件整个生命周期中都会起作用, 如果有不一致的情况出现, 回头再修改概要设计部分的代价是非常大的。

5、结论

文章重点研究了面向对象概要设计的设计过程, 具体的U M L图的画法可参照有关统一建模语言的书籍。详细介绍了概要设计的4条设计主线, 分别是组件需求规格说明书的撰写、测试脚本的录制、数据库定义脚本的编写和数据交换模式的编写。这4方面的工作可以同步进行, 但是在设计过程中设计人员要保持高度的协调性, 避免不一致情况的发生, 设计出高质量的制品。

摘要:分析了概要设计的方法学、设计准则和基本任务, 给出了面向对象概要设计的设计过程。提出了在具体的概要设计过程中, 组件需求规格说明书的撰写、测试脚本的录制、数据库定义脚本的编写、数据交换模式的编写等主要工作是可以同步进行的, 但它们之间又不是完全独立的, 是相互影响、不断完善的。在设计的工程中要注意保持各软件制品的一致性。

关键词:面向对象,概要设计,组件,组件需求规格说明书

参考文献

张海藩.软件工程导论 (第四版) [M].北京:清华大学出版社, 2003.84-88.

面向对象与面向过程 篇8

关键词:面向对象,UML,CASE

1 引言

近年来, 随着面向对象程序设计语言的发展和市场的使用, 我系也顺应市场的要求在各个专业中开设了面向对象程序设计语言, 如计维专业开设C#, 网络专业开设JAVA, 软高专业开设VB, 其根本目的是为了让学生毕业后, 能找到比较好的工作。但根据几年来的教学实践和毕业生的就业反馈情况来看, 效果并不是很好。原因是多方面的:

其一, 具体知识学习过程中, 学生习惯于面向过程的分析问题的方式, 以前所学习的面向过程语言程序设计主要培养学生如何把解决问题过程用计算机语言表达出来, 即编程能力的培养。而面向对象分析问题的方式不仅要求人们要了解解决问题过程, 更重要的要对解决问题的对象的辨析, 对对象特征、行为及对象相互关系的认识, 在这分析基础上进一步抽象出类、接口、包等更高层次的概念。更进一步, 学生又要学会理解, 由静态的类如何动态地构造对象, 利用对象之间的协作解决问题。这种面向对象分析问题的方式和解决问题的方式是学生不习惯的。由于这两种方式所存在的跨度, 学生一时难以理解, 容易产生厌学情绪。

其二, 在教授语言的时候, 并没有考虑到UML。目前最适合表达面向对象的分析和设计的就是UML。UML和面向对象程序设计语言相结合不仅对学生开始学习语言编程有好处, 而且对今后掌握面向对象语言从事任何领域的软件开发都会有好处。

其三, 没有纳入当今流行的CASE工具。为了提高软件开发的效率, 几乎每个软件开发机构都会或多或少地使用CASE工具。如Rational Rose, Power Designer, Visio, Erwin等。

通过对上述三个原因进行着手分析, 进而探讨我们面向对象语言教学过程中的问题, 借鉴其它院校这方面成功的经验, 并在这个基础上提出对于面向对象程序设计语言教学过程的建议。

2 面向对象思想

编程思想中, 有面向对象和面向过程之分, 它们既是世界观又是方法论。前者反映的是人对客观世界的思维方式, 后者反映的是机器对指令的思维方式。

面向对象的思想认为, 客观世界是由各种各样的实体组成的, 这些实体就是面向对象思想中的对象, 它体现了现实世界与计算机世界的关系。Windows及其应用程序中的所有元素和屏幕上创建的所有可视内容, 都可以由相应的对象来代表。在这些程序的设计中, 这些对象都是可编程的, 因此这些程序也是能够操纵这些对象的程序[1]。

每个对象都包含了属性、方法和事件。我们把Windows及其应用程序的组成元素都视为对象, 对象是封装了属性、事件和方法的事物, 如文件、文件夹、磁盘、应用程序、窗口及窗口组成元素、对话框及对话框组成元素、文字、图片等等都是对象。不同对象具有不同的特征, 这些特征我们称之为对象的属性, 是描述对象特征的数据。同时属性也是允许用户对象操作的一个方面。从程序设计的角度看, 对象是可以编程的, 反映在程序的操作使用上, 对象是可以操作的, 我们把一个对象相关的操作称之为该对象的方法, 对应用程序的操作实际上就是对象方法的应用。每个对象都有特定的事件, 如鼠标单击、鼠标双击、数据更改、窗体的打开、关闭及许多其他类型的事件。事件是一个对象可以识别的动作。用户的操作动作或程序代码执行的结果导致事件的发生, 而事件的发生, 通过消息传递通知程序执行相应功能代码, 从而实现程序的特定功能。

面向对象方法所强调的基本原则就是直接面对客观存在的事物来进行软件开发, 将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中, 使软件开发从过分专业化的方法、规则和技巧中回到客观世界, 回到人们通常的思维上。针对我系学生的特点, 应结合实例来讲解基本概念和方法, 将复杂的概念用简洁浅显的语言来描述, 做到深入浅出。

另外要注意在教授的时候, 应该注重让学生理解面向对象思想, 领会面向对象的内涵, 而不在于语言本身。如果没有领会面向对象思想就去学习语言, 无异于赶鸭子上架。可以把面向对象思想的学习放到语言课程中去, 但前提是要有一本有通俗地、可视地介绍面向对象分析和设计的教材。目前有不少好的面向对象语言教材, 但是对面向对象分析和设计很少介绍。面积对象的分析、设计和编程构成软件开发过程的主要阶段, 它们使用共同的概念:类和对象。语言仅仅使用在程序设计阶段。如果面向对象的分析、设计不能正确理解、表达, 那么, 提出的问题和问题的面向对象分析的实现之间就有一道鸿沟。

3 面向对象程序设计语言和UML相结合

统一建模语言UML (United Model Language) 是一种可视化的建模语言, 它能让系统构造者用标准的、易于理解的方式建立起能够表达出他们想象力的系统蓝图, 并且提供了便于不同的人之间有效地共享和交流设计结果的机制。

因此介绍面向对象分析、设计思想的最好语言是UML, 而不是通常使用的自然语言。在讲授面向对象语言程序设计时必须要分析问题、构造逻辑模型, 使用UML最合适。

介绍UML并不会加大学生学习的困难。一方面由于UML是个可视化的建模语言, 它使原来的面向对象的抽象概念图形化, 使对象之间的关系、类之间的关系图形化, 这使学生利于理解要解决的问题。另一方面正确把握UML介绍的方式, 利用UML的目的是方便学生直观地理解问题, 要求学生会阅读, 理解简单的UML模型, 而不是要求他们为系统建立模型。

由于UML是半形式化语言, 它的类型与面向对象语言程序结构有对应关系。在一定程序上, 使问题和问题面向对象的实现之间的鸿沟填平了。而且目前有不少用于创建UML图并将这些图组织成为模型的工具软件包。

4 面向对象程序设计语言和CASE (计算机辅助软件工程) 工具相结合

软件开发是一个涉及众多因素的过程。至今仍有不少人在影响软件开发的几个主要因素这一论题上各抒己见。但已有越来越多的人达成这这样一个共识, 那就是过程、方法和技术在主导着软件开发过程[2]。作为技术的实现手段, CASE工具在软件开发中得到了越来越多的重视。

CASE工具的使用, 对开发人员尤其是那些入门级的开发人员来说, 所带来的开发效率上的提高往往是数量级的飞跃。在人力成本日益提高的今天, 软件工具的大量采用降低了企业在培训、开发方面的风险和成本投入。对初学习人员来说, CASE工具的使用能够缩短对某项技术的学习时间, 还可增强和巩固学习效果。对于开发人员来说, CASE工具的使用能够使他们专注于技术的本质而无须记住细枝末节的东西, 从而大大提高了开发效率。缩短了工作时间。

现在越来越多的软件开发商为了谋求最大的利润空间 (以降低人力成本为中心) 不断苦苦寻觅出路, 而CASE工具恰恰打开通往这条路的大门。如果我们所培养的学生不会使用CASE工具, 那么毕业后的就业情况可想而知。而且CASE工具本身并不难学, 由于Windows技术的盛行, CASE工具在界面友好性、交互性、使用性等方面相对过去有了极大的改观, 学习它们和学习Office差不了多少。所以在教授面向对象程序设计语言的同时, 如果能够介绍相关的CASE工具, 是可以达到事半功倍的效果的。

CASE工具依据使用该CASE工具的开发阶段和CASE工具的主要功能, 可以分为需求分析工具、软件设计工具、数据设计工具、项目管理工具、程序设计工具、测试工具。但是一些集成化的CASE环境, 诸如Rational Rose、Microsoft Visio、Power Designer等, 由于它们的使用往往跨越开发过程的几个阶段, 因此很难将它们进行归类。从目前软件公司使用CASE工具的情况来看, 使用较多的是Rose、Visio、Power Designer。以我使用的情况来看, Rose功能强大, 包罗了UML各个细节, 但比较难学;Visio是继承了微软的一贯作风, 中文界面, 易于使用, 特别适合我们英语基础较差的学生, 但在软件开发方面功能最弱;Power Designer在UML方面, 功能不如Rose, 但它将业务流程建模、面向对象建模、概念数据建模、物理数据建模和关系数据库无缝地集成在一起, 在集成的工作环境中能够完成软件开发所需的全部建模工作, 缺点是英文界面, 没有中文界面, 但使用简单[3]。

如果单纯从面向对象语言考虑的话, 建议采用VISIO。但如果还需要考虑其它方面的话 (如数据库建模) , 建议采用Power Designer。

总之, 在教授面向对象程序设计语言过程中, 我们不仅要注重学生编程能力的培养, 也要注重学生利用面向对象的思想分析问题和解决问题的能力, 更要让学生懂得如何把语言的学习和CASE工具紧密结合在一起, 让我们的学生在就业中更有竞争力。

参考文献

[1]Joseph Schmuller.UML基础、案例与应用北京:人民邮电出版社, 2002.

[2]赵池龙.实用软件工程.北京:电子工业出版社, 2003.

面向对象与面向过程 篇9

程序设计方法一般有面向过程 (Proced ure Oriente d) 简称PO和面向对象 (Obj ect Or ien ted, 简称O O) 之分, 前者重在分析出解决问题所需要的步骤, 然后用函数把这些步骤一步一步实现, 使用的时候一个一个依次调用就可以了;而后者是把构成问题事务分解成各个对象, 建立对象的目的不是为了完成一个步骤, 而是为了描叙某个事物在整个解决问题的步骤中的行为。

面向对象的程序设计方法 (Object Oriented Programmiing, 简称OOP) 是一次程序设计方法的革命, 它把设计方法从复杂繁琐的编写程序代码的工作中解放了出来, 符合人的思维方式和现实世界, 主要是利用类和对象的概念, 使项目结构更清楚, 程序容易维护, 代码重用性强。

1 传统的面向过程的解决问题的步骤 (图1)

在这里“编写代码”中这部分代码是从头写到尾的, 也就是一个个过程组成的, 一旦执行, 在没有例外或认为终止的情况下, 会一直执行到结束。

下面以C语言为例写一个简单的程序, 看一下程序执行的过程。

例:求两个整数的和

这段程序编好后, 可以对它进行编译调试了, 最后生成可执行文件, 下面看一下执行过程。

首先, 程序中的first和next是两个相加的数, first+next则是二者的和, 当执行到

两句时, 屏幕上会显示 (图2) :

提示我们输入第一个“first”数, 比如我们输入2, 此时屏幕上会显示 (图3) :

接下去运行到

这两句时, 则会显示 (图4) :

同理会显示 (图5)

从这个程序的执行过程我们能够看到, 该程序从执行开始, 要么等待我们输入数据, 要么就一直执行下去。

下面我们在看同样的这个例题, 用vb来编写执行有什么不同。

2 Vb程序设计语言的执行步骤 (图6)

在面向过程的语言中, 是没有“设计用户界面”这个内容的, 当然, 在编写代码的之前也是要分析问题, 所不同的是, 分析好以后, 要设计用户的界面, 因为vb是windows下的一个应用程序, 它是windows下的一个应用程序窗口。

在我们设计好用户界面后, 就要编写代码了, 这个编写代码的过程和c语言是完全不同的, 下面用vb编写上一部分里用C语言解决的问题, 看看有什么不同 (图7) 。

首先是输入两个数, 然后点击sum按钮, 得到结果。

这个界面要比c容易看懂, 因为这个是windows的常规窗口, 看起来一目了然, 这个界面设计好以后, 就开始编写代码这个步骤, 对于这个程序来说, 只需要将代码写如sum按钮即可, 具体内容如下。

用vb编写这个程序, 只需要一条语句就能够完成了。

3 结语

通过以上的例题, 经过分析和比较, 很好的说明了面向过程和面向对象的语言二者之间存在的差异和联系, 但是依然存在着一定的问题, 就是所搜集的能够浅显易懂的说明这个问题的例题有限, 因此, 还需要积累更多的例题, 从深层次的去对照和学习。

摘要:为了让初学语言者更好的了解面向过程的语言和面向对象的语言之间的区别和联系, 本文通过解释面向过程和面向对象的语言运行的步骤, 用实例更好的阐述了这个问题, 使读者能够根据自己的需求来选择适合自己的编程语言。

面向对象与面向过程 篇10

再制造可以充分利用废旧资源中蕴含的价值来减少生产成本, 大大减少了资源浪费和废旧产品对环境的危害, 是将废旧机电资源化、再利用化的首选途径[1]。如何在不确定环境下实现再造装配过程在线实时有效质量控制, 提前预测装配结果并进行反馈从而降低再制造装配过程中出现的不合格率, 提高再制造产品的安全性和可靠性, 是我们需要重点关注解决的问题。

近年来, 越来越多的国内外专家学者将研究方向聚焦到再制造工程领域。在再制造质量管理方面, 牛同训[2]提出了一个再制造公差设计的优化数学模型并分析改进了再制造产品的再制造工序流程;Tang X等[3]用一个开放排队网络模型模拟典型再制造系统并通过近似分析算法分析研究质量不确定性对性能影响的定量规律。在再制造装配策略方面, JIN X等[4]构建了质量多样性的产品重组最优控制策略;SU Chun[5]研究了混合制造/再制造系统的缓冲区分配问题。在再制造装配质量误差建模方面, LIU J等[6]开发一个三维偏差传递过程状态空间模型来降低产品装配质量误差;YANG Z等[7]利用概率分析方法预测轴对称零件的装配误差传递, 实现对装配质量误差的控制。由于对再制造装配过程质量累积误差的产生与传播机理及在线质量反馈控制等方面的研究较少, 因此本文运用面向对象Petri网描述再制造装配过质量累积误差的产生与传播机理, 提出了一个基于面向对象Petri网的再制造装配过程质量控制方法, 该方法能够对再制造装配过程进行预测和反馈控制。

1 面向对象Petri网的再制造装配过程质量控制方法

在本文建立的再制造装配过程的面向对象Petri网模型ARP-OOPN (Assembly of Remanufacturing Process based on object-oriented Petri Nets) 中, 输入各再制造件、再利用件和新品件的关键质量属性数据, 并输入各级对应的装配工艺, 最后进行预测计算装配结果是否在合格范围内。

按图1模型中输入的装配工艺进行模拟输出, 若最后输出的结果在标准范围外, 则根据反馈筛选出不合格品;若输出结果在标准范围内, 则按照装配方案执行。通过该再制造混联结构体装配模型, 可以达到装配结果的预测-反馈效果。图1中, 方形代表新品件、圆形代表再利用件、三角形代表再制造件, 图中代表了有Pn类零部件需要进行装配, Pi类零部件进行装配成为待装配体, 最终所有待装配体组成了一个总的再制造混联结构装配体。由于再制造件的种类和数量繁多, 各再制造件、再利用件和新品件的关键质量点分布在各个工位里互相影响互相作用, 并且将作用一步步累积传递到下一个在制品中, 最终影响了整个待装配再制造机械产品的相关质量属性。

2 ARP-OOPN模型

定义1:ARP-OOPN= (OPA, R) 。其中:OPA={opa-i|i=1, 2, 3, …, n}, 装配工位用opa-i表示, n表示整个再制造装配系统由n个工位组成。R={ri-j|i, j=1, 2, 3, …, m, i≠j}, 表示各装配工位之间的关系网, 即各工位之间的信息传递、交互等过程。

定义2:opi={Pij, Tij, F, tij}。其中:Pij为第i个工位即opai内的所有库所集合, Pij={SPix, LPiz, DPiy}, 即库所分为状态库所SPix, 再装配零配件库所LPiz和数据库库所DPiy。状态库所SPix用来表征该装配工位内在制品所处的状态。再装配零配件库所LPiz为当前在制品装配提供各种零配件, LPiz={LPiz1, LPiz2, LPiz3}, 即将所有新品件、再利用件、再制造件关键质量点分为3个等级, 分别为1级优良LPiz1、2级一般LPiz2、3级较差LPiz3。数据库库所DPiy用来存储指导生产作业的装配工艺和再制造装配质量关键属性数据, DPiy={DPiya, DPiyb, DPiyc}, 即质量等级分级后对应的1级零部件数据库DPiya、2级零部件数据库DPiyb和3级零部件数据库DPiyc。

Tij为第i个再制造装配工位内的变迁集合, Tij={OTir, JTis, RTit}, 即一般变迁OTir, 判断变迁JTis和再加工变迁RTit。一般变迁OTir表征再制造装配工位内装配作业动作的进行, 判断变迁JTis表征根据判断结果决定托肯在模型中的分流, 再制造变迁RTit表征针对再制造件、再利用件所设定的独特的、对应的、专门的操作工艺。

F为库所和变迁之间的所有连接弧集合, F= (P×T) ∪ (T×P) 。

tij为托肯 (token) 集合, 包含再制造装配工位内参与装配作业的再制造在制品或再制造件、再利用件、新品件的所有关键质量信息。

定义3:ri-j={IMi, OMi, di-j}。其中:IMi表示某工位opa-i的输入接口库所, OMi表征该工位opa-i的输出接口库所, di-j表征连接前一个工位输出接口库所与下一个工位输入接口库所的信息传递门。

3 实例验证

在再制造发动机的装配过程中, 许多再制造装配工位的装配误差对曲轴飞轮组的平衡性产生很大的影响, 甚至因为各个再制造装配工位的误差逐步累积, 而造成装配结果不合格。在与再制造发动机曲轴飞轮组平衡性最相关的工位说明如表1所示。将这些工位的装配工艺、各再制造件关键质量属性数据等输入本文提出的再制造混联结构体装配模型中, 提前输出装配结果并进行预测, 反馈出合格品及不合格品。

以OPA-2再制造曲轴装配工位为例, 将所有再制造曲轴、再利用曲轴、新品曲轴按照尺寸、应力、径向跳动公差、关键部位涂覆层厚度等关键质量属性分为3个质量等级, 即1级优良、2级一般、3级较差。通过曲轴装配工位对曲轴的选择、对应装配工艺的选择来模拟输出装配结果, 如果装配结果合格, 则进入下一个工位;若装配结果为径向跳动公差过大、轴向间隙过大、回转力矩过大或过小等, 则输出为不合格, 则对曲轴进行重新选配, 或对该曲轴进行再制造加工处理后重新进入零件库。

如图2所示, 当输入接口库所IM2所获得代表在制品的托肯后, 零配件库所LP211提供1级优良的曲轴, LP212提供2级一般的曲轴, LP213提供3级较差的曲轴, 数据库库所DP211、DP212、DP213分别提供所有曲轴3个质量等级对应的3种装配工艺及关键质量属性数据。

经过判断变迁JT21提取托肯内的再装配曲轴关键质量属性信息, 如果被判不合格, 则直接流入SP21库所并触发RT21再制造变迁, 此再制造变迁为针对再制造件、再利用件所设定的独特的、对应的、专门的先进操作工艺, 再制造后到SP22库所等待再次检查;如果被判合格则托肯流入SP23库所。

OT21变迁为再装配曲轴预装配, 流入SP24库所。之后托肯流入JT22变迁根据当前再装配曲轴的等级在零配件库所LP211、LP212、LP213中进行选择, 之后流入SP25。

由于OPA-1中所选择的上瓦、OPA-3中选择的止推片和OPA-4中选择的下瓦共同决定了产品关键质量属性中的再装配曲轴轴向间隙。SP25获得托肯, 流入JT23变迁, 根据选择的再装配曲轴质量等级判断所选对应的数据库等级, 托肯以DP211、DP212、DP213数据库库所中输入的有关上瓦厚度、止推片厚度与再装配曲轴轴向间隙的装配函数关系为基础, 获取托肯中保存的关键质量属性数据, 即在OPA-1工作站选配上瓦过程中所选择的上瓦厚度值, 通过模型中的算法计算出再装配曲轴最优选配数值, 预估在制品在OPA-3中选择的止推片厚度范围, 存入数据库后流入SP26。

之后托肯流入JT24变迁, 判断预装配结果是否在数据库范围内, 如果不合格, 流入OT22进行拆分, 触发RT22再制造变迁, 回到初始点;如果被判合格, 则流入OT23按照所选再装配曲轴及装配工艺方案进行装配操作, 保证当前在制品获得最优的轴向间隙, 实现装配质量的预测-反馈控制, 并将装配后的质量信息结果存入托肯后流入输出接口库所OM2, 离开该工位。表2为OPA-2工位再制造发动机曲轴装配Petri网模型中的各模型符号与相应说明。

4 结语

本文提出了一个基于面向对象Petri网的再制造装配过程质量控制方法, 构建了一个可对再制造发动机装配过程进行预测—反馈的模型, 可以用来提前预测装配结果并进行反馈, 从而降低再制造发动机装配过程中出现的不合格率。对再制造发动机装配中曲轴飞轮组的平衡性进行预测和反馈控制, 实例验证表明了方法的有效性和可行性。

参考文献

[1]徐滨士.中国再制造工程及其进展[J].中国表面工程, 2010, 23 (2) :1-6.

[2]牛同训.再制造公差设计优化模型及其应用[J].计算机集成制造系统, 2011, 17 (2) :232-238.

[3]TANG X, MAO H, LI X.Effect of quality uncertainty of parts on performance of reprocessing system in remanufacturing environment[J].Journal of Southeast University, 2011, 27 (1) :92-95.

[4]JIN X, HU S.J, NI J, et al.Assembly strategies for remanufacturing systems with variable quality returns[J].IEEE Transactions on Automation Science and Engineering, 2013, 10 (1) :76-85.

[5]SU C, XU A.Buffer allocation for hybrid manufacturing/remanufacturing system considering quality grading[J].International Journal of Production Research, 2014, 52 (5) :1269-1284.

[6]LIU J, JIN J, SHI J.State Space Modeling for 3-D Variation Propagation in Rigid-Body Multistage Assembly Processes[J].IEEE TRANSACTIONS ON AUTOMATION SCIENCE AND ENGINEERING, 2010, 7 (2) :274-290.

上一篇:先进的出行者信息系统下一篇:机械码坯