面向对象分析

2024-08-02

面向对象分析(精选12篇)

面向对象分析 篇1

1 引言

传统的软件开发方法, 如面向过程方法和面向数据方法, 都只是针对具体问题的功能, 不允许用户需求在开发过程中有所改变。显然, 由此开发的软件系统在可靠性、可维护性和可重用性上就会存在很大的不足。为了克服传统方法的缺点, 人们在实践中创造了接近人们认识过程的面向对象的软件开发方法。面向对象方法包括面向对象分析、面向对象设计和面向对象实现。尽管面向对象方法主要用于应用系统的设计, 但面向对象分析作为一种独立的需求分析方法以及其它分析方法的补充, 目前正逐渐得到发展。

面向对象分析 (OOA:Object Oriented Analysis) 是抽取和整理用户需求并建立问题解精确模型的过程, 其分析的关键是识别出问题域内的对象, 并分析它们相互之间的关系, 最终建立问题域的简洁、精确、可理解的正确模型, 包括对象模型, 动态模型和功能模型[1], 从而为面向对象设计 (OOD) 和面向对象程序设计 (OOP) 提供指导。

近年来, 随着面向对象技术在程序设计语言、软件开发方法学、用户界面、应用集成平台、面向对象数据库、分布式系统、网络管理结构、人工智能领城以及并发工程、综合集成工程的等各领域的发展应用, 也推动了众多OOA方法的出现, 其中得到广泛认同的有Booch方法 (OOD) , Coad/Yourdon (OOA&D) , OMT, 和Jacobson (OOSE) 等方法。

现根据王晓旭划分的OOA分析方法的原则[2]和额尔敦陶克素研究的评估方法[3], 着力对影响比较大、实际中使用比较多的OOA方法进行总结、比较。

2 根据年代划分主要的OOA方法[4,5,6,7,8,9,10,11,12,13,14]

2.1 第一代:80年代

2.1.1 OOD/Booch方法

该方法是Grady Booch从1983年开始研究, 1991年后走向成熟的一种方法。Booch认为面向对象的开发是一个部分生命期的方法, 只涉及面向对象的设计和实现 (OOD和00I) , 而不涉及面向对象分析 (OOA) 。他认为应将面向对象的设计与实现和其他的需求分析方法 (如SA方法, Jackson方法等) 相结合。

Booeh方法的最大特色是将几类不同的图表有机地结合起来, 以反映系统的各个方面是如何相互联系而又相互作用的。Booch方法可分为逻辑设计和物理设计, 其中逻辑设计包含类图文件和对象图文件, 物理设计包含模块图文件和进程图文件, 用以描述软件系统结构。首先, 从逻辑设计转向物理实现的开发过程中, 有种类图表和对象图表描述逻辑设计构成中最关键的抽象及含义, 组件图表和过程图表从物理实现来描述具体的硬软件结构。

Booch方法也可划分为静态模型和动态模型。其中静态模型表示系统的构成和结构;动态模型表示系统执行的行为。动态模型包含时序图和状态转换图。

具有的符号体系:

(1) 对象图 (对象结构-静态视图) :描述实例和对象间传递消息。 (2) 类图 (类结构-静态视图) :描述类与类之间的关系。 (3) 模块图 (模块体系结构) :描述构件。 (4) 进程图 (进程体系结构) :描述进程分配处理器的情况。 (5) 状态转移图 (类结构-动态视图) :描述一个类的状态变化。 (6) 时序图 (对象结构-动态视图) :描述对象图中不同对象之间的动态交互关系。

Booch方法的实施过程如下:

(1) 在一定抽象层确定类。在问题域中, 找出关键的对象和类。 (2) 确定类和对象的含义。从外部研究类, 研究对象之间的协议。 (3) 定义类与对象的关系。 (4) 实现系统中的类与对象。 (5) 说明类的界面与实现。

2.2 第二代:80年代后期-90年代初

2.2.1 OOSA/Shlaer-Mellor方法

该方法是由Shlaer和 Mellor于1988年提出, 主要是从信息模型的经验中得来的。00sA A是以语义数据模型为基础, 因此, 与数据语义模型相似, 继承了语义数据模型详尽的关系定义和属性定义, 但对方法 (操作) 的描述不明确。类是可支持的, 但是缺乏对继承的支持, 仅仅是支持对象属性的继承, 而不支持服务 (操作) 继承, 也不明确支持软件重用。OOSA只是隐含类、继承和封装这3个基本原则。

OOSA 以语义数据模型为基础, 从对象的结构、操作和生命周期角度建立信息模型、过程模型和状态模型, 并在这3种模型的建模活动中得到一系列比较清晰的图表。

实现的步骤:

(1) 定义信息模型:由对象、属性、关系和多个对象结构所组成。 (2) 定义对象的生命周期:分析各个对象的生命周期, 并将生命周期规范化为状态、事件、事务规划和行为的集合。 (3) 定义关系动态:为对象之间的动态关系建立状态模型。 (4) 定义系统动态:该步骤产生系统级的控制模型, 对象-通讯模型用于异步控制, 对象-存取模型用于同步控制。 (5) 定义处理模型:对于每个行为, 建立一个行为-数据流图。行为-数据流图描述对于行为的一切处理, 同时也描述处理中的数据流和数据存储。 (6) 定义范围和子系统:对于一个大的系统, 将其中的主要事件从概念上区分它们的范围并将大系统划分为若干个子系统是非常必要的。

OOSA缺乏对继承的支持, 适用于分析阶段和实时系统;OOSA实际上只是一种分析方法, 因此, 主要用于开发实时系统。

2.2.2 RDD/Wirfs-Brock

该方法是Wirfs-Brock在1990年提出的。其核心在于引入了拟人化的思想, 把对象的行为处理成该对象应负的责任、把对象间的关系处理为人类相互之间的合作形式, 发生相互关系的对象在系统中分别扮演客户与服务者的角色。客户对象以合约的形式向服务者对象提出服务请求, 服务者对象有责任提供客户所要求的服务, 而合约详细地规定了所需服务的操作细节。

RDD 方法先是定义系统的类和对象, 然后在确定系统的责任后将其划分给类, 最后确定对象类之间的合作来完成类的责任。设计过程再按照类的层次、子系统和协议进一步完善。分为探索阶段和精化阶段:

(1) 探索阶段:确定类、每个类的责任以及类间的合作。 (2) 精化阶段:精化类继承层次、确定子系统、确定协议。

RDD按照类层次图、合作图、类规范、子系统规范、合同规范等设计规范来完成实现。

2.2.3 OOAD/Coad-Yourdon方法

由Peter Coad和Edward Yourdon在1991年提出的, 是一种逐步进阶的面向对象建模方法, 适用于小型系统的开发。Coad-Yourdon方法严格区分了面向对象分析和面向对象设计。该方法利用五个层次和活动定义和记录系统行为, 输入和输出。这五个层次的活动包括:发现类及对象、识别结构、定义主题、定义属性和定义服务。

面向对象分析 (主要用于完成系统分析) 。

(1) 定义主题:发现并标识对象与类:进行类及对象的发现及描述。 (2) 标识服务:目的在于定义对象的行为之间的消息链接。 (3) 标识结构:包括上述的一般/特殊结构和局/部分结构。 (4) 标识属性:对于每个对象, 都需要找出在目标系统中对象所需要的属性, 而后将属性安排到适当的位置, 找出实例链接, 最后进行检查。

面向对象设计 (主要负责系统设计) 。

