文档库 最新最全的文档下载
当前位置:文档库 › 4面向对象方法学

4面向对象方法学

4面向对象方法学
4面向对象方法学

第 1 页

第四讲 面向对象方法学

生命周期方法学回顾

1、 生命周期方法学的特点

生命周期方法学是一种传统的软件工程方法学,其主要特点是:

严格的分阶段计划

以时间分解为基础来控制和管理整个软件开发过程的,将软件开发过程划分为许多首尾相接、相互独立的阶段。

“瀑布式”开发模式

软件开发阶段在时间上严格地实施顺序,不能反复。每个阶段完成后才进行下一个阶段的工作,并且前一个阶段的成果作为下一个阶段工作开始的依据。

严格的技术审查和管理复审

在软件开发的每一个阶段结束后,进行严格的技术审查和管理复审,排除所有潜在的错误,保证瀑布模型的实施,并从成本和进度上管理和控制软件开发。

结构化技术

结构化技术内涵为“自上而下,逐步求精”,生命周期方法学在各个阶段采用结构化技术,包括结构化分析、结构化设计、结构化程序设计等。

从以上特点可以看出,生命周期方法学是以软件功能为基础来进行软件开发的,面向的软件实体由一段段可执行的程序代码组成,并以模块作为基本的软件结构体,可以由程序代码的运行来实现所需的软件功能,满足用户的需求。 也正是由于生命周期方法学的以上特点,使得它在软件工程实践中也暴露出

了许多问题:

对功能需求分析的依赖

生命周期方法学的软件开发成果对于功能需求分析有很强的依赖性,要求需求分析阶段的结果一定要全面、准确、清晰,不能有任何错误或模糊的东西。而一旦对需求分析中确定的需求进行了任何改变,都会直接影响到整个软件的设计和实现,对软件进行的修改要付出很大的代价。

但是在实际操作过程中,一方面用户很难一次性地写出既完善又正确无误的功能要求,另一方面所确定的功能要求,又有可能随着时间的变化或者用户对系统理解的逐步深入发生变化。这种软件功能需求的变化在实际软件项目的开发过程中是不可避免和屡见不鲜的,但它对生命周期方法学来说又是灾难性的,这使

得生命周期方法学在软件开发实践中往往处于被动的地位。

软件重用性差

如果某个软件开发中的成果不能够保存下来,并且在其它软件的开发过程中得到应用,那么对于软件开发的生产力来说,就是一种极大的浪费。使软件开发中产生的成果能够被别的软件项目所利用,称为软件的重用性。

在生命周期方法学中,对软件进行模块划分,是致力于提高软件重用性的一种努力。软件模块具有相对独立的功能,能够完成对信息的某一种处理,因此理论上可以被别的用到相同功能的软件所使用。但各种不同的软件系统中,完全相同的功能是很难见到的,总会因为数据类型、处理细节、允许范围等等原因存在

第 2 页

一定的差异。这样,除了一些非常基础的函数运算以外,大量的功能模块并不直接被利用到别的软件中去,而必需要进行一定的修改。这些修改的工作既要在理解原来程序的基础上进行,又要保证对该模块的修改不会影响到与这个模块有耦合关系的其它模块,所以并不简单。生命周期方法学并没有很好地解决软件重用性的问题,也就直接影响了软件生产率的提高。

维护的代价高

任何软件在它的生命周期中,都必然会包含长期的、大量的维护工作。对软件进行维护就是对软件进行修改,但是在生命周期方法学开发软件的过程中,任何对软件的修改都会返回到软件开发的前面阶段中去,因此都需要很大的分析、修改、测试的代价。

虽然使用了生命周期方法学后,软件的文档齐备、可理解性增强,能够进行维护,但是瀑布式开发模式的限制使得每一次维护工作都变成了一次小型的软件开发工作,并且功能模块之间的耦合关系使得维护工作给原来的软件引入了新的不确定因素,降低了软件的可靠性,这样的软件结构还是不容易实现维护要求的。

与现实世界的差异

现实世界是一个复杂的系统,它由许多相互独立的元素组成,这些元素之间互相作用、互相影响,共同构成系统整体。每个元素的内部特性并不受到系统的完全控制,相互间的通讯和协同才是系统整体功能产生的原因。

而在采用生命周期方法学中,整个软件系统是按照一个统一的功能整体来考虑的,所有的功能模块是这个功能整体的某个从属部分,完成功能整体的某一部分内容,自身并不具有独立性和自主性。因此,整个软件系统可以说是一个受到“完全控制”的整体,不管在开发过程中还是在系统的实际运行过程中,每一个细节都是受到完全的、透明的控制的。这种软件系统和它对应的现实世界模型的不同结构,使得必需要经过某种转换才能够实现互相沟通,降低了软件系统的可理解性。

与硬件和运行平台发展趋势的分歧

开发出高性能的计算机系统一直是技术人员的愿望。最初的计算机采用串行的“诺意曼”方式,其后硬件技术中逐渐产生了并行处理技术。并行处理技术是指一个计算机系统同时能够进行多项处理,这些处理互相独立,共同完成某一项复杂的处理任务。

虽然并行处理技术在目前的多数场合还是转换成为实现高性能的“诺意曼”方式计算机的一种工具,但是这种思想对软件运行平台产生了积极的影响。为了提高硬件利用的效率,很多软件运行平台均开始支持多任务。所谓多任务,就是同一套计算机系统能够“同时”进行多项任务的处理。硬件和运行平台的并行、多任务特性,事实上使某个大任务的执行过程变成了多个互相独立、又互相作用的小任务组成的系统,这和生命周期方法学面向过程,

统一调度控制软件的运行流程的思想出现了越来越大的分歧。

数据与处理过程的分离

任何软件系统都是信息处理系统,也就是数据处理系统。特别是随着商业、行政事务领域对软件需求的迅速增加,数据在软件系统中的重要性也随之增加。而在生命周期方法学中,对于系统的分析和设计,都是基于功能的,也就是说,是基于对数据的处理算法、处理过程的,由处理过程和数据结构构成整个软件系统的实体,而数据只是处理过程所操作的对象而已。数据本身的静态性和被动性,

使得整个软件系统的数据变成了一些“死”的数据,只能根据功能操作产生变化,自身不具有任何独立性。这和以数据为中心的任务需求是不相符合的,也不利于对数据的应用和保护。这种数据与处理过程的分离还使得整个软件系统分裂成为了软件实体(由处理过程组成)与数据两大部分,互相之间的关系变得错综复杂,不仅不利于理解,也增加了软件开发本身的难度。

正是因为生命周期方法学存在这样一些问题,已经不能很好地适应软件产业的发展,所以面向对象方法学才被引入软件工程中来。

一、面向对象方法学的基础知识

1、面向对象方法学的基本概念

(1)对象

对象是现实世界中系统组成元素在软件中的对应物。每个实际的系统是由许多相互独立又相互作用的元素共同构成的,这些元素的性质和行为构成了系统的基本内容。将实际系统中每个元素抽象出来,在解决实际系统某个问题的软件中,对应给予一个元素进行模拟,称之为对象。

这个对象的概念是一个非常广义的概念,在不同的任务中它所指的内容并不相同。比如要考察一个公司的人际关系,那么公司内的每一个个人就可以抽象为一个对象;如果要考察的是公司的经营情况,那么可能公司内的每一个部门会抽象为一个对象。以什么元素抽象作为对象,要看所要考察的系统的实际内容,和所要考察的项目的实际要求。

实际系统中,每一个元素都是相对独立,又相互作用的。也可以说,是主动的,或者说是“活”的。这些元素既具有自己的性质,又具有自己的行为。它们的性质是由表明某方面状态的数据来表现的,而它们的行为则是通过它们对其它元素某方面状态的影响,或者其它元素对它们自身某方面状态的影响来表现的。因此,可以认为实际系统中的元素既具有数据又具有对自身数据的操作,数据和操作构成一个整体。同样,在对应于实际系统的软件系统中,对应于实际元素的对象也同时具有数据和操作这两种特性,并且二者结合在一起,共同构成一个在软件系统中独立的“活”的元素。

实际系统中的元素的性质不可能直接被改变,其它的元素只能通过与它之间的作用才能使它的性质发生改变。软件中的对象也具有同样的特性,就是它所具有的数据只能通过它所具有的操作才能改变,而不能直接被别的对象改写。对象的所有数据都被看作是私有的、局部的,外界不能直接访问。其它对象只能够通过它提供给外界的操作来影响所包含的数据,并且数据的变化是由对象自己根据操作和进行操作时的条件完成的。对象的这种特性称为“封装”。因此,对象有如下定义:

定义:对象是软件系统中对实际系统的元素的一种抽象,它由表示属性的数据

