UML中扩展与泛化的区别

UML中扩展和泛化的区别

 

用例图:

用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图包含了用例和参与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。


用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。从原则上来讲,用例之间都是独立、并列的,它们之间并不存在着包含从属关系。但是为了体现一些用例之间的业务关系,提高可维护性和一致性,用例之间可以抽象出包含(include)、扩展(extend)和泛 (generalization)几种关系。

共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。



1、包含(include)

 

    包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。

   包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。 

   例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。


UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客

2、扩展(extend)

扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。

对于一个扩展用例,可以在基用例上有几个扩展点。   

例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:


UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客


4、泛化(generalization)

 

泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:


UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客

    上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。

    *****************************************************************

    (1)系统整体用例图

    UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客


   
    (商品用例图)

   
   UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客
    
   
   
   (购买信息用例)
  
   UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客

   
    (用户资料用例)


   

 

 

 

         泛化表示类似于OO术语“继承”或“多态”。UML中的Use Case泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下:
          ●泛化侧重表示子用例间的互斥性;
          ●包含侧重表示被包含用例对Actor提供服务的间接性;
          ●扩展侧重表示扩展用例的触发不定性;详述如下:


        既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:
         ⒈无条件发生:肯定发生的;
         ⒉有条件发生:未必发生,发生与否取决于系统状态;

         因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。进一步,用例的存在是为Actor提供服 务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。同样,扩展用例提供的也是直接服务,但扩展用例的发生是有条件的。

         另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。

UML用例图四大关系详解:关联、包含、扩展与泛化的核心区别与应用 在软件工程和系统分析中,统一建模语言(UML)是描述系统功能需求与交互的核心工具。用例图作为UML的重要组成部分,其价值在于通过可视化方式界定系统边界,并明确参与者与功能单元之间的关系。理解用例图的核心在于掌握其四种基本关系:关联、包含、扩展和泛化。关联关系定义了参与者与用例之间的基础通信路径,是交互的起点。包含关系则描述了用例之间强制的、无条件的执行依赖,类似于编程中的函数调用,用于实现功能复用和复杂用例分解。扩展关系引入了灵活性和可维护性,它允许在特定条件下向基础用例注入可选的行为片段,常用于处理像优惠 阅读详情

相关推荐

【软考笔记——软件设计师】(六) UML上午题总结 & UML 下午题试题三

强调时间顺序交互对象的关系。 @[toc] # UML 上午 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0d3c9fba95214b08889ffda5cf02d122.png) # UML事物 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c352eb3470ea4599be5962e241fc879f.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2f3c4f74071741a1

Remember who you are! 5354

用例图 泛化和扩展的区别

泛化表示类似于OO术语“继承”。UML中的Use Case泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下:          ●泛化侧重表示子用例间的互斥性;          ●包含侧重表示被包含用例对Actor提供服务的间接性;          ●扩展侧重表示扩展用例的触发不定性;详述如下:        既然用例是系统提供服务的UML表述,那么服

zzycgfans的blog 5577

解释UML用例图中包含,扩展、泛化的区别.doc

解释UML用例图中包含,扩展、泛化的区别.doc 解释UML用例图中包含,扩展、泛化的区别.doc

包含、扩展、泛化的区别

包含include(常用语用例图中) 形式:           A《include》>b 箭头指向: A基础用例 指向 B抽象用例(即父类指向子类) A、B区别:当多个用例中用到多个相同的事件流时,把这些事件流抽象出来就形成了抽象用例(提高复用性,就像提                    取公因式一样),原始用例为基础用例;                    A的实现必须要借

王如霜 2万+

o型圈沟槽设计_O型密封圈——详细选型过程及步骤

一、密封圈常用材料二、密封圈常用密封形式密封圈分为活塞密封,活塞杆密封,端面密封,旋转密封。三、O型密封圈的选型规则O型密封圈的尺寸图径向安装O型圈选型(静态和动态运动)活塞杆密封选择适当规格的O形圈时,应该保证其外径(d1+2*d2)至少等于或者大于沟槽外径d6;当选择的O形圈直径d1大于250 mm时, O形圈外径将不能超过沟槽外径的3%;当选择的O形圈直径d1小于250mm时, O形圈外径将...