(1) 设计数据管理子系统:核心是数据存储, 常用的存储技术有文件管理、关系数据库管理和面向对象数据库管理。 (2) 设计任务管理子系统:主要是对系统各种任务进行选择和调整的过程。 (3) 构建问题域子系统:对分析的问题域模型进行需求调整、类的重用、增加一般化类建立协议等。 (4) 设计人机交互子系统:包括用户界面风格, 命令结构层次关系等内容的设计。

这种方法, 概念简单, 易于掌握。但是对每个对象的功能和行为的描述不很全面, 对象模型的语义表达能力不是太强。

2.2.4 OMT/Rumbaugh方法

OMT (Object Modeling Technique) 方法提出于1987年, 1991年Jim Rumbaugh正式把OMT应用于面向对象的分析和设计, 这种方法是在实体关系模型上扩展类、继承和行为而得到的。OMT方法的中心思想就在于从三个不同的角度和观点对所要考虑的系统进行建模, 即建立对象模型、动态模型和功能模型。

(1) 对象模型:描述系统的静态结构, 该模型主要关心系统中对象的结构、属性和操作。

(2) 动态模型:描述系统的控制结构, 表示了瞬时的行为化的系统控制性质, 它从对象的时间和状态角度出发, 表现对象的相互行为。

(3) 功能模型:描述了系统的所有功能操作。在该模型中说明对象模型操作的含义、动态模型中动作的意义及对象模型中约束的意义。

OMT方法全面覆盖了软件开发的整个过程, 包括分析、设计和实现几个步骤:

(1) 分析:基于问题和用户需求的描述, 建立现实世界的模型。

分析阶段的产生:问题描述、对象模型=对象图+数据词典、动态模型=状态图+全局事件流图、功能模型=数据流图+约束。

(2) 系统设计:结合问题域的知识和目标系统的体系结构将目标系统分解为子系统。

(3) 对象设计:基于分析模型和求解域中的体系结构等添加的实现细节, 完成系统设计。主要产物包括:细化的对象模型、细化的动态模型、细化的功能模型。

(4) 实现:将设计转换为特定的编程语言或硬件, 同时保持可追踪性、灵活性和可扩展性。

OMT方法通过构造三个模型较全面地描述了系统的需求, 但在功能模型中使用数据流图与其它两个模型有些脱节。

2.2.5 Bailin

Bailin认为从面向过程的分析到面向对象的设计开发需要对数据流图进行重大修改, 因此, 提出了一个面向对象的需求定义方法:使用了一种专门的语言将实体数据流图 (EDFD) 和实体关系图 (ERD) 组合到一起。该方法没有明显的面向对象的术语 (如, 类、对象、属相等) , 但它遵循OO的基本原则:实体关系图中既包含了对象的类和继承的概念, 也包含了OO中封装的既念。

实现过程:

(1) 定义实体:画出数据流程图, 给出出现在处理过程中的实体的名称。

(2) 区别激活的与惰态的实体:区别对系统需求描述重要的或非重要的实体, 构造一个实体关系图 (ERD) 。

(3) 建立激活实体间的数据流:构造一个最高一级的实体数据流图 (EDFD) 。每个激活的实体作为一个处理节点, 每个惰态实体为一个数据流或数据存储。

(4) 分解实体/功能:在各个分解步骤中, 应考虑各个新的子实体是否被包含在新的子功能中。

(5) 修改实体状态:确定新的实体的状态, 并重新组织EDFD。

2.3 第三代:90年代中期

2.3.1 VMT (Visual Modeling Technique)

该方法结合了OMT、OOSE、RDD等方法的优点, 并且结合了可视化编程和原型技术。VMT选择OMT作为整个方法的框架, 并且采用OMT的表示方法, 但抛弃了OMT中的采用数据流图描述的功能模型, 代之以RDD方法中的CRC (Class Responsibility Collaboration) 卡片, 用它来描述对象的操作和对象间的关系。VMT 还引入了OOSE中的使用事例概念, 用来描述用户对系统的需求, 从而获得更准确的用户需求模型。

开发过程:分为分析、设计和实现3个阶段。

(1) 分析阶段:主要任务是建立分析模型, 即, 将用户需求结构化并形式化, 这个阶段的产品描述未来的系统应该做什么, 而不描述怎么去做。

(2) 设计阶段:目标是制定解决问题的策略, 为实现解决方案打下整体基础, 并寻求把设计要素转换成解决方案的切实可行的方法, 该阶段包括系统设计、对象设计和永久性对象设计。

(3) 实现阶段:用某一种环境来实现系统, 完成从对象设计模型到解决方案的影射过程。

IBM公司在提出VMT 的同时, 推出了支持VMT的可视化编程工具VisualAge , 用它可以很容易地实现设计阶段建立的模型。

3 7种面向对象分析方法的比较

3.1 根据抽象原则

每种OOA方法都使用抽象原则, 以便从系统需求获取重要部分而将次要部分忽略掉。然而, 这种原则都有不同的侧重点:

数据抽象侧重于数据方面;

过程抽象侧重于过程方面;

事件抽象侧重于系统的事件方面。

1种OOA方法所采用的抽象原则可以有1个, 2个或3个侧重点。表1列出了7种方法中抽象原则的侧重点。

3.2 比较7种方法的覆盖边界

目前, OOA和OOD方法的边界划分上尚存在着争议。如, 有人认为面向对象软件开发过程可以分为面向对象分析、面向对象设计和面向对象程序设计三个阶段;有人认为分析和设计可以交叉进行不必做严格区分;还有人沿用传统方法进行分析和设计, 用面向对象程序设计语言来实现系统。

现就上述方法的实现过程, 将其边界问题进行尝试性的划分。

4 结语

除上述方法外, 还有Beard、Firesmith、Martin-Odell等面向对象分析的方法, 但OMT方法、Coad-Yourdon方法和Booch方法被列为OO软件开发的三个重要流派。对OOA方法的分类也遵循很多原则, 如, 费翔林[15]就按照以非形式化规格说明为基础、以结构化方法为基础和以语义数据模型为基础综述了OOA方法。

总之, 在前人的基础上对面向对象分析方法进行了简单的分类、比较研究, 以期为选择面向对象方法以及创建新OOA方法提供一些依据。

摘要:将7种主要的OOA方法按照提出的年代进行划分, 并在简单介绍的基础上, 依据抽象原则和边界的划分 (面向对象分析和面向对象设计的划分) , 并对7种方法进行了比较研究, 以期为选择面向对象方法以及创建新的OOA方法提供一些依据。

关键词:面向对象分析,方法,比较

面向对象分析 篇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签名,“淘热门 http:// , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http:// , 精选淘宝热门商品”

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签名,“淘热门 http:// , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http:// , 精选淘宝热门商品”

五.试用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签名,“淘热门 http:// , 精选淘宝热门商品”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

对象类图如下:

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

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

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

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

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

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

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

中图分类号: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

面向对象分析与设计综述 篇4

OOA (Object-Oriented Analysis, 面向对象分析方法) 和OOD (Object-Oriented Design, 面向对象设计) 是面向对象软件开发生命周期中两个重要的阶段, OOA活动涉及的是语义对象, 而OOD活动涉及的是语义对象, 接口对象, 应用对象和实用/库对象, 这种区分OOA和OOD对象的方法在大多数情况下是正确的。但是, 在分析阶段, 一个好的规格说明也应涉及到用户接口, 控制机制等各方面的内容, 因此, 在OOA阶段, 不仅该得到语义对象, 也应该得到接口对象和应用对象。这些对象通过OOA中的对象识别和精化过程得到。在OOA阶段的主要任务是识别和精化对象, OOD阶段的主要任务是构造类和建立系统结构。