和对这些数据的操作封装而成。

根据对象的定义,它有这样一些特点:

以数据为核心

对象的核心是它的数据,数据的不同表明了对象的不同状态,也对应了实际系统中元素的不同性质。对象的操作是对这些数据的变动,是肯定与对象的某些数据有关。

第 3 页

对象是主动的

对象具有封装性

对象具有独立性

(2)消息和方法

消息是对象的对外接口,它提供了与某个具体对象进行通讯,从而激发某种

动作的方式。每条消息由接收消息的对象名、消息名和变元组成。

方法则是每个对象所具有的具体操作,是对消息的具体响应方式。方法通常

需要有具体的实现代码。

通过消息来调用方法,从而对与一个对象发生作用,这是基本的、也可以说

是唯一的对对象施加作用的方法,是对象的唯一对外接口,这种思想充分保障了

对象的独立性。

(3)属性

属性是类中定义的属于对象的数据,反映了对象某方面的特性。

一个类派生出的所有实例具有相同的属性定义,但属性值互不相关。

(4)类和实例

抽取一组相似事物的共同特征,将它们归为一类,这是人类研究和认识世界

的一种基本方法。在面向对象方法学中,类是具有相似特性的一组对象的抽象,

它的定义确定了这组对象所共同拥有的属性和操作,可以用于生成具体的对象。

实例是根据某个类定义所产生的一个具体对象,同属一个类的不同实例拥有

相同的属性和操作定义,但属性值各不相同,在计算机系统中也占据不同的存储

空间,各自的状态和动态特性也互相独立。

(5)继承

继承是面向对象方法学中的核心概念,它是指从一个类的定义中可以派生出

另一个类的定义,被派生出的类(子类)具有父类的所有属性和方法定义。

单纯的继承没有意义,继承的价值在于子类还可以定义自己新的属性和方

法,或者对继承得来的属性和方法重新进行定义,覆盖父类中的定义。这样的继

承方式可以使新类可以从已有的类中派生而来,从而对已有的软件开发成果进行

有效的重用,减少了程序的代码量和复杂度,提高了软件的质量和可靠性,软件

的维护修改也变得更加容易。

2、面向对象方法学的特点

虽然对象的概念是面向对象方法学最基本的概念,但并不是所有使用了全面

第 4 页

第 5 页

使用了对象概念的软件开发方法都可以叫做面向对象方法学,

它具有下面这样一些特点:

使用对象的概念来构造软件

在面向对象方法学中,以对象的概念来对应模拟实际系统中的各种元素,并且以对象的集合构成软件系统的整体,以对象的性质和行为来完成软件系统的所有功能。

如果仅使用了对象概念来开发软件,可以称为“基于对象

”的软件开发方法。 使用类的概念来完成对象定义

面向对象方法学中不仅使用对象的概念,而且使用类的概念。对象作为类的实例,是在软件运行过程中按照类的定义动态生成的,因此实现软件中所有类的定义是软件开发的主要工作。

如果同时使用了对象和类的概念来开发软件,可以称为“基于类”的软件开

发方法。

类之间具有继承关系

继承是面向对象方法学的主要特点之一,它利用类与类之间的继承来实现软件重用,软件开发过程从统一的基类开始,逐步派生出各个层次的所有类,并根据各类的开发需求对类的属性和方法进行重新定义,最后完成整个软件的开发。

如果同时使用了对象、类和继承的概念,可以称为“面向对象”的软件开发

方法。

对象之间通过消息机制互相作用

在面向对象方法学中,对象具有封装性,一个对象不能直接访问另一个对象的数据,只能通过消息机制互相通讯和作用。这种机制既保证了对象之间的独立性,也是对现实世界实际系统之间相互作用方式的最好模拟。

面向对象方法学作为一套完整的软件开发范型,其思想最早来源于程序设计领域,也就是面向对象程序设计(OOP ),其代表是C ++语言。在OOP 中,独立的对象成为了构成整个应用软件实体的基本元素,而多任务操作系统的提出是由对象构成的软件能够得以运行实现的环境条件。随着面向对象程序设计的成功,传统面向过程的软件开发方式(包括软件分析和软件设计)与它的矛盾也逐渐凸显,在软件开发全过程都采用统一的对象概念和对象软件模型的面向对象方法学也就逐渐成形,并逐步发展为软件工程领域具有主导地位的软件开发范型。

3、面向对象方法学的主要优点:

面向对象方法学具有一系列的优点:

问题域与解域具有相同的结构

所谓问题域,是实际问题的表达,也就是实际系统的描述;解域,是为了解决实际问题而设计的软件系统。如果问题域和解域有相似的结构和表达方法,那么不仅软件开发人员容易理解问题域的要求,用户容易理解解域的结果,而且从问题域到解域的转化(也就是软件开发的过程),会变得更加简单。

现实世界中的系统都是由独立存在和行为的元素组成的,而面向对象方法学中对使用对象的概念对这些元素进行了模拟,对象与对象之间的关系类似于实际系统中元素与元素之间的关系。这样在软件结构上,面向对象方法学采用的方式就比传统的生命周期方法学更加符合现实世界的实际情况,问题域和解域具有更好的一致性。在问题域中的元素具有自己的性质和行为,解域中的对象也具有自

己的属性和操作。问题域中每个元素具有自己的独立活动性,并发地自主活动,互相之间通过影响和作用共同构成整个实际系统;解域中的对象也是独立存在和运行的,互相之间通过消息的传递来实现互相操作,完成整个软件系统的设计要求和功能。

求解过程与人类思维模式一致

在面向对象方法学中,不用再考虑用一个全面的、完善的、事无巨细的控制流程来管理一切,而是根据对问题域的分析,以设计出相应的对象来模拟问题域中的元素,由这些对象自主的行为构成整个软件系统的运行。这就使软件开发的过程与实际系统的运行过程更加一致,不必从实际系统中去抽取出所有的控制流程,也就更加容易实现。

软件系统具有稳定性

正因为使用面向对象方法学开发出来的软件系统是由众多的对象所构成的,并且其结构和现实世界中的实际系统相类似。因此,如果问题域发生变化,那么对应解域的变化可以比较方便地进行。在实际系统中,构成整个系统的元素相对来说比较稳定,经常发生变化的是整个系统的功能,而功能是通过增减元素,或改变元素与元素之间的相互作用来体现的。所以,用面向对象方法学开发出来的软件系统当功能要求发生变化时,并不需要对整个软件全部进行调整,只需要增减对象或对象类,改变对象的消息处理机制或者内部操作就可以实现了,整个软件系统的结构比较稳定。

可重用性好

可重用性要求构成软件的构件具有很好的适应应用场合和环境变化的能力,

而应用场合和环境变化最常体现在对构件功能的要求相似,但数据类型或处理细

节有所不同。传统的功能模块由于只具有对数据的处理,不包含数据本身,因此

对于不同的数据类型或处理细节必然会产生不同的模块,那么这些模块的重用都

会受到很大的限制。

面向对象方法学将数据和对数据的处理封装成为一个对象,对象这个数据和

操作的整体类似于现实系统中的元素,具有独立性和完整性。因此,如果用它作

为软件重用的构件,那么更加符合现实世界的自然情况。面向对象方法学采用了

类的概念,每一个类都可以产生出许多的具有相同性质,但又各自独立活动的对

象实体;每一个类又还可以通过派生产生新的类,新的类能够如果继承利用父类

的所有设计成果。这些优点都使得对象的重用变得更加简单和灵活,大大提高了

软件开发的效率和可靠性。

可维护性好

由于软件自身具有完整的生命周期,因此可维护性无论如何都是软件开发质量的一个重要指标。采用面向对象方法学开发的软件系统,由一系列相对独立的对象组成,对象与对象之间并不能直接互相改变数据的状态,甚至直接执行某种操作。因此对于软件的任何修改,都只需要限定在相关的类就可以了,并不会影响到其它的类;对于某个类内部的数据和操作的修改,只要与提供给外界的消息机制无关,对其它类也没有任何影响。这种特性使得对于软件的修改和测试都变得更加容易。面向对象方法学的解域和问题域的一致性,也使得软件系统更加容易理解,修改起来也更容易。

二、统一建模语言UML

第 6 页

第 7 页

1、 U ML 语言的历史

面向对象方法学是一种基于对象模型的软件开发方法,它在分析、设计和实现的各个阶段都采用统一的模型来对系统进行描述,整个软件开发的过程就是一个逐渐对系统模型进行细化和精华的过程。因此,在面向对象方法学中,如何实现对系统模型的统一描述,采用何种工具来表达系统模型是一个关键性的问题。UML 语言就是在这种背景下诞生的,它是统一建模语言(Unified Modeling Language )的简称。