weixin_39856630的博客 2万+

基于STM32的便携式心率血氧监测系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了便携式心率血氧监测系统的全功能开发,覆盖MAX30102光电传感器驱动、PPG信号处理、心率血氧解算算法、人机交互、数据存储、报警保护、低功耗管理等核心功能,全程采用无跳步保姆式教学,从硬件选型、接线、CubeMX配置、代码开发、调试优化全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 768

用例图包含关系、扩展关系、泛化关系解析

一、用例图中的各种关系 a)参与者与用例间的关联关系:参与者与用例之间的通信,也成为关联或通信关系。 b)用例与用例之间的关系:包含关系(include)、扩展关系(extend)、泛化关系。 1.包含关系 包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。表示符号:<<include>> ...

物联网研究室BBC的博客 2万+

Computers & Security 投稿实战:从零到一详解避坑指南

本文详细解析了向《Computers & Security》投稿的全流程避坑指南,包括ORCID账号注册、文件格式统一、Editorial Manager®系统操作技巧等关键步骤。特别强调了cover letter撰写、Declaration of Interest Statement准备以及PDF生成后的检查要点,帮助研究者高效完成投稿流程。

weixin_29228203的博客 675

UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解

委托扩展的两种方式: 包含关系:使用包含(include)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用,做基用例的时候,必然会做它所包含的事件。 扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中,做基事件之后,我可

cxzhq2002的杂记 5832

408计算机复试专业课问答汇总

408计算机复试专业课问答汇总

weixin_45930223的博客 3699

ADAS方案设计-CAN网络管理与休眠唤醒机制

文章摘要:本文介绍了车载控制系统的五种工作模式及其转换条件,包括睡眠模式、准备睡眠模式、就绪睡眠模式、正常工作模式和重复消息状态。系统唤醒条件包括接收到网络管理报文或电源ON档信号,休眠条件则需满足电源OFF档、功能完成等多重要求。针对下挂节点的网络管理报文发送规则,详细说明了不同状态下的报文发送策略,特别是在哨兵模式、OTA模式等特殊场景下的处理方式。系统在满足休眠条件后会立即停止发送下挂节点网络管理报文,确保电源管理的有效性。

xiandang8023的博客 325

软考之UML用例图中包含、扩展和泛化的区别

在软考复习下午题的时候,涉及UML图时会有一个知识点就是用例图中包含、扩展和泛化的区别。这里我们就来总结一下。 1、包含<<include>> 2、扩展<<extend>> 3、泛化<<generalization>>

不忘初心 1万+

华为OD机试真题 新系统 2026-09-06 Python&JS【仓储货物有序出库】

某仓储中心有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货,管理员需要将货物按编号从小到大取出。

MISAYAONE的博客 116

UML中扩展和泛化的区别

泛化表示类似于OO术语“继承”或“多态”。UML中的Use Case泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下: ●泛化侧重表示子用例间的互斥性; ●包含侧重表示被包含用例对Actor提供服务的间接性; ●扩展侧重表示扩展用例的触发不定性;...

weixin_30546189的博客 149

CMOS图像传感器——工作原理

CMOS图像传感器的曝光与读出

沧海一升的博客 9460

LVGL iPhone Duo 开合过渡

环境:LVGL 9.x(需要软件模糊),窗口建议 1280×800。界面文案英文(默认 Montserrat 无 CJK)。

摸鱼专家 151

uml用例图中包含扩展泛化的区别,剪头方向,详细举例说明

• 本质:有条件扩展,基础用例可独立运行,扩展用例仅在特定条件下触发(类似插件功能)。• 本质:强制性依赖,基础用例必须调用被包含用例(类似函数调用)[1][3]。• 箭头方向:从扩展用例指向基础用例(虚线箭头 +<>+ 标注扩展条件)。• 箭头方向:从基础用例指向被包含用例(虚线箭头 +<>)。• 触发条件:无条件触发,基础用例执行时必然执行被包含用例。•*** 包含指向“零件”(基础用例依赖被包含用例)***;•*** 扩展指向“本体”(扩展用例依附基础用例)***;• 子用例:微信支付、信用卡支付。