2 面向对象分析中的对象识别

在使用计算机解决问题时, 对象是作为计算机模拟真实世界的一个抽象, 一个对象就是一个物理实体或逻辑实体, 它反映了系统为之保存信息和 (或) 与它交互的能力。对象不仅能表示具体的实体, 如桌子、椅子;也能表示抽象的事件, 如演出、会议。那么, 在面向对象分析中, 如何尽可能精确的识别对象呢?

为了识别出系统所需要的对象, 在系统分析的过程中应采用“先松后紧”的原则。系统分析员应首先找出各种可能有用的候选对象, 即标识潜在对象。识别对象起步于对用户需求的正文描述进行语法分析。找出所有的名词或名词短语, 合并同义名词。

对象在用户需求的正文描述中以多种形式呈现, 系统分析员应该运用抽象原则, 首先要舍弃与系统责任无关的事物, 保留与系统责任有关的事物。其次, 还要舍弃与系统责任有关的事物中与系统责任无关的特征。判断事物及其特征是否与系统责任相关的准则是:该事物是否为系统提供了一些有用的信息或需要系统为其保存和管理某些信息;该事物是否向系统提供了某些服务或需要系统描述它的某些行为。

在找到许多可能有用的候选对象之后, 接下来的工作是对它们进行逐个审查, 分析它们是否是OOA模型所真正需要的, 从而筛选掉一些对象。筛选对象时应遵循的规则有:

(1) 删除无关类、冗余类和与之对应的对象。

(2) 对象的属性应是目标系统所关心的, 或者是目标系统正常运转所必需的, 对象利用其操作能够为目标系统中的其他对象提供服务。

(3) 如果某个对象仅有一个属性, 则最好将此对象表示为其他对象的属性。

(4) 为对象定义的有关属性应适合于对象的所有实例。如果对象的一个实例不具备某属性, 那往往意味着问题域中存在尚未发现的类继承关系。因此, 应该利用继承关系将原有对象和该特殊实例区分为两类对象。

(5) 有些对象还可以看成是某个对象的操作, 应根据它是适合作为对象还是适合作为对象的操作, 从而决定应不应该删除这个对象。

(6) 去掉仅与系统实现有关的候选类和对象, 对象应是软件需求模型的必要成分, 与设计和实现方法无关。

3 面向对象分析与设计的发展趋势

3.1 面向对象分析与设计的方法将被越来越多的人接受

迄今为止, “面向对象”本身还没有一个统一的让所有人都能接受的概念。然而, 面向对象中的一些最基本的概念已经和正在被人们所接受, 比如类、对象、继承、封装等;一些最有效的表示方法也正在被人们所共同采用, 比如图形表示、基本输入要求和输出结果等。并且这种趋势在越是较晚出现的方法和工具中越是明显, 面向对象的方法学研究在计算机领域正在朝着普及化的方向发展。

3.2 新的分析与设计的方法和工具将不断涌现

随着SDL92和Object Time的问世, 新的分析方法和工具将朝着动态化、标准化、可执行性、可测试性的方向发展。同时, 新的面向对象的设计方法也以越来越成熟的面孔出现。新方法和工具的相继出现, 将会大大缩短软件开发周期, 节省软件开发成本。

3.3 集成面向对象分析和设计将成为趋势

由于设计过程本身也涵盖有部分的分析, 分析过程中也有设计的成分。基于这种关系, 集成了分析和设计两方面的方法和工具的研究也将成为面向对象分析与设计领域的一个趋势。它的主要特点就是有机地集成比较著名的分析方法和设计方法来共同完成从分析到设计甚至到实现的全部任务。集成分析与设计方法最重要的环节是要能够把分析方法的输出结果变换成为一个设计方法的工具的输人, 即需要一个“翻译程序”。然而, 它与普通的翻译程序是不同的, 比普通的“翻译程序”更智能化。集成分析和设计方法虽然还处于尝试阶段, 但这个方向对于软件开发界是很有吸引力的。

4 结语

目前, 面向对象的分析与设计方法正处于发展阶段, 实际上都还没有真正解决从应用领域知识到需求模型的演变问题。要解决这个问题, 毋庸置疑, 还有很长的路要走。因为这不仅是OOA与OOD的任务, 还包括分析设计人员的实践和经验的积累, 同时还依赖于人工智能等相关学科的发展水平。随着使用面向对象程序设计方法的人越来越多, 同时参与研究面向对象分析与设计的方法学的队伍越来越壮大, OOAD的前景在软件的世界里将大放异彩。

参考文献

[1]汪成为等.面向对象分析、设计及应用[M].国防工业出版社, 1992.

[2]文登敏, 张丽梅.面向对象理论与实践[M].四川:西南交通大学出版社[M].2005.

[3]周之英.现代软件工程 (第二册) [M].北京:科学出版社, 2003.

[4]况和平, 黄玲芳.浅析面向对象分析中对象的识别[J].南昌高专学报, 2001, 2 (16) .

[5]费翔林.面向对象分析方法综述[J].小型微型计算机系统, 1995, 16 (9) .

面向对象分析 篇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

关键词:面向对象程序设计 结构化程序设计

一、面向对象设计方法

软件设计有两种主流设计方法:以结构化程序设计为基础的结构化软件设计和由面向对象设计方法导出的面向对象的软件设计, 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

面向对象分析 篇7

关键词:面向对象数据库技术,对象/关系映射技术,网络技术

通讯手段及通讯工具在实际应用过程中, 人们在互动交流过程中会受到范围及方式等方面的限制。但是伴随着互联网技术的发展及完善, 人们在互动交流过程中所具有的局限也被突破, 人们互动交流能够逐渐无线及普适, 网络技术的完善, 在其中起到关键作用, 能够有效推动互动交流的发展。

1 网络技术发展初期及其对互动交流的影响

1.1 网络技术的表现形式

网络技术在刚开始发展过程中, 最具有代表性的技术主要有两个, 分别是报文分组交换技术与WEB技术。报文分组交换技术主要表示的是将数据分解为到数据包内, 利用通讯阶段对于数据信息进行传输, 还能够有效保证数据信息的完整性, 其中主要特征就是在数据信息传输过程中, 容易出现数据包丢失的情况, 这就需要对于数据包进行重新传输, 能够有效降低节点在数据信息传输过程中的重要性, 网络系统内不同节点能够有效连接。WEB技术在实际应用中能够满足用具对于信息交流及搜索, 利用互联网技术提供真毒性服务, WEB技术产生最为显著标志就是图形浏览器的出现。

1.2 对互动交流的影响的表现

网络技术初期发展过程中, 网络互动交流形式主要特点就是延时通信的出现。网络技术在刚开始推出的之后, 主要目的就是满足军事在发展中的实际需求, 伴随着计算机技术不断完善, 已经逐渐成为人们实际生活中主要互动交流的方式。在这个时间段内, 网络互动交流最为主要的核心就是文字互动交流, 双方在实际共同交流过程中, 主要通过文本内容的方式进行沟通交流, 在这个过程中所出现的图形也是十分简单, 交流过程中并不需要受到时间及空间上面的限制, 能够根据自身实际情况传输电子邮件, 但是这个时间段内互动交流程度较低, 造成信息在沟通传输过程中容易出现延时性。

2 从面向数据库技术和对象/关系映射技术角度进行比较

2.1 面相数据库技术

面向对象数据库技术是数据库技术与面向对象技术发展到一定水平之下的成果, 在对于复杂对象进行描述的时候, 主要应用的方式是使用类的封装方式, 进而对于复杂对象的行为进行模拟。面向数据库技术在实际应有中最为显著特点就是代码及数据并不是独立存在的, 主要是通过函数关系对于数据进行计算。