在70年代中期面向对象程序设计诞生之初,用于建模的语言就层出不穷,到1994年据统计超过了50种,这些语言各有特色,也都得到了一些实践应用,但是各自不同的表达方法和体系造成了使用者之间交流的很大障碍,亟需进行整合。

1994年10月,Rational 公司的Grady Booch (格雷第·布屈)和Jim Rumbaugh (詹姆斯·伦伯)开始致力于这一工作。他们在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,于1995年10月发布了统一方法UM 0.8(Unified Method )。1995年秋,OOSE 的创始人Ivar Jacobson (依瓦·亚克生)加入该项工作,经过三人的共同努力,于1996年6月和10月分别发布了UML 0.9和UML 0.91,并将UM 重新命名为UML (Unified Modeling Language )。

UML 三友(Three Amigos )

◆ Grady Booch

Booch 是美国Rational 软件工程公司的首席

科学家和Booch 方法的主创人。与Rational 公司

的Ivar Jacobson 、Jim Rumbauth 共同创建了一

种可视化地说明、建造软件系统的工业标准语言-

统一建模语言UML 。他还是Rational 公司一些产

品的开发者,包括该公司最初的软件工程环境Rat

ional Enviroment 及业界领先的可视化建模工具R

ational Rose 。

◆ Jim Rumbaugh

James Rumbaugh 博士拥有麻省理工学院的物理学

学士学位、加利福尼亚理工学院的天文学硕士学位,以

及麻省理工学院的计算机科学博士学位,1994年加入

Raional 公司前曾在通用电气(GE )研发中心工作了25

年,他提出了许多面向对象软件开发和实现的概念及工

具,包括OMT 方法(Object Modeling T echnique ),他

目前领导着IBM Rational 分部的软件建模工作。

Ivar Jacobson

第 8 页

IvarJacobson 博士曾任瑞典爱立信公司的首

席软件体系架构师,1995年加盟Rational 公司,

2005年成立Ivar Jacobson International ,致力

于软件开发方法的研究和推广,其公认的主要成

就包括组件(Component )、用例(Use Case )、

SDL 语言 (Specification Description Languag

e)、OOSE (Object_Oriented Software Engine

ering )、RUP 过程(Rational Unified Process )

和UML 语言,著作包括《面向对象软件工程》和

《UML 语言用户指南》等。

自1996年开始,UML 得到了一些软件开发企业和软件开发人员的逐步认同,并成立了UML 成员协会,以完善、加强和改进UML 的规范和应用推广,其成员包括了IBM 、DEC 、Microsoft 、Oracle 、Rational 、TI 、Unisys 等业界的重要企业。

1997年9月1日,UML 1.1发布,并提交给面向对象软件开发的标准化组织OMG (O bject Management Group ,对象管理组织),于同年11月17日被OMG 采纳,作为面向对象软件开发技术的标准建模语言。

UML 是一种经过精心设计的标准化建模语言,它吸取了软件工程领域的最新研究成果,并经过软件工程实践的检验,具有定义完善、易于使用、功能强大和适用面广等特点,可以完整支持面向对象软件开发的全过程,获得了广泛的认可,是可视化建模语言的行业标准,具有很高的价值,并已推广到软件开发以外的领域用来建立系统的静态和动态模型。

2010年5月OMG 发布了UML 2.3规范,这是UML 标准目前的最新版本。其具体文档可参见网址:https://www.wendangku.net/doc/568977735.html,/spec/UML/2.3/

2、 U ML 语言的内容

自UML2.0开始,UML 语言的定义分为四个部分:基础结构(Infrastructure )、上层结构(Superstructure )、对象约束语言(OCL )和图交换(Diagram Interchange ),其中基础结构和上层结构是UML 的主体部分。

UML 基础结构的设计目标是定义一个元语言的核心Infrastructure Library ,通过对此核心的复用,定义一个自展的UML 元模型。元模型为UML 的所有元素在语法和语义上提供了简单、一致、通用的定义性说明。UML 基础结构也能定义其他建模语言的元模型和专用语言。

UML 上层结构的设计目标是基于基础结构Infrastructure Library 中的元语言规则,定义用户可以直接使用的系统模型描述工具。

UML 2.3用图(Diagram )作为模型基本符号,共支持13种图,分成两大类:结构图(Structure )和行为图(Behavior )。结构图包括:类图(Class )、组合结构图(Composite Structure )、构件图(Component Diagram )、部署图(Deployment )、实例图(Instance Specification )和包图(Package );行为图包括:活动图(Activity )、交互图(Interaction )、用例图(Use Case )和状态机图(State Machine ),其中交互图是顺序图(Sequence )、通信图(Communication )、交互概览图(Interaction Overview

)和时序图(Timing )的统称。

第 9 页

3、 静态模型描述工具

系统静态模型表达了系统的组成和结构关系,在UML 2.2中使用的静态模型描述工具是各种结构图,其中最核心的定义是类图和对象图。

(1) 类图

类图是一个纵向分成三部分的矩形,分别写入类名、属性和方法。

类名是访问类的索引,应当使用含义清晰、用词准确、没有歧义的名字。 属性是类中的数据,每个属性按照以下语法定义:

可见性 属性名:类型名=初值{

性质串}

其中可见性有四种类型,分别为:

公有Public :用(+)表示,说明该属性所有对象均可以访问

私有Private :用(-)表示,说明该属性只有该类产生的实例可以访

