精华内容
下载资源
问答
  • 用例元素包括参与者和用例,用例间的关系主要是:继承关系、扩展关系包含关系,这里比较难区分的的是扩展关系包含关系,比较容易混淆,分析整理一下。 【知识点】 扩展关系(Extend):当某个新用例在原来的...

    用例图(Use Case Diagram)是从用户的角度描述系统的功能,并指出各功能的操作者,主要作用有3个:获取需求、指导测试、在整个过程中的其他工作流中期指导作用。用例元素包括参与者和用例,用例间的关系主要是:继承关系、扩展关系和包含关系,这里比较难区分的的是扩展关系和包含关系,比较容易混淆,分析整理一下。

    【知识点】

             扩展关系(Extend):当某个新用例在原来的用例基础上增加了新的步骤序列,则原来用例被称为基用例,这种关系称为扩展关系,可以这样理解这里的基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能,只有当扩展点被激活时,子用例才会被执行。由子用例指向基用例,比如说充值金额查询用例中有导出Excel子用例,离开子用例不影响充值金额查询的功能,这就是扩展关系。

            包含关系(include):几个用例可以提取他们共用的用例作为子用例,使其成为自己行为的一部分,因为子用例被提出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。由基用例指向子用例,比如几个用例都要用到登录子用例,登录作为子用例没有它的参与,其他用例也无法执行,这就是包含关系。

            比较:容易混淆的原因在于不理解扩展和包含的含义,所谓扩展是从基用例的基础上扩展出新的功能(子用例),子用例不影响基用例,基用例本身是完整的,没有子用例的参与也可以完成自己的功能,而包含关系是提取出来的用例是基用例的一部分基用例和子用例必须一起使用才完整。二者的关键在于离开子用例,基用例是否可以完成一个完整的功能。

           如图:

     

    展开全文
  • 包含关系:通常是指一个大的用例包含了几个小的用例,几个小的用例组成一个大的用例; 扩展关系:两个独立的用例,完成一个后可以开启另一个,两个用例本身都是独立的。 例如:用户管理的用例包括用户添加和用户...
    包含关系:通常是指一个大的用例包含了几个小的用例,几个小的用例组成一个大的用例; 

    扩展关系:两个独立的用例,完成一个后可以开启另一个,两个用例本身都是独立的。 

    例如:用户管理的用例包括用户添加和用户删除;用户登陆用例后可以进行用例退出。
    展开全文
  • 关系,关系模式,关系模型区别和联系

    万次阅读 多人点赞 2019-12-18 09:40:11
    关系关系模式的区别 关系模式是型,关系是值,关系模式是对关系的描述 关系关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的...
    1. 关系:一个关系对应通常说的一张表
    2. 关系模式:关系的描述
    3. 关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成.
    4. 关系和关系模式的区别
      1. 关系模式是型,关系是值,关系模式是对关系的描述
      2. 关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据
      3. 类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。
    5. 关系模型和关系的区别
      • 关系模型包含关系,关系是关系模型的数据结构,在关系模型中,现实世界的实体以及实体间的各级联系均用单一的结构类型,即关系来表示
    展开全文
  • 、两个参与者之间可以有包含关系、扩展关系或泛化关系,而包含关系和扩展关系是依赖关系的版型
  • 私有继承和包含关系区别

    千次阅读 2014-07-17 17:45:24
    首先,来看两种类的定义: 这是包含

    首先,来看两种类的定义:

    这是包含:

    class Student
    {
    private:
    	typedef std::valarray<double> ArrayDb;
    	std::string name;
    	ArrayDb scores;
    	std::ostream & arr_out(std::ostream & os)const;
    public:
    	Student():name("Null Student"),scores(){}
    	explicit Student(const std::string & os):name(os),scores(){}
    	explicit Student(int n):name("Nully"),scores(n){}
    	Student(const std::string &s,int n):name(s),scores(n){}
    	Student(const std::string &s,const ArrayDb &a):name(s),scores(a){}
    	Student(const char *str,const double *pd,int n):name(str),scores(pd,n){}
    	~Student(){}
    	double Average()const;
    	const std::string &Name()const;
    	double &operator[](int i);
    	double &operator[](int i)const;
    
    	friend std::istream & operator >>(std::istream &is,Student &stu);
    	friend std::istream & getline(std::istream & is,Student & stu);
    	friend std::ostream & operator<<(std::ostream & os,const Student & stu);
    };

    这是私有继承的:

    class Student:private std::string,private std::valarray<double>
    {
    private:
    	typedef std::valarray<double> ArrayDb;
    	std::ostream & arr_out(std::ostream & os)const;
    public:
    	Student():std::string("Null Student"),ArrayDb(){}
    	explicit Student(const std::string &s):std::string(s),ArrayDb(){}
    	explicit Student(int n):std::string("Nully"),ArrayDb(n){}
    	Student(const std::string & s, int n):std::string(s),ArrayDb(n){}
    	Student(const std::string &s,const ArrayDb & a):std::string(s),ArrayDb(a){}
    	Student(const char * str,const double * pd,int n):std::string (str),ArrayDb(pd,n){}
    	~Student(){}
    	double Average()const;
    	double & operator[](int i);
    	double & operator[](int i)const;
    	const std::string & Name()const;
    
    	friend std::istream & operator>>(std::istream & is,Student & stu);
    	friend std::istream & getline(std::istream & is,Student & stu);
    	friend std::ostream & operator<<(std::ostream & os,const Student & stu);
    	
    };
    使用私有继承,雷将继承实现。例如,从String类派生出Student类,后者将有一个String类组件,可用于保存字符串。另外,Student方法可以使用String方法来访问string组件。

    包含将对象作为一个命名的成员对象添加到类中,而私有继承将对象作为一个未被命名的继承对象添加到类中。

    因此,私有继承提供的特性与包含相同:获得实现,但不获得接口。所以,私有继承也可以用来实现has-a关系。

    在私有继承重新定义Student类中,新的累不需要私有数据,因为两个基类已经提供了所需要的所有的数据成员。包含版本提供了两个被显式命名的对象成员,而私有继承提供了两个无名称的子对象成员。这事两种方法的第一个主要区别。

    由于包含显式的命名了数据成员name,因此可以这样定义构造函数:

    Student(const std::string &s,const ArrayDb &a):name(s),scores(a){}
    但是对于私有继承来说,只能这样来定义:

    Student(const std::string & s, int n):std::string(s),ArrayDb(n){}
    这是两者的第二个区别。

    对于访问基类的方法时,包含是这样定义的:

    double Student::Average()const
    {
    	if(scores.size()>0)
    		return scores.sum()/scores.size();
    	else
    		return 0;
    }
    而私有继承和它差不多,只不过由于没有了显式定义的数据成员,因此定义如下:

    double Student::Average()const
    {
    	if(ArrayDb::size()>0)
    		return ArrayDb::sum()/ArrayDb::size();
    	else
    		return 0;
    }
    从上面的例子,可以很明显的看出,使用包含试将使用对象名来调用方法,而使用私有继承将使用类名和作用域解析运算符来调用方法。

    对于访问基类对象时:

    使用作用域解析运算符可以访问基类的方法,但如果要使用基类对象本身,该如何做呢?例如,Student类的包含版本实现了Name()方法,它返回string对象成员name;但使用私有继承时,该string对象没有名称,那么,Student类的代码如何访问内部string对象呢?

    答案是使用强制类型转换。由于Student类是从string类派生而来的,因此可以通过强制转换,将Student对象转换为string对象;结果为继承而来的string对象。我前面介绍过,指针this指向用来调用方法的对象,因此*this为用来调用方法的对象,在这个例子中,为类型为Student的对象。为了避免调用构造函数创建新的对象,可使用强制类型转换来创造一个引用:

    <span style="font-family:SimSun;">const string & Student::Name()const
    {
    <span style="white-space:pre">	</span>return (const string &) *this;
    }</span>
    上述方法返回一个引用,该引用指向用于调用该方法的Student对象中的继承而来的string对象。

    访问基类的友元函数:

    用类名显式的限定函数名不适合于友元函数,这事因为友元函数不属于类。然而,可以通过显式地转换为基类来调用正确的函数。例如:

    <span style="font-family:SimSun;">ostream & operator<<(ostream & os,const student & stu)
    { 
      os<<"scores for "<<(const string &)stu<<":/n";
      ... 
    }</span>
    如果plato是一个student对象,则cout<<plato;将调用上述函数,stu将是指向plato的引用,而os将是指向cout的引用。下面的代码:
    <span style="font-family:SimSun;font-size:10px;">os<<"scores for "<<(const string &)stu<<":/n";</span>
    显示地将stu转换为string对象引用,这与operator<<(ostream &,const string &)函数匹配。

    引用stu不会自动的转换为string引用。根本原因在于,在私有继承中,在不进行显示类型转换的情况下,不能将指向派生类的引用或指针赋给基类引用或指针。

    (即使这个例子中使用的是公有继承,也必须使用显示类型转换。原因之一是,如果不使用类型转换,代码(so<<stu)将与友元函数原型匹配,从而导致递归调用。另一个原因是,该类使用多重继承,编译器无法确定应该转换成那个基类,如果两个基类都提供了函数operator<<()的话。)

    那么,使用包含还是私有继承呢?

    对于使用包含来说,它易于理解。类声明中包含表示被包含类的显示命名对象,代码可以通过名称引用这些对象,而使用继承将使关系更抽象。其次,继承会引起许多问题,尤其从多个基类继承时,可能必须处理许多问题,例如包含同名方法的独立的基类,或共享祖先的独立基类。而使用包含则不大可能会遇到这样的麻烦。另外,包含能够包括多个同类的子对象。如果某个类需要3个string对象,可以使用包含声明3个独立的string成员。而继承则只能使用一个这样的对象(当对象都没有名称时,将难以区分)。
        但私有继承所提供的特性却比包含多。例如,假设类包含保护成员(可以是数据成员,也可以是成员函数),则这样的成员在派生类中是可用的,但在继承层次结构外是不可用的。如果使用组合将这样的类包含在另一个类中,则后者将不是派生类,而是位于继承层次结构之外,因此不能访问保护成员。但通过继承得到的将是派生类,因此它能够访问保护成员。
        另一种需要使用私有继承的情况是需要重新定义虚函数。派生类可以重新定义虚函数,但包含类不能。使用私有继承,重新定义的函数将只能在类中使用,而不是公有的。

    通常,使用包含来建立has-a关系;如果新类需要访问原有类的保护成员,或需要重新定义虚函数,则应使用私有继承。






    展开全文
  • 在软件工程中的UML那一块知识有一个知识点就是包含和扩展关系很容易混淆,所以今天特此记下二者的区别方便自己以后学习以及理解。以下面例子为例: 如图所示: >登记外借信息与用户登录属于包含关系(include),...
  • 目录UML定义UML图用例图定义用例图中的事物用例图中的关系关联关系包含关系特点使用场景扩展关系特点使用场景泛化关系特点使用场景 UML定义 UML(Unified Modeling Language,统一建模语言),是一种面向对象的建模...
  • 正在学习uml,在网上找了这篇文章学习类之间的关系,虽然作者讲的已经很清楚,但我还是不能完全弄清楚他们之间的区别,尤其是关联、聚合、组合这三者的关系!!现在把这篇文章转载这里一遍深入了解 类之间的关系 1...
  • 一、哈斯图示例 ( 整除关系 ) 、 二、哈斯图示例 ( 包含关系 ) 、 三、哈斯图示例 ( 加细关系 ) 、
  • 包含(include)、扩展(extend)和泛化(generalization)关系区别  (2011-04-13 11:47:05) 转载▼   共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的...
  • Java-类与类之间的关系之包含类与类之间的关系包含 类与类之间的关系 类与类之间的关系有三种: A is- a B 泛化 (继承 实现) A has-a B 包含 (组合 聚合 关联) A use-a B 依赖 (依赖) 包含 包含关系表现形式...
  • 关系表与非关系表的区别

    千次阅读 2016-06-01 15:49:18
    实体(记录),意为对于用户来说非常重要、需要在数据库中表示的内容,关系表:数据以关系(relation)的形式来存储,具有以下特征: 1、表的每行存储了某个实体或实体某个部分的数据。 2、表的每列包含了用于表示实体...
  • 关系型数据库和非关系型数据库的区别

    千次阅读 多人点赞 2019-06-06 23:52:16
    而我们今天就来了解一下关系型数据库与非关系型数据库的区别关系型数据库就是指那种采用了关系模型来组织数据的数据库。 各种表之间有各种各样的联系,从而组成的一个数据组织。 非关系型数据库是指一般不遵循...
  • 偏序关系与全序关系区别

    千次阅读 2013-06-27 22:29:06
    偏序只对部分元素成立关系R,全序...集合的包含关系就是半序,也就是偏序,因为两个集合可以互不包含; 而实数中的大小关系是全序,两个实数必有一个大于等于另一个; 又如:复数中的大小就是半序,虚数不能比较大小。
  • 一、关系型数据库  关系型数据库,是指采用了关系模型来组织数据的数据库。  关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库...
  • 依赖关系和关联关系区别

    千次阅读 2011-05-12 10:25:00
    依赖关系、关联关系
  • CGI、FastCGI和PHP-FPM区别关系详解(包含图解) 转载至:https://www.awaimai.com/371.html 在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM、FastCGI和CGI 这几个概念。如果对它们一知半解,很难搭建出高性能的...
  • 本文和大家重点讨论一下UML类图关系方面的内容,UML类图关系主要有关联,聚合/组合,依赖,泛化等几种,这里向大家介绍一下关联,聚合和依赖这三种关系及其区别。 UML类图关系 1、关联 双向关联: C1-C2:指双方...
  • 关系型模型与非关系模型的区别 ** 数据模型 数据模分为两类 : 1.概念模型:也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。 2.逻辑模型和物理模型 逻辑模型 物理模型 层次模型、...
  • NULL 博文链接:https://lionkingzw-hotmail-com.iteye.com/blog/341279
  • CentOS 与 RedHat 关系区别

    千次阅读 2018-03-13 16:44:02
     两者关系  Linux 是开源系统,这个大家都知道。Red Hat 公司是世界上大名鼎鼎的 Linux 系统开发公司,在其 Linux 发行版中大多数软件包,都是基于 GPL 协议发布的,也就是我们常说的开源软件,正因为是这样,Red ...
  • 在学校里学了这些知识,并没有时间思考这些之间概念之间的区别,一直注重渴望技术的提升,却忘了这些基础才是根本。蹭着在家的这一段时间,准备好好梳理一下之间的关系,这是一个宏大的框架,写下这些,也是因为在...
  • 一、关系型数据库 &nbsp;&nbsp;&nbsp; 关系型数据库,是指采用了关系模型来组织数据的数据库。 &nbsp;&nbsp;&nbsp; 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几...
  • JDK和JRE有什么关系区别

    千次阅读 2020-07-16 16:12:37
    JDK和JRE有什么关系区别 ​ 总体而言两者是包含与被包含关系,JDK中包含JRE JRE是什么 JRE是Java runtime environment的缩写,翻译过来就是Java运行环境,也就是说如果你的设备上想要运行一个java程序,你的设备中就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 886,215
精华内容 354,486
关键字:

关系包含区别吗