2.2 对象/关系映射技术

面向对象软件在实际开发过程中, 根据有关软件开发方法, 进而形成了对象/关系映射技术。对象/关系映射技术是以关系模型数据库结构作为基础, 映射对象模型对于有关对象进行描述, 人们在实际操作过程中, 能够具体将所接触到的语句进行描述, 所应用的对象及操作方式十分简单便捷, 如图1所示, 为对象/关系映射技术结构示意图。

2.3 面向数据库技术与对象/关系映射技术的比较

面向数据库技术在实际应用中, 所应用的数据库类型是新类型, 并不是传统关系型数据库, 这种数据库类型能够有效解决传统数据库所具有的阻抗失谐问题进行解决。对象/关系映射技术在实际应用中, 能够有效将关系性数据库与对象数据进行连接, 承担着一个相互转化数据的责任, 但是在技术仅仅能够将数据库内的对象划分为表格, 并没有有效解决传统数据库类型所存在的阻抗失谐问题。

3 面向数据库技术和对象/关系映射技术的优点及缺点

3.1 面向数据库技术

面向数据库技术在实际应用中, 能够从本质上面解决传统数据库所存在的阻抗失谐问题, 维护性能显著提高。要是从维护角度进行分析, 面向数据库技术最为显著性能就是耦合性能十分突出, 能够在不同网络平台上面应用, 所应用的查询方式较为简单。虽然面向数据库技术在实际应用中拥有十分显著优势, 但是还存在一定缺点, 首先就是面向数据库技术无法兼容SQL标准, 无法对于现在关系数据库进行转换, 主要现在关系数据库所应用的接口都是SQL标准。

3.2 对象/关系映射技术

对象/关系映射技术在实际应用应用中拥有良好的数据库转换性能, 在对于数据操作过程中, 能够根据面向对象的形式, 提高数据库性能。在数据操作方面, 能够直接对于业务对象进行处理, 并不需要对于储存方式及语句进行分析, 同时在宽展及维护方面也具有重要作用。但是对象/关系映射技术在实际应用中却存在一定缺点, 最为主要的就是对象/关系映射技术并没有解决传统关系数据库所存在的阻抗失谐问题, 其次就是在数据缓存方面存在一定缺陷。

4 结论

简而言之, 在对于对象/关系映射技术与面向对象数据库技术比较分析之后, 能够发现对象/关系映射技术与面向对象数据库技术在实际应用中所存在的优势及缺点, 应用效果也存在一定差异, 能够有效推动对象/关系映射技术及面向对象数据库技术的共同发展, 对象/关系映射技术与面向对象数据库技术在数据库内共同应用, 对于数据库系统发展具有重要意义。

参考文献

[1]赖朝新, 瞿晓静.面向对象数据库技术的两种发展途径[J].现代情报, 2014 (11) .

[2]汪琛, 胡浩民.面向对象数据库技术的发展与前景[J].福建电脑, 2015 (05) .

[3]王意洁.面向对象的数据库技术[M].电子工业出版社, 2013 (03) .

[4]何治成.面向对象的电力系统异构应用信息共享研究[D].重庆:重庆大学, 2015 (06) .

面向对象数据库系统的特点分析 篇8

一、面向对象数据模型

面向对象数据模型 (简称OO模型) 是用面向对象的观点来描述现实世界实体的逻辑组织、对象间限制、联系等关系的模型。一系列面向对象核心概念构成了面向对象数据模型的基础。面向对象数据模型的核心概念主要有以下几种。

1. 对象和对象标识。

现实世界中的任一实体都可被统一地模型化为一个对象, 每个对象都有一个唯一的标识, 称为对象标识 (OID) 。OID独立于值, 且在系统全局中是唯一的。对象通常与实际的表单始终保持不变。一个对象的部分属性、方法可能会发生变化, 但对象的标准是不会改变的。而OID是区分两个不同的对象的标准。常用OID有以下几种。

值标识:用值来表示标识, 如, 关系数据库忠实于组的码值区分元组;名标识:用一个名字来标识, 如在一个作用域内程序变量一般使用的就是名标识;内标识:是建立在数据模型或程序设计的标识, 如面向对象数据库系统使用的就是内标识。

2. 封装。

每一个对象是其状态与行为的封装, 其中状态是该对象一系列属性值的集合。行为是在对象状态上操作的集合。封装是面向对象模型的一个关键概念, 封装是实现对象的外部界面与内部之间实行隔离的抽象, 外部与对象的通信是通过“消息”来实现的。

封装将对象的实现与对象的应用相互隔离, 允许操作对实现算法和数据结构进行修改而不影响应用接口, 且不必修改使用接口的属性, 这有利于提高数据的独立性。封装还隐藏了数据结构与程序代码等细节, 增强了应用程序的可读性。

3. 类。

共享同样的属性和方法集的所有对象构成了一个对象类 (CLASS) , 一个对象是某一类的一个实例。类的概念在面向对象数据库中是一个基本概念, 我们把与属性、方法相似的对象集合称为类, 而把每一个对象称为所属类的一个实例。

类的概念类似于关系模式, 类的属性类似于关系模式中的属性, 类的一个实例对象类似于关系中的一个元组。类本身也可看作是一个对象, 称为类对象。

4. 类层次。

在一个面向对象数据库模式中, 可以定义一个类 (C1) 的子类 (C2) , 类C1称为类C2的超类, 子类还可以再定义子类 (C3) 。这样, 面向对象数据库模式的一组类构成一个有限的层次结构, 称为类层次。每个类的最顶部通常被称为基类。对一个类来说, 它可以有多个超类, 也可以继承类层次中其直接或间接超类的属性和方法。

5. 消息。

由于对象是封装的, 对象与外部的通信一般是通过显式的消息来传递的。即消息从外部传送给对象, 存取和调用对象中的属性和方法。在内部执行所要求的操作, 操作的结果仍以消息的形式返回。

6. 继承。

在面向对象模型中常用的有2种继承:单继承和多重继承。若一个子类只能继承一个超类的特性, 这种继承称为单继承;若一个子类能继承多个超类的特性, 这种继承称为多重继承。例如, “旅行用小汽车”既是小汽车又是旅行车, 它继承了小汽车和旅行车2个超类的所有属性、方法和消息, 因此它属于多重继承。

继承性是进行数据建模的一个有力的工具, 它同时提供了对现实世界简明而精确的描述和对信息的重用机制。子类可以继承超类的特性, 也可以避免许多重复定义, 还可以定义自己特殊的属性、方法和消息。如果在定义自己特殊的属性、方法和消息时与继承下来的超类的属性、方法和消息发生冲突, 通常由系统来解决, 在不同的系统中使用不同的冲突解决方法, 因此便产生了不同的继承语义。例如对于子类与超类之间的同名冲突, 一般是以子类的定义为准, 即子类的定义取代或由超类继承而来的定义;对于子类的多个直接超类之间的同名冲突, 有的系统是在子类中规定超类的优先次序, 首先继承优先级最高的超类的定义;有的系统则指定继承其中某一超类的定义。

二、持久性

不同对象标识的持久性程度是不同的。若标识能在程序或查询的执行期间保持不变, 则称该标识具有程序内持久性;若标识在从一个程序的执行到另一个程序的执行期间保持不变, 则称该标识具有程序间接持久性。若标识不仅在程序执行过程中而且在对数据的重组重构过程中一直保持不变, 则称该标识具有永久持久性。如面向对象数据库中的对象标识就具有永久持久性。