保护Protected :用(#)表示,说明该属性只有该类及其派生类产生

的对象可以访问

包Package :用(~)表示,说明该属性只有属于同一个包的类产生

的对象可以访问

类型名表示该属性的数据类型,性质串说明了该属性所有可能的取值,也可以加入其它说明。

方法是该类可以提供的对数据的操作,其定义为:

可见性

方法名(参数表):返回值类型

{性质串}

可见性的定义与属性相同。

参数表中每个参数的格式为:

方向 参数名:类型名=默认值

方向有四种类型,分别为:

In :表示传送给方法的参数

Out :表示传送给调用者的参数

Inout :表示在方法和调用者之间双向传送的参数

Return :表示作为方法返回值返回给调用者的参数

(2) 对象图

对象是类的实例,对象由一个分成两部分的矩形表示,分别写入对象名和属性值。

对象名由对象名:类名表示,并加下划线。每个对象的属性都有具体的取值。

(3)

关系

关系表达了类与类之间的相互联系,一个系统的静态模型就是由类图和类图之间的关系来作为基础构成的。

UML中常用的类之间的关系表达有以下几种类型:

关联Association

关联表示了两个类之间的语义联系,因此关联有名称,有方向,并且可以表明重数。

0··1,表示0到1个对象

0··*或*,表示0到多个对象

1+或1··*,表示1到多个对象

1··15,表示1到15个对象

3,表示3个对象

聚集 Aggregation

聚集可以看作是关联的特例,它表示类与类之间是整体与部分的关系。聚集可以有两种特殊方式:

◆共享聚集 Shared Aggregation

处于部分方的类可同时参与多个处于整体方类的构成,部分方类也可以独立存在。

◆组合聚集 Composition

处于部分方的类是处于整体方类的一部分,同时存在或消失。

第10 页

第 11 页

泛化 Generalization

泛化关系就是继承关系,特殊类拥有一般类的全部信息,还可以附加自

己的新的信息。

泛化关系仅仅用于类与类之间,可以传递,也可以表现为多重继承或其

它受约束的泛化关系。

4、 功能模型描述工具

系统功能模型表达了系统的功能,UML 功能模型中最重用的概念是用例,使用用例模型来捕捉和描述系统满足用户需求的各种功能。

(1) 用例图的组成

一个用例描述了系统和外部角色(Actor )之间的一次交互。用例图由系统、用例、角色和关联组成。

第 12 页

系统

是一个矩形,表示了软件系统的边界。

角色也称为参与者,是指系统以外与系统进行信息交互的人或物,用一个人形符号表示。

用例是一个椭圆形,它表达了系统可以提供的一项完整的功能,这些功能的结果能通过系统与角色之间的通信让角色觉察到。

关联也称为通信,它连接角色与用例,表达了角色与用例之间的关系。关联也可以有自己的重数和特性。

(2) 用例之间的关系

用例与用例之间可以有两种常见关系:

扩展 Extend

扩展关系是一种泛化关系,它表达了一个用例由另一个用例扩

展而来,继承了原用例的行为,同时可以有自己新的行为,它是由

一般用例扩展到特殊用例的过程。

使用 Use

使用关系表示一个用例在完成自己功能的时候,要使用另一个

用例的功能。

(3) 用例描述

用例图中的用例只是表达了系统所具有的某项功能,而对每个功能的具体含义和操作细节,必须使用用例描述来进行文字表达。

用例描述只关注角色可以感知到的用例的功能表现,而不关注软件系统自身对功能的实现细节,一般包括用例说明、前置条件、事件流、异常处理等内容。

5、动态模型描述工具

系统的动态模型表达了系统的动态特性。UML 2.2中用各种行为图来表达系统的动态模型,其中比较重要的有状态机图和顺序图。

(1)状态机图(State Machine)

状态图是一种常用的描述系统动态特性的工具,它可以表达一个对象如何在事件的驱动下从自身的一个状态转移到另一个状态。UML 2.2中的状态机图是状态图的一个子集,它表达了系统对象作为一个有限状态机的状态转移特性。

[存储报表失败]

状态机图由状态、转换、事件等组成,表达了对象的状态在相应事件触发下会发生的转移。

(2)顺序图(Sequence)

顺序图是UML中非常重要的工具,它表达了对象之间在事件上的相互配合以及互相之间的消息传递过程,充分体现了系统对象之间的交互作用。

UML中时序图包含4个元素,分别是对象(Objce)、生命线(Lifeline)、消息(Message)和激活(Activation),其中纵轴是时间轴,时间沿竖线向下延伸。横轴代表了在协作中各个独立的对象。当对象存在时,生命线用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。

第13 页

三、面向对象分析

1、一般过程

面向对象分析是采用面向对象方法学开发软件的第一步。它的基本内容是以对象概念为基础,通过对目标系统的分析,确定软件系统的结构、组成和行为方式,从而建立起目标系统的完整模型。

面向对象分析的一般过程如下图所示:

第14 页

需求陈述是软件开发的出发点,它是由用户撰写的关于开发目标的最初描述。需求陈述往往是不完整、不精确和不正规的,它不能直接作为软件开发的需求规格描述,而只能作为进行需求分析和系统建模的引导性文件。

在需求陈述的基础上,系统分析员要通过自己的分析和与用户的交互,抽象出系统的本质特征,建立起系统的面向对象模型,最后对模型中每个服务的细节进行定义。

面向对象分析的过程不是一种线性的过程,而是一个对系统模型进行演进和迭代的过程,因此在每一项任务都有可能要在更深入、更细化的意义上重复进行其它任务的工作。

三部

都是系统模型的基本元素,结构代表了系统中各个元素之间的相互关系,而主题则是将系统中具有相互关联的元素组合到一起,形成一个“主题”,每个主题都代表了系统的某一个相对独立的组成部分。使用“主题层”是提高系统抽象程度,减少系统复杂度的一种方法,它相当于将大的软件系统划分成许多小的子系统,在一个规模可控的范围内来进行研究。

2、建立系统静态模型:

(1)识别类和对象

建立系统静态模型首先要识别出类和对象,其依据来源于对问题域的分析,通过研究所要解决的问题所构成的系统的结构和组成来完成。

第15 页

第 16 页

首先对问题域中有意义的个体或概念实体进行研究,按照以下五种类型来列出候选的对象:

可感知的物理实体,比如计算机终端、打印机、密码键盘、CRT 、存储器等;

人或组织的角色,比如操作员、管理员、储户等;

应该记忆的事件,比如意外停电、非法操作等;

对象间的相互作用,比如打印、显示、生成利息等;

需要说明的概念,比如存期、利率等; 将一个目标系统中的所有候选的对象列表出来以后,要对它们进行筛选。

筛选的原则包括:

相同的冗余概念

与系统无关的概念

笼统模糊的概念

应当归为属性和服务的概念

系统实现阶段才应出现的概念

经过筛选得到的对象表才是构成目标软件系统的基本组成成份。

完成对象的识别后,要对对象进行归类,也就是进行类的识别。识别类的方式主要是依据对象与对象之间的共同之处和差异之处进行的。把某些具有共同属性和操作的对象之间的共同的东西抽象出来,形成一个类,然后将这些对象作为这个类的不同实例例,就完成了类的识别。

(2)识别关联 关联代表了类与类之间的关系,也就是系统的结构,

它对应了问题域中实体之间的相互关系。在对问题域的分析中,可以依据以下方法得到关联:

从动词短语中提取:比如“由…组成”、“拥有”、“与…交换

”等;

寻找需求陈述中隐含的关联; 根据问题领域的知识得到的关联;

得到关联后同样要进行筛选,筛选的原则包括:

与不存在的类或对象相关的关联

与系统任务无关的关联

描述瞬时事件的关联

可用其他关联派生的关联

系统实现阶段才应出现的关联

(3)划分主题

主题是对系统的一种划分,它由主题词来标识,表明了整个系统中的某个结构范围,通常把关系比较密切的紧耦合类和对象划分在同一个主题内,位于不同主题中的类(对象)之间的关系比较松散,仅以少量的消息传递相互关联,基本不存在泛化关系。

划分主题一般也按照问题域的分解关系来进行,针对问题域的功能和结构分解来得到不同的主题。

(4)定义属性

对属性的定义是对类(对象)识别的深入,对每一个类(对象)的属性进行详细的研究,确定它的名称、内容、数据特性和表征含义。

定义属性的过程来源于对每一个对象的详细分析,而得到的属性通常也要按

第 17 页

照以下原则进行筛选:

应当是对象的属性

区分关联类的属性和一般对象的属性

关联的限定词

对象的内部状态数据

属性的矛盾和冲突 在进行属性定义的过程中,还可能碰到这样的一些情况,说明需要对类(对象)识别的结果进行调整:

如发现一个属性只适用于一个类中的某些对象,而不适用于另一些对象,说明存在新的类,并且这个新类和原先的类存在继承关系;

如果某个类只有一种属性,那么它应该可以作为它的父类的一个属性,而不单独作为一个类存在;

(5)非正式分析

在识别对象、属性包括服务的过程中,除了对系统进行分析得到候选元素外,还可以使用被称为“非正式分析”的方法,它对需求陈述进行考查,将需求陈述中的名词作为对象的候选者,形容词作为属性的候选者,动词作为服务的候选者。

3、 建立系统功能模型:

建立系统功能模型的最主要工作是编写用例,用例表达了系统功能,也作为软件开发的目标驱动了整个面向对象软件开发的过程。

定义用例的首要步骤是识别出角色(参与者),这往往是通过分析系统的使用者、维护者和外部接口得到的。用例的编写从可见的外部事件出发,考查其与角色之间的关系,以发现系统应该提供什么功能来实现这些外部事件,从而定义出用例,并在研究用例之间相互关系的基础上绘制出用例图,最后对每个用例进行描述。

在用例图的基础上,可以进一步使用数据流图来对系统功能模型进行细化描述。

4、 建立系统动态模型:

(1)编写脚本

建立系统动态模型从编写脚本开始。

脚本是指系统在某一期间内的一系列事件,它由用户与系统的多次交互构成,表达了用户使用系统所提供的功能的过程。

脚本的编写围绕系统的用例进行,通常一个完整的脚本中包含了系统某一方

需求陈述 名词 对象

属性

服务

形容词 动词

面功能的多个用例,并用流程描述将它们串接起来。脚本的内容为事件序列,每个事件要明确产生的时间、发起者、接收者、参数和产生的影响,通常都会按照正常情况脚本和异常情况脚本来分别编写。

(2)绘制顺序图

在脚本的基础上,抽取出对象间状态变化的时间关系,以及对象间消息传递的内容,绘制出顺序图,准确地描绘出系统功能实现过程中的信息传递和对象间相互关系。

(3)设计基本用户界面

根据对系统动态的分析,设计一个能满足交互需求的用户界面,同时确定系统的基本人机交互模式。

(4)绘制每个对象的状态图

顺序图表达了系统整体的消息流动和事件,而状态图能很好地描绘出每个对象对消息和事件的反应,对于准确地理解每个对象的动态特性很有帮助。

状态图的绘制可以在顺序图的基础上进行,从顺序图中抽取出每个对象以及它接收和发送的消息,考查这些消息是否会对对象的状态造成影响。

5、定义类的服务

类的服务也可以称为“方法”或“操作”,对类的服务进行定义是面向对象分析最后完成的工作。服务的定义可以来源于状态图中的事件响应,也可以来源于功能模型中的具体数据处理。

四、面向对象设计

1、一般过程

面向对象方法学把整个软件系统看作是对象的集合,软件开发过程是对对象模型演进迭代、逐步精华的过程,因此也没有“瀑布模型”那样精确严格的阶段划分,这一点在“喷泉模型”这样的面向对象软件开发过程中可以明显地看出来。在这种方式中,面向对象分析和面向对象设计也很难明确区分开来。事实上,不管是分析过程还是设计过程,都是对整个软件系统的对象、类、结构、服务的建构过程。所不同的是:在面向对象分析阶段,工作的重点是对问题域进行仔细的研究,将它所包含的对象和对象之间的关系确定下来,并且用对象模型进行模拟;而在面向对象设计阶段,可以看作是对分析阶段生成的系统对象模型的一种扩充和深化,补充许多在问题域中并不存在,但为了完成软件的整体任务所不可缺少的对象和对象之间的关系,从而形成完整的软件结构。所以,在进行面向对象分析时,一定要将所研究的内容限定在与系统任务直接相关的范围内,以更多地集中精力探明目标系统的本质要求,而不要涉及与系统任务没有直接关系的对象和操作,把这些内容留待面向对象设计的阶段再来研究。

第18 页

喷泉模型

分析设计

根据P.Coad和E.Yourdon提出的面向对象设计模型,把软件的整个面向对象设计过程分成了“问题域子系统”、“人机交互子系统”、“任务管理子系统”、“数据管理子系统”这四个部分,对每一个部分又包括了类与对象、结构、主题、属性、服务这5个层次的内容。

第19 页

第 20 页

其中“问题域子系统”是整个设计的主体,它是由完成软件系统主要任务的部分所构成的,其设计直接来源于OOA 所建立目标系统对象模型;“人机交互子系统”给出实现人机交互所需的对象;“任务管理子系统”提供协调和管理目标软件系统各个任务的对象;“数据管理子系统”定义专用对象,将目标软件系统中依赖于开发平台的数据存取操作与其它功能分开,以提高对象独立性。这四个部分相当于给整个软件的完整对象模型划分了四个最高层的主题,不仅可以相对独立地进行设计,而且在人机交互、任务管理、数据管理这些主题的设计和实现中,都可以采用大量的通用类库等可重用件,使软件开发的效率得以很大幅度的提高。

2、 问题域子系统设计

问题域子系统的设计以面向对象分析所得出的系统对象模型为基础,通过适当的扩展和调整,使之适应需求的变化,并为那些完成系统功能所需的类、对象、属性和方法提供实现途径。

对系统对象模型的扩展和调整主要采用以下方法和措施:

(1) 设计重用:

对系统模型中的对象进行仔细的研究和分析,充分利用对象本身的可重用特性,调整类结构,必要时引入一些新的成分,尽可能地使得类之间可以通过继承关系获得属性和操作,以减少系统的冗余,并为今后的重用提供条件。

(2) 调整泛化关系:

根据开发环境的限制(例如有的语言支持多重继承,有的只支持单继承)对泛化结构进行调整,或引入新的父类,使系统中相关的某一组类都可以成为新父类的子类,使系统的继承结构更加清晰,更加容易管理,也更加容易重用,还可以以更少的设计和代码代价完成更多的方法的实现,提高开发效率。

(3) 设计实现细节:

对问题域子系统的服务进行详细的算法设计,使其可以在面向对象编程实现的时候方便地实现各种操作,同时纠正服务、属性定义中的错误,并调整类和对象的定义,以降低对象间的通讯开销,提高软件的执行速度。

3、 人机交互子系统设计

主题层 服务层 属性层

类与对象层 结构层

代谢组学的研究方法和研究流程

代谢组学的研究方法和研究流程分子微生物学112300003林兵 随着人类基因组计划等重大科学项目的实施,基因组学、转录组学及蛋白质组学在研究人类生命科学的过程中发挥了重要的作用,与此同时, 代谢组学(metabolomics)在20世纪90年代中期产生并迅速地发展起来,与基因组学、转录组学、蛋白质组学共同组成系统生物学。基因组学、转录组学、蛋白质组学和代谢组学等各种组学0在生命科学领域中发挥了重要的作用,它们分别从调控生命过程的不同层面进行研究, 使人们能够从分子水平研究生命现象, 探讨生命的本质, 逐步系统地认识生命发展的规律.这些组学手段加上生物信息学, 成为系统生物学的重要组成部分。 代谢组学的出现和发展是必要的, 同时也是必须的。对于基因组学和蛋白质组学在生命科学研究中的缺点和不足, 代谢组学正好可以进行弥补。代谢组学研究的是生命个体对外源性物质(药物或毒物)的刺激、环境变化或遗传修饰所做出的所有代谢应答, 并且检测这种应答的全貌及其动态变化。代谢组学方法为生命科学的发展提供了有力的现代化实验技术手段, 同时也为新药临床前安全性评价与实践提供了新的技术支持与保障. 1 代谢组学的概念及发展 代谢组学最初是由英国帝国理工大学Jeremy N icholson教授提出的,他认为代谢组学是将人体作为一个完整的系统,机体的生理病理过程作为一个动态的系统来研究, 并且将代谢组学定义为生物体对病理生理或基因修饰等刺激产生的代谢物质动态应答的定量测定。2000年,德国马普所的Fiehn等提出了代谢组学的概念,但是与N ichols on提出的代谢组学不同, 他是将代谢组学定位为一个静态的过程,也可以称为/代谢物组学, 即对限定条件下的特定生物样品中所有代谢产物的定性定量分析。同时Fiehn还将代谢组学按照研究目的的不同分为4类: 代谢物靶标分析,代谢轮廓(谱)分析, 代谢组学,代谢指纹分析。现在代谢组学在国内外的研究都在迅速地发展, 科学家们对代谢组学这一概念也进行了完善, 作出了科学的定义: 代谢组学是对一个生物系统的细胞在给定时间和条件下所有小分子代谢物质的定性定量分析,从而定量描述生物内源性代谢物质的整体及其对内因和外因变化应答规律的科学。 与基因组学、转录组学、蛋白质组学相同, 代谢组学的主要研究思想是全局观点。与传统的代谢研究相比, 代谢组学融合了物理学、生物学及分析化学等多学科知识, 利用现代化的先进的仪器联用分析技术对机体在特定的条件下整个代谢产物谱的变化进行检测,并通过特殊的多元统计分析方法研究整体的生物学功能状况。由于代谢组学的研究对象是人体或动物体的所有代谢产物, 而这些代谢产物的产生都是由机体的内源性物质发生反应生成的,因此,代谢产物的变化也就揭示了内源性物质或是基因水平的变化,这使研究对象从微观的基因变为宏观的代谢物,宏观代谢表型的研究使得科学研究的对象范围缩小而且更加直观,易于理解, 这点也是代谢组学研究的优势之一. 代谢组学的优势主要包括:对机体损伤小,所得到的信息量大,相对于基因组学和蛋白质组学检测更加容易。由于代谢组学发展的时间较短, 并且由于代谢组学的分析对象是无偏向性的样品中所有的小分子物质,因此对分析手段的要求比较高, 在数据处理和模式识别上也不成熟,存在一些不足之处。同时生物体代谢物组变化快, 稳定性较难控制,当机体的生理和药理效应超敏时,受试物即使没有相关毒性,也可能引起明显的代谢变化,导致假阳性结果。 代谢组学应用领域大致可以分为以下7个方面:

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

植物代谢组学的研究方法及其应用

植物代谢组学的研究方法及其应用 ★★★ BlueGuy(金币+3)不错,谢谢! 近年来,随着生命科学研究的发展,尤其是在完成拟南芥(Arabidopsis thaliana) 和水稻(Oryza sativa) 等植物的基因组测序后,植物生物学发生了翻天覆地的变化。人们已经把目光从基因的测序转移到了基因的功能研究。在研究DNA 的基因组学、mRNA 的转录组学及蛋白质的蛋白组学后,接踵而来的是研究代谢物的代谢组学(Hall et al.,2002)。代谢组学的概念来源于代谢组,代谢组是指某一生物或细胞在一特定生理时期内所有的低分子量代谢产物,代谢组学则是对某一生物或细胞在一特定生理时期内所有低分子量代谢产物同时进行定性和定量分析的一门新学科(Goodacre,2004)。它是以组群指标分析为基础,以高通量检测和数据处理为手段,以信息建模与系统整合为目标的系统生物学的一个分支。 代谢物是细胞调控过程的终产物,它们的种类和数量变化被视为生物系统对基因或环境变化的最终响应(Fiehn,2002)。植物内源代谢物对植物的生长发育有重要作用(Pichersky and Gang,2000)。植物中代谢物超过20万种,有维持植物生命活动和生长发育所必需的初生代谢物;还有利用初生代谢物生成的与植物抗病和抗逆关系密切的次生代谢物,所以对植物代谢物进行分析是十分必要的。 但是,由于植物代谢物在时间和空间都具有高度的动态性(stitt and Fernie,2003)。尤其是次生代谢物种类繁多、结构迥异,且产生和分布通常有种属、器官、组织以及生长发育时期的特异性,难于进行分离分析,所以人们一直在寻找更为强大的检测分析工具。在代谢物分析领域,人们已经提出了目标分析、代谢产物指纹分析、代谢产物轮廓分析和代谢表型分析、代谢组学分析等概念。20世纪90年代初,Sauter 等(1991)首先将代谢组分析引入植物系统诊断,此后关于植物代谢组学的研究逐年增多。随着拟南芥等植物的基因组测序完成以及代谢物分析手段的改进和提高,今后几年进入此研究领域的科学家和研究机构将越来越多。 1研究方法 代谢组学分析流程包括样品制备、代谢物成分分析鉴定和数据分析与解释。由于植物中代谢物的种类繁多,而目前可用的成分检测和数据分析方法又多种多样,所以根据研究对象不同,采用的样品制备、分离鉴定手段及数据分析方法各不相同。 1.1样品制备 植物代谢物样品制备分为组织取样、匀浆、抽提、保存和样品预处理等步骤(Weckwerth and Fiehn,2002)。代谢产物通常用水或有机溶剂(如甲醇和己烷等)分别提取,获得水提取物和有机溶剂提取物,从而把非极性的亲脂相和极性相分开。分析之前,通常先用固相微萃取、固相萃取和亲和色谱等方法进行预处理(邱德有和黄璐琦,2004)。然而植物代谢物千差万别,其中很多物质稍受干扰结构就会发生改变,且对其分析鉴定所采用的设备也不同。目前还没有适合所有代谢物的抽提方法,通常只能根据所要分析的代谢物特性及使用的鉴定手段选择合适的提取方法。而抽提时间、温度、溶剂成分和质量及实验者的技巧等诸多因素也将影响样品制备的水平。

第10章面向对象讲解

第10章面向对象分析 10.1面向对象分析的基本过程 不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。 图:参照当前系统建立目标系统 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

10.1.1 概述 系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。 [[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。”(P231)——这在一开始能做到吗?——扯蛋 10.1.2 3个子模型与5个层次 面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。 建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:

图10.2 复杂问题的对象模型的5个层次 其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。 其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行: (1)确定类和对象 (2)确定关联 (3)划分主题 (4)定义属性 (5)确定继承关系 (6)建立动态模型

面向对象课后题目解析

第 1 章 面向对象程序设计概论 面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论

一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。 (4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选)

(1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 (7)下面( A )不是面向对象系统所包含的要素。 A. 重载 B. 对象 C. 类 D. 继承 【结果分析】

代谢组学综述

代谢组学综述 摘要:代谢组学是20世纪90年代中期发展起来的对某一生物或细胞所有低相对分子质量代谢产物进行定性和定量分析的一门新学科,由于其广泛的应用前景,目前已成为系统生物学的重要组成部分。现简要介绍了代谢组学的含义、代谢组学研究的历史沿革、当前代谢组学研究中的分析技术、数据解析方法,综述了代谢组学在药物毒理学研究、疾病诊断、植物和中药等领域的应用情况,并对当前代谢组学研究中存在的问题及发展趋势进行探讨。 关键词:代谢组学研究技术 随着人类基因组计划等重大科学项目的实施,基因组学、转录组学及蛋白质组学在研究人类生命科学的过程中发挥了重要的作用, 与此同时, 代谢组学(metabolomics)在20世纪90年代中期产生并迅速地发展起来, 与基因组学、转录组学、蛋白质组学共同组成系统生物学。基因组学、转录组学、蛋白质组学和代谢组学等各种组学0在生命科学领域中发挥了重要的作用, 它们分别从调控生命过程的不同层面进行研究, 使人们能够从分子水平研究生命现象, 探讨生命的本质, 逐步系统地认识生命发展的规律。这些组学手段加上生物信息学, 成为系统生物学的重要组成部分。 代谢组学的出现和发展是必要的, 同时也是必须的。对于基因组学和蛋白质组学在生命科学研究中的缺点和不足, 代谢组学正好可以进行弥补。代谢组学研究的是生命个体对外源性物质(药物或毒物)的刺激、环境变化或遗传修饰所做出的所有代谢应答, 并且检测这种应答的全貌及其动态变化。代谢组学方法为生命科学的发展提供了有力的现代化实验技术手段, 同时也为新药临床前安全性评价与实践提供了新的技术支持与保障。 1 代谢组学的概念及发展 代谢组学最初是由英国帝国理工大学Jeremy N icholson教授提出的, 他认为代谢组学是将人体作为一个完整的系统, 机体的生理病理过程作为一个动态的系统来研究, 并且将代谢组学定义为生物体对病理生理或基因修饰等刺激产生的代谢物质动态应答的定量测定。2000年, 德国马普所的Fiehn等提出了代谢组学的概念, 但是与N icholson提出的代谢组学不同, 他是将代谢组学定位为一个静态的过程, 也可以称为/代谢物组学, 即对限定条件下的特定生物样品中所有代

传统方法学与面向对象区别

小议传统方法学与面向对象的区别 姓名:戴育兵 学号:G1030510 年级 :大二 班级: .net(2)班

摘要 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simdla_67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。

软件工程传统方法学 1.传统方法学概述 随着计算机应用领域的不断拓广,各种各样的问题也不断涌现,当问题严重到开发人员无法控制的时候便产生了软件危机。软件危机的出现,促使了软件工程学的形成和发展。随之整合整套技术的软件工程方法学广泛应用,主流之一就是传统方法学。传统方法学在软件开发过程中占据相当大的比重,因为其悠久的历史而为很多软件工程师青睐。如果说自然语言和编程语言之间有一道难以跨越的鸿沟,传统方法学就是跨越这道鸿沟的桥梁。 传统方法学又称生命周期方法学或结构化范型。一个软件从开始计划起,到废弃不用止,称为软件的生命周期。在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。 传统方法学使用的是结构化分析技术来完成需求分析阶段的工作。软件工程学中的需求分析具有两方面的意义。在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。在描述事物方面,它具有一套表示体系和文档规范。但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难。 在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,以及模块的划分,模块间的数据传送及调用关系。详细设计是在总体设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而留下隐患。 编程阶段是利用一种编程语言产生一个能够被机器理解和执行的系统,测试是发现和排除程序中的错误,最终产生一个正确的系统。但是由于分析方法的缺陷很容易产生对问题的错误理解,而分析与设计的差距很容易造成设计人员对分析结果的错误转换,以致在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生不同的理解。因此为了使两个阶段之间能够更好的衔接,测试就变得尤为重要。 软件维护阶段的工作,一是对使用中发生的错误进行修改,二是因需求发生了变化而进行修改。前一种情况需要从程序逆向追溯到发生错误的开发阶段。由于程序不能映射问题以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。第二种情况是一个从

代谢组学技术在烟草研究中的应用进展_王小莉

2016-02,37(1)中国烟草科学 Chinese Tobacco Science 89 代谢组学技术在烟草研究中的应用进展 王小莉,付博,赵铭钦*,贺凡,王鹏泽,刘鹏飞 (河南农业大学烟草学院,国家烟草栽培生理生化研究基地,郑州 450002) 摘要:简述了作为研究植物生理生化和基因功能新方法的代谢组学在烟草研究中的主要技术流程及其应用现状,归纳了不同生态环境和不同组织中烟草代谢物差异及产生原因,总结了生物和非生物胁迫及化学诱导处理等条件下的烟草生理生化变化及相关基因功能。最后提出了目前烟草代谢组学研究所面临的问题,并指出与其他组学整合应用是代谢组学在烟草研究领域的发展趋势。 关键词:烟草;代谢组学;胁迫;化学诱导;基因功能 中图分类号:S572.01 文章编号:1007-5119(2016)01-0089-08 DOI:10.13496/j.issn.1007-5119.2016.01.016 Research of Metabolomics in Tobacco WANG Xiaoli, FU Bo, ZHAO Mingqin*, HE Fan, WANG Pengze, LIU Pengfei (College of Tobacco Science, Henan Agricultural University, National Tobacco Physiology and Biochemistry Research Center, Zhengzhou 450002, China) Abstract: Metabolomics has been considered one of the most effective means of investigating physiological and biochemical processes and gene function of plants. Here we review the main process of metabolomics and its application status in tobacco research, the regulation mechanisms of physiological and biochemical reactions when tobacco responds to different environmental, biotic and abiotic stresses, chemically induced processes and genetic modifications. Finally, issues of critical significance to current tobacco metabolomics research are discussed and it is noted that integration with other omics is the trend of metabolomics research in tobacco. Keywords: tobacco; metabolomics; stress; chemical induction; gene function 代谢组学与基因组学、转录组学和蛋白质组学分别从不同层面研究生物体对环境或基因改变的响应,它们都是系统生物学的重要组成部分。植物代谢组学是21世纪初产生的一门新学科,主要通过研究植物的次生代谢物受环境或基因扰动前后差异来研究植物代谢网络和基因功能[1-2]。与微生物和动物相比,植物的独特性在于它拥有复杂的代谢途径,目前发现的次生代谢产物达20万种以上[3]。代谢物差异是植物对基因或环境改变的最终响应[4],因此,对代谢物进行全面解析,探索相关代谢网络和基因调控机制,是从分子层面深入认识植物生命活动规律的一个重要环节[5-7]。 烟草不仅是重要的经济作物,同时还是一种重要的模式植物,作为生物反应器在研究植物遗传、发育、防御反应和转基因等领域中具有重要意义[8-10]。烟草代谢物非常丰富,目前从烟叶中已鉴定出3000多种[11],且代谢物理化性质和含量差异较大,给烟草化学及代谢规律研究带来挑战。传统的烟草化学主要集中于研究某一类化学成分或某几种重要物质,如萜类[12]、生物碱类[13]、多酚类等[14],这很难全面地系统地阐述烟草代谢网络。随着系统生物学的发展,烟草越来越广泛地被用于基因组学、转录组学、蛋白质组学和代谢组学的研究中,例如采用系统生物学的方法找出 基金项目:中国烟草总公司浓香型特色优质烟叶开发(110201101001 TS-01);上海烟草集团责任有限公司“浓香型特色优质烟叶风格定位研究及样品检测”(szbcw201201150) 作者简介:王小莉(1983-),女,博士研究生,主要从事烟草生理生化研究。E-mail:xiaoliwang325@https://www.wendangku.net/doc/568977735.html, *通信作者,E-mail:zhaomingqin@https://www.wendangku.net/doc/568977735.html, 收稿日期:2015-09-09 修回日期:2015-11-19

软件设计师面向对象方法学(一)

[模拟] 软件设计师面向对象方法学(一) 选择题 第1题: 下列关于静态多态实现重载的描述中正确的是______。 A.重载的方法(函数)的方法名(函数名)可以不同 B.重载的方法(函数)必须在返回值类型以及参数类型上有所不同 C.重载的方法(函数)必须在参数顺序或参数类型上有所不同 D.重栽的方法(函数)只需在返回值类型上有所不同 参考答案:C 第2题: 程序设计语言提供了基本类型及其相关的操作,而______则允许开发者自定义一种新的类型及其相关的操作。 A.对象 B.实例 C.类 D.引用 参考答案:C 第3题: ______表示了对象间“is-a”的关系。 A.组合 B.引用 C.聚合 D.继承 参考答案:D 第4题: 若对象A可以给对象B发送消息,那么______。 A.对象B可以看见对象A B.对象A可以看见对象B C.对象A、B相互不可见

D.对象A、B相互可见 参考答案:B 第5题: 类描述了一组对象共同的特性,下列叙述中正确的是______。 A.类本身不能具有变量 B.对象具有类定义的所有变量的一份拷贝 C.对象间不能共享类定义的变量 D.可通过类名访问静态变量(类变量) 参考答案:D (6) 反映了类间的一种层次关系,而(7) 反映了一种整体与部分的关系。 第6题: A.继承 B.组合 C.封装 D.多态 参考答案:A 第7题: A.继承 B.组合 C.封装 D.多态 参考答案:B 第8题: 下列叙述中正确的是______。 A.d西向对象程序设计语言都不支持过程化的程序设计 B.面向对象系统只可采用面向对象程序设计语言实现 C.某些过程化程序设计语言也可实现面向对象系统

面向对象方法学概述资料

9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。 9.1 面向对象方法学概述 9.1.1 面向对象方法学的要点 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。 面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。应该使这些解空间对象与问题空间对象尽可能一致。这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。

概括地说,面向对象方法具有下述4个要点: (1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传统方法的功能分解。 (2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承(inheritance)。 (4) 对象彼此之间仅能通过传递消息互相联系。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。 重点:如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。 9.1.2 面向对象方法学的优点 1. 与人类习惯的思维方法一致 2. 稳定性好 3. 可重用性好(重点) 用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。重用是提高生产率的最主要的方法。

代谢组学的定义(1)

代谢组学的定义 代谢组学(metabolomics/metabonomics)[1, 2]是上世纪90 年代中期发展起来的一门新学科,它是研究生物体系受外部刺激所产生的所有代谢产物变化的科学,所关注的是代谢循环中分子量小于1000 的小分子代谢物的变化,反映的是外界刺激或遗传修饰的细胞或组织的代谢应答变化。代谢组学的概念来源于最初人们提出的“代谢物组”(metabolome),即指某一生物或细胞所有代谢产物,后来发展为代谢组学的概念。其最主要的特征是通过高通量的实验和大规模的计算,从系统生物学的角度出发,全面地综合地考察机体的代谢变化。作为一种崭新的方法学,代谢组学已成为国际上疾病与健康研究的一个重要热点。 Nicholson 研究小组于1999 年提出了metabonomics 的概念[1],并在疾病诊断、药物筛选等方面做了大量的卓有成效的工作[3, 4]。Fiehn 等[5]提出了metabolomics 的概念,第一次把代谢产物和生物基因的功能联系起来。之后很多植物化学家开展植物代谢组学的研究,使代谢组学得到了极大的发展,形成了当前代谢组学的两大主流领域:metabolomics 和metabonomics。前者是对生物系统整体的、动态的认识(不仅关心代谢物质的整体也关注其动态变化规律),而后者强调分析且是个静态的认识概念,因此可以认为metabolomics 是metabonomics 的一个组成部分。代谢组学经过不断的发展,一些相关层次的定义已被学术界广泛接受。第一个层次为靶标分析,目标是定量分析一个靶蛋白的底物和/或产物;第二个层次为代谢轮廓分析,采用针对性的分析技术,对特定代谢过程中的结构或性质相关的预设代谢物系列进行定量测定;第三个层次为代谢指纹,定性或半定量分析细胞内外全部代谢物;第四个层次为代谢组分析,定量分析一个生物系统全部代谢物,其目前还难以实现。 目前,代谢组学已在药物毒性和机理研究[6-7]、微生物和植物研究[8,9]、疾病诊断和动物模型[10, 11]、基因功能的阐明[12]等领域获得了较广泛的应用,在中药成分的安全性评估[13]、药物代谢分析[14]、毒性基因组学[15]、营养基因组[16]、药理代谢组学[17-19]、整合药物代谢和系统毒理学[20, 21]等方面也取得了新的突破和进展代谢组学的具体研究方法是:运用核磁共振(NMR)、质谱(MS)、气质联用(GC-MS)、高效液相色谱(HPLC)等高通量、高灵敏度与高精确度的现代分析技术,通过对细胞提取物、组织提取物、生物体液(血浆、血清、尿液、胆汁、脑脊液等)和完整的脏器组织等随时间变化的代谢物浓度进行检测,结合有效的模式识别方法进行定性、定量和分类,并将这些代谢信息与生理病理过程中的生物学事件关联起来,从而了解机体生命活动的代谢过程[22]。 基于核磁共振的代谢组学 作为众多化学分析方法中的一种,NMR 在代谢组学的研究中起着非常重要的作用。首先,NMR 分析生物体液或活体组织等复杂样品时,预处理过程简单,测试手段丰富,包括液体高分辨NMR、高分辨魔角旋转(HRMAS) NMR 和活体磁共振定域谱(MRS),因此能够在最接近生理状态的条件下对不同类型的样品进行检测。其次,NMR 是一种无创性的多参数动态分析技术,同时具有定性分析和定量分析的能力;NMR 谱本身携带有丰富的分子结构和动力学信息,通过扫描生物样品可以得到其所有含NMR 可观测核的、且含量在NMR 检测限上的代谢物的特征NMR 谱。再次,NMR 检测可以在很短的时间内完成(一般5 ~ 10 分钟),这对于实现高通量样品检测,并保证样品在检测期内维持原有生化性质至关重要。此外,低温探头、自动进样技术的出现和日趋完善,也使检测灵敏度和速度不断提高。最

面向对象方法学试题及答案

C++程序设计试题(下)样卷(卷面50分) (考试用时100分钟) 一、选择题(每题1分,共5分) 1.设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是。 A.为屏幕显示和文件写入各自设计一个成员函数。 B.为屏幕显示和文件写入统一设计一个成员函数。 C.重载插入运算符(<<)。 D.重载提取运算符(>>)。 2.关于异常处理,那些说法是错误的。 A.在C++程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。 B.当抛出异常后,寻找匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(Stack Unwinding)。 C.当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。 D.catch子句实际是一个特殊的函数。 3.下列关于动态资源分配的说法中错误的是。 A.动态分配的资源不仅包括内存,还包括文件。 B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。C.动态分配的资源通常要求在析构函数中释放。 D.对含有动态分配的数据成员的类对象应该采用深复制。 4.下列有关模板的描述那些是错误的。 A.模板把数据类型作为一个设计参数,称为参数化程序设计。 B.模板参数除模板类型参数外,还有非类型参数。 C.类模板与模板类是同一概念。 D.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。 5.关于多态,下面那些说法是正确的。 A.多态分静态的(编译时)和动态的(运行时)。 B.运行时的多态与类的层次结构有关。 C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。 二、填空题(每空0.5分,共5分) 1.有标准字符串类string对象str,str1,str2。对其字符元素的访问可用两种方式:str[i]和str.at(i)。两者的区别是(1)。str1+=str2 实现的运算是(2)。str.substr(pos,length1) 实现的运算是(3)。

面向对象方法的发展历史

面向对象方法的发展历史 (一)80年代面向对象的方法已成为新趋势 在五年之内方法论从5种开发到50种以上,面向对象最早开始提到的概念是在1986年,一开始就有五、六种不同的方法论,但在五年之内,它就开发到50多家,所以开发速度是很快的。 布什(Booch),面向对象软件工程在这些方法之中居于领导地位。比较出名的Booch 方法由布什所发明;OMT由詹姆斯、云豹(James Rumbaugh)所发明;00SE由雅寇森(Jacobson)所发明。 另外的方法如:尤顿(coad-Yoadon),雪梨、米勒(Shlaer-Mellor)等各种不同方法。(二)不同的总是表面 在共同的想法上集中收敛,因为各家所提出的方法都很多,大家当然要大战一场。每一个人都说大话,说他们自己的最好,但事实上如果看到他们的本质,很多的方法都是相同的,性质也相似。 不同的是记号法和术语,不同的不是它的设计结构,而是所用的语言、术语,还有它的记号法,这种情形,在沟通上可能会产生一些问题。基本上创造软件的语言,如果说术语不同的话,就没有办法沟通,但是剥开语言的层次看,它的实质都是相同的,逻辑设计概念都是相似的,所以这方面倒是非常相近。 (三)实际工程展示的工作与早期的方法经验有关 所以大家都说他们是最好的,到底谁是最好的,就是看他实际应用的经验,经验越多,它能够被使用的次数越多,那就证明它越好用。 (四)OMT分析与设计过程 1、对象模型、动态模型和功能模型各自呈现对系统的观点,彼此间又相互关联。 2、对象模型提供动态及功能模型运算操作所需的数据结构; 3、动态模型描述对象的控制结构; 4、功能模型描述那些被对象模型的“运算”及动态模型的“操作”所调用的功能。(五)OMT系统分析方法 1、分析的过程,并不—定是循序渐进的。尤其是复杂的系统,通常要经过许多次反复的分析,才能建立完整的模型; 2、对象模型显示出系统静态的数据结构,在建立对象模型时,须从该系统的问题描述及它所牵涉的领域范围来考虑; 3、动态模型显示系统受时间影响所产生的动态行为。开始分析动态模型时必须找出事件,然后将影响每个对象的事件串行起来,用状态图表示出来; 4、功能模型显示系统内数据转换的情形,功能模型是绘制多个数据流程图的集合; 5、系统分析的工作并不是简单地一次就能完成,通常要经过许多次反复的修正才能完成。在完成分析工作之后,必须再与用户做核对,以确保分析的结果与系统的问题描述相符合,否则修正的工作必须重复进行,直到两者符合为止。 6、分析的过程,并不—定是循序渐进的。尤其是复杂的系统,通常要经过许多次反复的分析,才能建立完整的模型。 (六)BOOCH面向对象开发模型 1、逻辑模型:描述关键抽象与机制的意义,以定义系统结构成问题描述 2、实体模型:从软硬件的角度来描述系统的概观或设置 3、静态模型:描述对象类的属性、关系的静态方面 4、动态模型:表现对象类间的互动关系

4面向对象方法学

第 1 页 第四讲 面向对象方法学 生命周期方法学回顾 1、 生命周期方法学的特点 生命周期方法学是一种传统的软件工程方法学,其主要特点是: 严格的分阶段计划 以时间分解为基础来控制和管理整个软件开发过程的,将软件开发过程划分为许多首尾相接、相互独立的阶段。 “瀑布式”开发模式 软件开发阶段在时间上严格地实施顺序,不能反复。每个阶段完成后才进行下一个阶段的工作,并且前一个阶段的成果作为下一个阶段工作开始的依据。 严格的技术审查和管理复审 在软件开发的每一个阶段结束后,进行严格的技术审查和管理复审,排除所有潜在的错误,保证瀑布模型的实施,并从成本和进度上管理和控制软件开发。 结构化技术 结构化技术内涵为“自上而下,逐步求精”,生命周期方法学在各个阶段采用结构化技术,包括结构化分析、结构化设计、结构化程序设计等。 从以上特点可以看出,生命周期方法学是以软件功能为基础来进行软件开发的,面向的软件实体由一段段可执行的程序代码组成,并以模块作为基本的软件结构体,可以由程序代码的运行来实现所需的软件功能,满足用户的需求。 也正是由于生命周期方法学的以上特点,使得它在软件工程实践中也暴露出 了许多问题: 对功能需求分析的依赖 生命周期方法学的软件开发成果对于功能需求分析有很强的依赖性,要求需求分析阶段的结果一定要全面、准确、清晰,不能有任何错误或模糊的东西。而一旦对需求分析中确定的需求进行了任何改变,都会直接影响到整个软件的设计和实现,对软件进行的修改要付出很大的代价。 但是在实际操作过程中,一方面用户很难一次性地写出既完善又正确无误的功能要求,另一方面所确定的功能要求,又有可能随着时间的变化或者用户对系统理解的逐步深入发生变化。这种软件功能需求的变化在实际软件项目的开发过程中是不可避免和屡见不鲜的,但它对生命周期方法学来说又是灾难性的,这使 得生命周期方法学在软件开发实践中往往处于被动的地位。 软件重用性差 如果某个软件开发中的成果不能够保存下来,并且在其它软件的开发过程中得到应用,那么对于软件开发的生产力来说,就是一种极大的浪费。使软件开发中产生的成果能够被别的软件项目所利用,称为软件的重用性。 在生命周期方法学中,对软件进行模块划分,是致力于提高软件重用性的一种努力。软件模块具有相对独立的功能,能够完成对信息的某一种处理,因此理论上可以被别的用到相同功能的软件所使用。但各种不同的软件系统中,完全相同的功能是很难见到的,总会因为数据类型、处理细节、允许范围等等原因存在

面向对象方法学大作业(学生成绩管理系统)

1.数据库 1.1.表:Scores 注:学号格式为01070833,专业+年份+班级+序号。 2.SSMS(Students` Scores Management System)程序结构 2.1.Model层 Scores.java 类型:类 作用:对象实体的持久化类。 2.2.Dao层 ScoresDao.java 类型:接口 作用:数据库连接层的接口类。 ScoresDaoImpl.java 类型:类 作用:数据库连接层接口类的实现类。 ScoresDao.xml

类型:XML文件 作用:负责与数据库交互的SQL语句的存放。 2.3.Service层 SSMSService.java 类型:接口 作用:业务逻辑层的接口类。 SSMSServiceImpl.java 类型:类 作用:业务逻辑层接口类的实现类。 2.4.Action层 SSMSAction.java 类型:类 作用:接收用户从页面上传递回来的信息,并传递到业务逻辑层。 2.5.Web页面 Index.jsp 类型:JSP页面 作用:负责给用户展示的页面。 2.6.Spring配置文件 applicationContext.xml 类型:XML文件 作用:负责Spring参数的配置。 2.7.Struts配置文件 struts-config.xml 类型:XML文件

作用:负责Struts参数的配置。 3.UML用例图 4.设计说明 4.1.添加学生成绩 4.1.1.类图

4.1.2.时序图 4.2.编辑学生成绩4.2.1.类图 Scores -----StuId StuName ObjSco1 ObjSco2 ObjSco3 : String : String : int : int : int +Add () ... : ActionForm SSMSServiceImpl +Add () ... : int ScoresDaoImpl +Add () ... : int ScoresDao +Add () ... : int SSMSService +Add () ... : int

面向对象程序设计教程 答案

面向对象程序设计教程(C++语言描述)题解及课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成 一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。 (3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。 (4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。

(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )及外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象及对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++及C语言的关系的描述中,( D )是错误的。 A. C语言是C++的一个子集 B. C语言及C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构及( A )放在一起,作为一个相互依存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象

相关文档