slty_123的博客 1287

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

软件需求分析——UML用例图

前言:UML是 Unified Modeling language 的缩写,是一种统一建模语言,主要在软件需求分析与设计阶段使用。UML一共包括9个图,分别是用例图、类图、对象图、序列图、协作图、状态图、活动图、构件图、部署图。本篇仅讨论用例图,后续再慢慢补充。 用例图: 1、定义:由参与者(actor)、用例(use case)、边界以及它们之间的关系构成的用于描述系统功能的视图。用...

wr98442878的博客 3万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

UML图中用例图中的包含关系与扩展关系与泛化关系的区别是什么,举例说明

在UML用例图中,包含(Include)、扩展(Extend)和泛化(Generalization)是三种重要的关系类型,用于描述用例之间的交互逻辑。逻辑:支付订单是通用行为,微信支付/信用卡支付是具体实现方式(用户选择其中一种执行)。依赖方向 基础用例→被包含用例 扩展用例→基础用例 子用例→父用例。扫码支付和银行卡支付是支付的具体实现方式(用户二选一)。A[取款] -->|<>| B[验证身份]A -->|<>| C[打印凭条]E[支付] --> F[扫码支付]• 子用例:微信支付、信用卡支付。

slty_123的博客 1197

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UML用例图之关联关系、包含关系、扩展关系、泛化关系详解

目录UML定义UML图用例图定义用例图中的事物用例图中的关系关联关系包含关系特点使用场景扩展关系特点使用场景泛化关系特点使用场景 UML定义 UML(Unified Modeling Language,统一建模语言),是一种面向对象的建模语言。它的主要作用是通过提供模型图帮助用户对软件系统进行面向对象的描述和建模,它可以描述这个软件开发过程从需求分析直到实现和测试的全过程。 UML图 用例图定义 从系统的使用者的角度所理解的系统的总体功能。强调这个系统是什么而不是这个系统怎么工作。 建立于系统需求阶段,

weixin_43514899的博客 5万+

UML用例图实战:5分钟搞懂泛化、包含、扩展关系的区别与应用场景

本文通过在线课程平台、机房收费系统等实战案例,深入解析UML用例图中泛化、包含、扩展三种核心关系的区别与应用场景。文章提供了清晰的判断逻辑和对比表格,帮助读者在5分钟内掌握如何根据功能间的逻辑联系(如“父子传承”、“必选步骤”、“可选插件”)准确选择和使用这些关系,从而绘制出逻辑清晰、易于理解的系统用例图。

cc789的博客 440

UML用例图中泛化,继承等的区别

UML用例图中包含(include)、扩展(extend)和泛化区别   (2010-04-12 21:40:23) 转载▼ 标签:  uml   include   extend   泛化   扩展   包含   杂谈   a include b 表示 b是a中执行不可缺少的

忆凌波的专栏 8278

UML用例图中的包含、扩展和泛化

UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解 共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。 1、包含(include)       包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便

ithouse的专栏 1139

用例的泛化,包含,扩展关系的比较

一般来说可以用is a和has a来判断使用哪种关系。泛化关系和扩展关系表示的是用例之间的is a关系,包含关系表示的是用例之间的has a关系。扩展关系和泛化关系相比,多了扩展点的概念,也就是说,一个扩展用例只能在基本用例的扩展点上进行扩展。在扩展关系中,基本用例是一个well formed的用例,即是可以独立存在的用例。一个基本用例执行时,可以执行,也可以不执行扩展部分。在包含关系中,基本用例

angelfallen的专栏 6635
上一篇: BlockingQueue C++实现
下一篇: 为什么linux下多线程编程,每次执行结果都不一样
sipsipsip
博客等级 码龄19年 7粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值