对象标识具有永久持久性的含义是:一个对象一经产生, 系统就给它赋予一个在全系统中唯一的对象标识符, 直到它被删除。对象标识是由系统统一分配的, 用户不能对对象标识符进行修改, 且对象标识是稳定的, 它不会因为对象中某个值的改变而改变。

三、面向对象数据库

面向对象数据库模式是类的集合。面向对象的数据模型提供了一种类层次结构。在面向对象数据库模式中, 一组类可以形成一个类层次, 一个面向对象数据库可有多个类层次。在一个类层次中, 一个类继承其所有超类的全部属性、方法和消息。

面向对象的数据库系统在逻辑上和物理上从面向记录上升为面向对象、面向可具有复杂结构的一个逻辑整体。允许使用自然的方法, 并结合数据抽象机制在结构和行为上对复杂对象建立模型, 从而大幅地提高了管理效率, 降低了用户使用的复杂性。

四、面向对象数据库的特性

1. 滞后联编。

在面向对象模型中, 当子类定义方法与继承下来的超类的方法产生同名冲突时, 即子类只继承了超类中操作的名称, 子类自己实现操作算法, 并有自己的数据结构和程序代码。这样, 同一个操作名就可与不同的实现方法和参数相联系。一般地, 在面向对象模型中对于同一操作, 可以按照类的不同重新定义操作来实现, 这称之为操作的重载。例如, 定义一个Tdate类, 同时为了满足不同的设置需要, 可以设定3个Set函数 () 。程序代码如下。

为了正确执行my Date的一个set方法, 面向对象数据库系统不能在编译时就把操作set联编到程序上, 而必须根据运行时的实际需求, 选择相应的对象类型的相应程序进行联编, 这个推迟的转换称为滞后联编。

2. 对象的嵌套。

基于面向对象的数据库应用分析 篇9

1 面向对象数据库概述

面向对象是一种对现实世界理解和抽象的方法, 应用于数据库则表示程序设计方法, 借鉴人类思维方式, 把客观世界中的实体模型化作为认识对象, 包含对象、方法、类、消息等基本概念。面向对象方法可以把实体对象抽象成对象类, 变为抽象的数据类型, 允许用户自定义, 因而具有抽象性;操作方法与数据可以一起存放于某一特定对象中, 只能通过该对象实现数据的操作, 具有封装性;面向对象方法中, 不同对象接受同一信息, 可能具有不同含义, 因而具有多态性。面向对象技术与现实世界实体对象具有一一对应关系, 相对传统数据库具有内容海量性及结构复杂型的特点, 是新型数据库得以建立的基础。

面向对象数据库 (OODBS) 是面向对象系统与数据库功能的整合, 既具备数据库系统具有的事物管理、并发控制、恢复、查询、版本管理、完整性、安全性与持久性的能力, 又支持完整的面向对象概念和控制机制。

2 面向对象数据库的优势

2.1 易于使用

关系数据库虽然采用表、行、列的形式构建了简单且容易掌握的用户界面, 但是很少人使用SQL语句编程。关系数据库提供商提供了大量的工具将SQL与开发者屏蔽开, 在后台自动产生相应的SQL语句。目前关系数据库在易用性与可得性方面较面向对象数据库有一定的优势。表单形式的简单数据的容易使用必须建立在能够良好的映射到程序的数据结构中, 如果数据结构复杂, 则简单的表单形式数据无法与程序相适应。因而需要一部分熟悉数据库DBMS运作并且精通SQL语言的数据库专业设计人员, 将数据库表单结构与应用程序数据结构进行相互转化, 在一定程度上增加了数据库的应用难度。面向对象的程序设计人员使用OODB后, 能更加简单、直接使用面向对象数据库, 省去了中间的转换环节, 因而面向对象数据库具有更大的易用性。

2.2 易于开发

对一个包含复杂的数据类型及复杂关系的面向对象应用, 工作人员需要编写额外的代码, 将对象结构映射到关系数据库的存储模型, 才能实现关系数据库正常工作, 导致产品开发的难度增加, 程序运行时的性能得不到保障。面向对象数据库则不需要这些额外的编码工作, 对象数据库与面向对象的编程语言结合良好, 能够实现应用程序与存储程序之间的直接对应, 对象只需在程序中定义一次, 不同的OODB产品用特定的方式告知OODBMS, 程序与数据库以相同的方式处理, 保证了开发过程的高效性。

3 面向对象数据库的应用

3.1 对CIS类软件的影响

在地理信息系统类的软件中, 矢量图形数据的存储与维护工作重要且繁杂, 传统以文件或关系型数据库为底层存储工具的形式保存数据, 无论哪种存储形式, 都必须将需要存储的数据格式转化为与内存中要使用的对象数据相适应的格式。内存与存储介质之间数据交换管理工作本身繁重庞杂, 对于大型应用来说管理更加艰巨, 面向对象数据库可以有效解决这方面的难题。格式转换、内存与存储介质之间数据交换可以由ODBMS处理, 大幅度缩减了程序的开发量。

3.2 软件开发中的版本管理

对于大型的软件系统, 必定由很多个独立但相互关联的组件群组成, 软件开发需要对这些组件进行管理, 而传统的SDE (Software Develop Environment) 建立在文件系统上面, 现有的文件管理工具难以完成这样的工作。面向对象数据库的应用能有效应对这一问题, 借助面向对象程序设计语言, 软件的版本管理工作转化为软件中应用的对象类的版本和各种COM的基于面向对象语言的组件的管理。由于组件面向对象的特性, 使得面向对象数据库是软件开发中版本管理的最佳工具。

3.3 在网络管理系统中的应用

网元设备的信息适宜应用OODB进行管理, 利用OODB的事件触发功能设计不同网元设备的行为, 实现网络管理系统的自主管理。在实际应用中, 可以实现网络负载的预警功能。根据不同的设备选择不同的参数、参数个数及不同算法, 设备运行过程中能够通过参数的变化, 根据预设的算法诊断出设备工作情况。如果完全依赖程序来进行管理, 不仅开发工作量大, 升级与维护也存在一定的困难。应用面向对象数据库, 可以在设计数据库存储的类的阶段, 为各个网元设定不同的预警算法实现代码, 并存储于数据库, 为不同网元设定预警触发条件, 当设备运行参数变化时, 预警系统自动调用, 实现对设备运行状态的诊断。程序只负责改变数据库中的参数, 由系统自动管理是否进行预警, 利于日常的维护。

4 面向对象数据库的发展趋势与应用前景

面向对象数据库的应用广泛, 发展速度较快, 有可能成为关系数据库系统之后的新一代数据管理技术, 但并未完全取代关系数据库系统, 面向对象数据库发展趋势主要包括:OODBS的标准化与形式化;进一步加强OODBS的性能;发展较强的建模能力;视图、演绎能力及语义建模;设计与编程提供可扩充性, 以接纳新型数据库的异构数据库管理系统;应用开发工具的研制推广;加强面对对象数据库与关系数据库的高效结合。

面向对象数据库有效弥补了传统数据库系统的诸多不足, 满足网络技术、人工智能、软件工程技术、多媒体技术、空间信息科学、信息管理及数据挖掘技术等领域的发展需求;在经贸与工业设计领域, OODBS具有超强的处理事务能力及并发控制能力, 发挥着不可取代的作用。OODBS由于具有处理海量信息和复杂数据的优势, 在众多领域有广泛应用, 但由于发展时间较关系数据库系统晚, 有一定的局限性, 但在不断发展完善中, 将会成为DBS的主要技术。

5 结语

本文通过阐释面向对象数据库的相关概念, 指出OODBS具有的优势, 具体分析了OODBS在CIS类软件中的应用、软件开发中的版本管理以及在网络管理系统中的应用, 并对OODBS的发展趋势与应用前景作简单介绍。

摘要:首先对面向对象数据库加以概述, 进而分析面向对象数据库的优点, 着重论述基于面向对象的数据库应用, 最后简述面向对象数据库的发展趋势与应用前景。

关键词:面向对象,关系数据库,CIS类软件,软件开发,网络管理

参考文献

[1]来羽, 张华杰.面向对象数据库系统的特点分析[J].河南科技, 2010 (17) .

[2]徐颖.论面向对象的数据库技术分析[J].科技视界, 2015 (9) .

基于用例模型的面向对象需求分析 篇10

软件需求分析工作主要目的就是分析软件用户的需求是什么,它是软件开发中的重要一步。只有通过需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明书,从而奠定软件开发的基础。研究表明,在需求阶段检查和修复一个错误所需的费用只有编码阶段的l/5到l/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。这就意味着在需求阶段和维护阶段修复一个错误的比值可高达1:200。由此可以看出,需求分析在整个软件生命周期是非常重要的。做好需求的分析和管理,既可以减少软件开发中的错误,还可以减少修复错误的费用,从而大大降低软件开发成本,缩短软件开发时间。

二、需求分析存在的问题

软件开发常常是一个专业领域的人在为另一个专业领域的人服务,但开发出来的软件往往与用户的需求有偏差,用户往往在看到最终交付的产品时才真正明确自己的需求。软件开发人员经常会遇到这样的问题,客户对自己系统的需求从一开始就是含糊的并且总以为随着时间的推移就能对细节进行澄清改变和补充也就是说客户在软件开发的过程中可能经常改变系统需求,软件开发过程中需求更改可能是最常见的错误但也是修改花费最昂贵的错误。

三、UML的面向对象建模技术

统一建模语言UML是一种通用的可视化的建模语言,用于对软件进行描述、可视化处理,构造和建立软件系统的文挡。适用于各种软件开发、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸收了当今优秀成果的标准的建模方法。

面向对象的建模,就是把系统看作是相互协作的对象,这些对象是结构和行为的封装,都属于某个类,那些类具有某种层次化的结构。系统的所有功能通过对象之间相互发送消息来获得。面向对象的建模可以视为是一个包含以下元索的概念框架:抽象、封装、模块化、层次、分类、并行、稳定、可重用和可扩展。面向对象的建模思想的出现是面向过程和严格数据驱动的软件开发方法的渐进演变结果。

在需求分析阶段,UML可以用用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,需要识别这些类以及它们相互间的关系,并用UML类图来描述。为实现用例,类之间需要协作,这可以用UML动态模型来描述。

四、用例模型技术

1、基本思想

针对需开发的软件系统,首先明确系统边界,然后找出系统边界以外的参与者,再按用例模型从这些参与者如何与系统进行交互的角度,描述参与者如何使用系统及系统向参与者提供什么功能。

2、系统边界、参与者

系统边界是指一个系统所包含的所有系统成分与系统以外各种事物的分界线,而参与者是指在系统之外,通过系统边界与系统进行交互的任何事物在面向对象分析(OOA)中,认识系统边界与参与者是为了确定系统范围,弄清系统应该在它的应用领域中发挥什么作用,从而建立一个满足用户需求的OOA模型。

参与者不仅仅是指与系统交互的各类人员,还包括与系统进行交互的任何其他事物。

3、如何确定参与者

从用户的角度考虑这个系统建立后将发挥的作用,主要需考虑系统外部将有哪些事物与它进行交互。凡是与系统进行数据信息或控制信息交换的外部事物都应看作参与者。常见的参与者有:

(1)首先从接受系统服务的人员中发现哪些人员是系统的直接使用者,这些人员是参与者;

(2)从为系统服务的各类人员中发现参与者。那些为系统的正常运行而工作,并且直接与系统交互的人员就是参与者;

(3)与系统相连,向系统提供外界信息或者在系统控制下运行的设备也可以看作参与者。这些设备在与系统交互、要求系统提供某些功能方面,与人员没有本质的区别。但要注意区别设备的两种作用模式一种是对内与计算机系统相连,对外不必经过与人员的交互而直接发挥某种作用的设备,符合图l(a)所示的模式,这类设备应该被看作参与者;另一种情况如图l(b)所示的模式。设备对内与系统相连,对外与人员交互,人员以外是现实世界的其他事物。在这种模式下,有时可以把系统边界定在设备与系统之间,把设备看作参与者;有时也可以把系统边界定在设备与人员之间,把设备看作系统的设施,而把人员看作参与者。

(4)与当前系统相连的外系统是系统边界之外的另一种参与者。

4、用例的确定与描述

用例是外部可见的一个系统功能单元,这些功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。从用户角度来看,上述情况很可能是异常情况;从系统角度来看,它们是必须被描述和处理的附加情况。

例如:在图书管理系统中,Borrower(借阅者)需要通过系统Borrow Book(借书)、Return Book(还书)、Reserve Book(预定书刊)、Cancel Reservation(取消预),而借阅者的这些操作都需要通过Librarian(图书管理员)来实现,图书管理员使用系统时首先要Login(登录),在使用系统的过程中要Maintain Book Info(维护借阅者信息),Maintain Book Info(维护书刊信息)及Maintain Subst B Info(维护物理书刊信息)。所以图书管理系统需要以下8个用例:借书、还书、预定、书刊、取消预定、登录、维护借阅者信息、维护书刊信息、维护物理书刊信息。例如图书管理系统中预定书刊用例的描述如下:

5、用例模型

用例模型描述的是外部参与者所理解的系统功能。首先,它描述了待开发系统的功能需求;其次,它将系统看作黑盒,从外部参与者的角度来理解系统;第三,它驱动了需求分析之后各阶段的开发工作,保证了系统所有功能的实现。在UML中,一个用例模型由若干个用例图描述,如下图3:

用例模型是获取需求、规划和控制项目迭代过程的基本工具,是对一个参与者使用系统的一项功能时所进行的交互过程的一个文字描述序列。通过分析,把每个参与者对系统的每一项功能的使用情况都用用例模型进行了描述,全部用例模型将构成对系统外部可见行为的穷举式描述。这样,由全部用例模型描述构成了整个软件系统的需求分析。

用例模型帮助客户、用户和开发人员在如何使用系统方面达成共识。大多数系统具有多种类型的用户。每类用户表示为一个参与者(Actor)。参与者在与用例进行交互时使用系统。系统所有的参与者和所有用例组成用例模型。一张用例图描述部分用例模型,显示带有关联关系(表示出一对参与者和用例之间交互)的用例和参与者的集合(如图4所示)。

参与者“银行储户”使用白动取款机系统从帐户中取款,或存款到帐户中,或在不同的帐户间转帐。这可以由图3中的三个用例表示,这三个用例与参与者之间的关联表示了它们之间的交互。

五、结束语

UML改变了传统的软件设计思想,降低了系统设计的盲目性,也更有利于系统的扩展与测试。用例模型的提出对于软件开发具有重要的意义。通过用例模型的建立和对用例的分析,软件开发者可以准确地了解用户需求和系统功能,它是用户和软件开发者一起剖析系统需求的关键一步,推动了需求分析后各阶段的开发工作。

摘要:面向对象方法正在逐渐取代传统的方法,日益成为当今软件工程领域的主流方法。在系统需求设计方法中用例模型已成为获取系统需求的主要技术,通过用例模型的建立和对用例的分析软件开发者可以准确地了解用户需求和系统功能。它是用户和软件开发者一起剖析系统需求的关键一步,可以推动需求分析后各阶段的开发工作。

关键词:面向对象,用例,建模,需求分析

参考文献

[1]冀振燕著.系统分析设计与应用案例[M].人民邮电出版社.

[2]郑跃斌,韩文秀.用户需求分析的一种新方法-面向对象集成分析法[J].计算机工程与应用.2000.05.

[3]何克清,何非,应时.角色Use Case:UML的一个更加完全的分析方法[J].计算机研究与发展.2001.09.

面向对象分析 篇11

关键词:面向对象;软件开发;数据库;程序设计

中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2010) 09-0000-01

Database Application Based on Object-oriented Technology

Zhang Lin

(Ocean University of China,Shandong266033,China)

Abstract:Based on the object-oriented technology,aiming at the characteristics of relational database application methods are discussed, and some books management system as example analysis.The paper expounds the programmer can make better use of object-oriented technology,in a more natural way of dealing with the underlying database data.

Keywords:Object-oriented;Software development;Database;

Programming

一、面向对象的技术特点

面向对象是一种从组织结构上模拟客观世界的方法,它从客观世界的基本成分——对象出发,通过抽象来实现对客观世界的模拟,并通过抽象提取出对象之间的相互联系和相互作用。面向对象的思想首先出现在程序设计语言中,随后,逐渐渗透到许多复杂工程领域。

面向对象概念的核心是对象,即对一个信息及相应处理的描述。对象可分为客观世界中的对象和目标系统中的对象两大类。前者为现实中遇到的每一个实体,可以是一部电话、一所房子、一本书,可以是数据结构中的栈和队列,也可以是任何的处理过程。后者为面向对象程序设计中的对象,是一种特殊的数据结构,它包括对象的形状数据及对此数据进行的各种操作,可用公式表示为:对象=数据+操作。面向对象技术通过对现实世界中对象的抽象以及对各个对象之间的相互关系、相互作用的描述实现由现实世界到目标系统的映射。

二、基于面向对象技术的关系数据库应用方法

(一)整体思路

面向对象的设计方法需要寻找应用程序的领域类,类中封装了数据和对数据操纵的方法,对类的实例化就得到对象,所以必须要解决好对象的存放、检索等问题。在面向对象数据库中,数据以对象的形式保存,并且数据自动保存对象间的关系。数据库不需要集合也不需要分解,而且数据库由可靠的图像组成,这些图像是与对象有关的状态图像。因为面向对象数据库处理的是对象,而不是行和列,所以需要定义相关的方法以便对对象进行操作。

(二)对象映射成关系数据库

由于RDBMS以二维表为基本管理单元,所以对象模型最终是由二维表及表问关系来描述,即对象模型向数据库概念模型的映射就是向数据库表的变换过程。从数据库的角度看,关联和聚合/组合关系之间的唯一不同是对象相互之问的绑定程度,对于聚合和组合,在数据库中对整体所做的操作通常需要同时对部分进行操作,而关联则不同。在聚合情况下,在整体中读取时,通常希望在部分中读取,而在关联情况下,需要执行什么操作则不明显。在将对象保存到数据库中或从数据库中删除对象也存在相同的情况。

三、基于面向对象技术的数据库应用实例

根据需求,需要开发一个图书管理信息系统,系统选用SQL Server 2000作为后台数据库,前台选择Visual C++作为开发语言,Visual C++中的MFC为Visual C++提供了大量的类,把Windows API函数封装在类中,方便用户开发Windows应用程序。

按照对象映射成关系数据库的有关规则,并结合实际需求,给出系统的数据表结构如下:

管理员信息表(管理员编号PK,管理员姓名,管理员类别,管理员密码,管理员性别,联系电话,地址);

图书类别表(图书类别PK,可借阅天数);

借书信息表(记录编号PK,图书编号FK,图书名称,图书类别FK,价格,读者编号FK,读者姓名,借书时间,借书年份,借书当日位于当年的日子数);

图书信息表(图书编号PK,图书名称,图书类别FK,出版社,价格,入库时间,图书状态,读者编号FK,借阅频率,说明);

读者留言表(记录编号PK,读者编号FK,读者姓名,留言时间,留言信息);

读者信息表(读者编号PK,读者姓名,读者类别FK,读者密码,读者性别,联系电话,地址,读者所在系别,注册时间);

读者类别表(读者类别PK,可借阅册数);

还书信息表(记录编号PK,图书编号FK,图书名称,图书类别FK,价格,读者编号FK,读者姓名,还书时间);

罚款信息表(记录编号PK,图书编号FK,图书名称,图书类别FK,价格,读者编号FK,读者姓名,借书时间,还书时间,超期天数,挂失时间,罚金,是否缴纳罚金);

数据表之间通过主键(PK)和外键(FK)建立关联,以实现数据约束。为了更方便地对数据进行操作和管理,图书管理信息系统设计并使用专门的数据库类CADOCONN来封装系统数据库,其中包含了连接数据库的代码。在ADOCONN.H中定义指向Connection对象的指针和指向Recordset对象的指针。按照面向对象的观点,对数据表封装的伪代码如下:

class 数据表名

{

//数据表中的字段名

//对数据表操作的方法完成查询、更新、删除等操作,这些方法中包含建立、断开连接的语句和要执行的SQL语句

//其他的方法

}

四、结束语

基于面向对象技术的数据库管理系统的设计使得需求分析者和数据库设计者之间能够实现很好的交流,其技术关键是面向对象的对象模型及其向数据库结构的转化。面向对象的数据模型描述了真实世界的对象,以及对象间的关系和限制,并通过面向对象的数据库系统加以实现。

参考文献:

[1]王燕.面向对象的理论与实践[M].北京:清华大学出版社,1997

面向对象分析 篇12

关键词:项目驱动,面向对象分析与设计,实践教学

面向对象分析与设计 (OOA/D) 课程主要任务是在学生已掌握的面向对象程序设计语言的基础之上, 使学生们能够深入理解面向对象方法的精髓和实质, 全面了解面向对象分析与设计相关领域的主要研究内容及关键技术, 包括面向对象的需求建模、面向对象的系统分析、面向对象的系统设计及设计模式、软件架构和软件构件技术等内容。面向对象分析与设计方法是目前软件开发的主流方法, 它是软件工程人才必须掌握的基础知识和必备的能力[1]。

可以说OOA/D是软件系统开发中最能体现从业人员创新思维以及其技术精髓闪光点之处, 而与这门课程在软件行业的重要性形成鲜明对比的是, 目前OOA/D课程教学模式已然落后, 偏重理论讲授而脱离项目实践, 学生的学习兴趣和积极性大打折扣, 教学改革迫在眉睫。

1 教学现状分析

当前我们在此门课程的讲授不能满足教学大纲培养需求, 经分析现行的课程教学模式主要存在以下问题。

(1) 理论知识传授过程中某些知识点的讲授无法切实让学生清晰的领会教学内容, 因本门课程对项目实践能力要求较高以及对学生抽象思维能力要求较高, 即便是在结合案例的讲授方式下, 学生仍然对主要内容的把握上表现出不知所措, 学习兴趣及积极性自然大打折扣。

(2) 实验体系也演化为为了机械的“做”而做, 而不是为了“学”而做, 课堂教学与实验教学互相脱钩, 学生将软件建模的过程当成了UML的画图过程, 违背了“做中学”的思想[2], 因此无法在实践中去领会教学内容, 也无法更清晰更形象的体会知识点。

(3) 课程的评价考核也与此门课程的教学目标相脱离, 考核内容大多演化成机械的文字背诵, 因在教学过程中项目实践引入较少, 使得考核过程中对分析与设计环节的考查变成了形式上的空洞。

2 基于项目驱动的课程体系结构的改革

2.1 课程实践体系结构的搭建

本课程教学的关键在于以实践为导向, 以项目为驱动, 这也是该课程教学的中心环节[3], 为此我们首先需要搭建能够承载本课程知识点的实践体系结构。

在搭建项目体系的过程中, 我们利用学院现已结题的横纵向软件项目, 对其中的面向对象分析与设计结果摘取其中要点与课程理论知识点对接, 进一步在分析与设计的各个阶段, 将项目的面向对象设计文档和课程的各个UML图形成对接, 这样由点即线, 形成了完备的课程实践体系结构, 学生在这样的结构环境下实践能更准确更清晰的理解实践要点及理论要点, 并重现了真实的分析与设计过程, 达到了良好的教学效果。

在此过程中, 摈弃了以往单纯使用没有实践积累的纸面案例进行建模画图的思路, 搭建了全新的面向对方分析与设计的实践体系结构, 从而在实践中讲授知识, 将理论知识的关键点转化为实践的关键点来传授。

2.2 课程知识体系结构的改革

我们发现本课程现行的知识体系结构存在着先期准备知识的不完备性以及知识点之间的衔接不连续性, 这些断层导致学生对知识的理解模糊以及对知识的掌握找不到切入点。因此有必要对知识体系结构进行改革和完善。

面向对象分析与设计课程要求学生具备良好的抽象能力, 软件过程重要的第一步便是利用抽象将软件需求转化为分析结果;而第二步考虑具体的软件可扩展性、可维护性、高效的灵活性, 对分析结果给出优化的设计方案。这两个关键的步骤是开发出高质量软件系统的关键, 也是本门课程对学生先期素质的准备需要。而当前我们软件工程专业的教学计划中其他课程的知识传授不能满足面向对象分析与设计学习的先期需要, 导致课程授课难度加大以及学生对知识的理解模糊。

因此整个知识体系结构有必要将《需求工程》及《设计模式》纳入到教学计划中, 《需求工程》是上述第一步从抽象中得到分析结果的能力培养, 《设计模式》是第二步优化设计思维的培养, 这样它们二者便与现有的面向对象分析与设计及软件工程共同构成了软件工程专业分析与设计能力培养课程群[4]。接下来, 我们要将这几门课程内容进行整合, 求同存异, 形成统一的面向对象分析与设计知识体系结构, 在内容选择以及实验配备上统一步调, 在课程之间的连贯性以及知识点的衔接性方面进一步优化体系结构。

3 基于项目驱动的教学方法改革

3.1 案例辅助教学

该课程讲授的原理、技术、方法都很抽象, 容易产生枯燥乏味的感觉。为了激发学生的学习热情, 培养学生分析解决问题的能力, 在教学过程中可设计若干可操作和难度适中的实际案例, 将复杂抽象、枯燥的概念融于具体生动的案例中进行讲解, 能够收到事半功倍的效果。

例如在讲需求建模、类图、用例图等需求分析建模工具时, 可以引入ATM储蓄系统、图书管理系统等学生熟知的案例辅助教学, 学生独立分析、思考, 然后教师再进行讲解, 指出不足。

这种方法不但给学生提供了充分的思考、探究和创新的空间而且学生边学边做, 会对所学的知识理解得更深, 对其应用场合更明确。

3.2 基于项目驱动的教学

在成功搭建课程的实践体系结构之后, 我们便可在教学过程中以项目实践为主线, 使之成为驱动其他教学环节的有效手段。随着课程进展布置任务, 从项目开发的准备工作、系统分析过程、系统设计过程、项目实施, 结合所学习的理论知识, 逐步完成项目的分析与设计。具体的实施过程如下。

(1) 设计多个典型的、完整的、难度适中的、实际的软件项目, 由学生分组完成。

选择项目时应尽量面向社会、面向应用, 反映新技术, 以获得更好的工程设计实践训练。项目最好来源于授课教师直接参与的软件项目, 以便授课教师对其全部细节能够准确掌握。

项目设计好之后, 将学生分成5~6人的小组, 然后为每个小组分配一个项目。小组成员分工合作, 明确项目开发各阶段的任务, 将每项任务落实到个人, 由学生独立完成。

(2) 即学即练。

在讲授一个软件项目分析与设计过程后, 安排一到两节的讨论课, 由学生自由发言。小组可以集思广益, 派一个代表讲解小组对本组项目的理解、分析和设计的过程, 说明运用所学的知识解决问题的方案。其他小组人员可以提出疑问, 最后由教师给出评价, 确定最终的实施方案, 这样项目开发的每个阶段都在教师的正确指导下进行。

在项目开发过程中, 教师要经常了解每组的进展情况, 解决学生遇到的实际问题, 给予正确的引导, 确保项目能够按部就班地、有条不紊地顺利完成。

(3) 统一答辩和验收。

在课程结束时, 每个小组的项目也接近尾声, 然后要统一组织答辩, 上交文档。这时可以让小组代表对其项目的功能、采用的技术等做总结陈述, 然后让每个小组成员说明在整个项目开发过程中所完成的任务, 并一一进行演示。教师针对每个学生实际负责的部分进行提问, 最后根据系统完成的功能、文档的质量、开发技术的难易程度、工作量等给出每个小组及组内每个成员的成绩。

通过面向对象分析与设计课程的学习, 学生的系统分析与设计能力以及开发的规范程度都有一定程度的提高, 具备一定的独立分析、解决问题能力、团队合作能力和有效沟通的技能。

4 考核方式改革

考核方式应尽量做到多样化, 以达到全面客观地衡量学生真实水平的目的。

考核方式有别于其他课程。我们提出的方案是:总成绩为100分, 平时成绩 (其中包括出勤和作业) 占总成绩的10%, 科技小论文占10%项目成绩占40%, 期末考试占40%。

期末时, 学生提交一篇科技小论文。主要考查学生对此门课程新思想、新理论、新技术等的了解程度, 同时也为学生以后继续深造打好基础。

项目成绩, 是指学生开发贯穿教学始终的那个项目的成绩, 主要考查学生的实践动手能力以及分析设计能力。

另外, 由于此门课程的理论性强, 一些原理、方法、规范要求学生牢固掌握, 对于这部分内容以闭卷方式考核。同时笔试反对死记硬背, 重点考查学生综合运用理论知识的能力和方法, 考核学生对面向对象分析与设计思想和软件开发方法的实际掌握程度。

5 结语

本文阐述的教学改革中, 提出了“以分析设计能力培养为核心、以项目实践为驱动”的教学模式。课程安排分为课堂理论教学和实践教学两大部分:课堂理论教学的目的是使学生掌握基本概念、原理和方法, 在此我们重点进行了此门课程的知识体系结构改革, 优化了知识体系结构;实践教学的目的是在搭建好的软件项目体系结构的实践平台上培养学生综合运用所学知识的能力。在此教学模式下, 能够很好的培养学生系统分析设计的能力, 培养他们严谨、求实的科学态度和团队精神, 激发他们的创新意识和实践精神。

参考文献

[1]梁金昆.面向对象的系统分析与设计[M].北京:清华大学出版社, 2004.

[2]樊永华.实践以学生为主体的信息技术课堂教学模式[EB/OL].www.cytaoyuan.qdedu.net.2008.

[3]严琼“.以学生为中心”的教学模式的探讨[J].华中师范大学学报, 2006, 8.

上一篇:加筋技术下一篇:杆柱设计