【学习小记】UML——组件图

1 篇文章 0 订阅
1 篇文章 0 订阅

组件图(Component Diagram)

组件图(component Diagram),又称构件图。组件图的主要目的是显示系统组件间的结构关系。

组件图对于不同的小组是有用的交流工具。


组件表示封装了其内容的系统模块,通过所提供的和所需要的接口定义其行为。

组件(构件)是系统中可替换的物理部分,它包装了实现,而且遵从并提供一组外部接口。

(例如:JavaBean、JSP、DLL、EXE、COM、ActiveX控件等)


在面向对象软件开发中,类是最为基础的“模块化”元素,它封装了属性和成员方法。


组件和类在某些方面存在相似之处,例如,都封装方法,对外提供接口,都是模块化的单元块等。

组件与类的区别:

1、类表示的是逻辑的抽象,而组件是存在于计算机中的物理抽象。其表现为组件是可以部署的,而类是不可以被部署的。

2、组件表示的是物理模块,与类处于不同的抽象级别。(组件的粒度粗,类的粒度细。可以认为组件是由一组类与协作组成的。)

3、类可以直接拥有操作和属性,而组件仅仅拥有可以通过接口访问的操作。


使用UML组件图,是为了强调:

1、接口是重要的;

2、他是自包容和可替换的模块(组件是相对独立的模块,几乎很少或不依赖于其他外部元素);


组件的要素:

1、规格说明:一个组件所提供服务的抽象描述。(每个组件都必须提供特定的服务)

2、一个或多个实现:组件是一种物理概念,它必须被一个或多个实现所支持。

3、受约束的构造标准:每一个组件在实现时必须遵从某种构造标准。

4、封装方法:组件遵从的封装方法。

5、部署方法:组件要运行,必须先部署,一个组件可以有多个部署。


组件图的表示







实例绘制组件图

要求画出下列描述的网上商城件图:系统涉及购物车订单库存支付管理组件,用组件图描述Component之间的约束关系。


绘制组件图的第一步是要先识别组件,从题目的描述中,可以很简单地发现涉及的组件有:购物车、订单、库存、支付管理四个组件。


第二步是要识别这些组件之间的联系。我们通过天猫的一个实际购物流程为例,来发现组件之间存在的关系。


在购买一件商品时,我们首先是浏览该商品,了解商品详情。在商品详情页面上,我们可以看到一个“加入购物车”的按钮,点击之后,所浏览的商品即可加入我们的购物车。因此,购物车组件必须对外提供一个“加入购物车”的接口。


当我们进入购物车查看购物车里的商品时,会看到页面里有一个商品数量的选项。在这里可以增加或减少商品的数量。但增加数量的上限不能超过该商品的库存,由此,可以知道购物车需要知道商品的库存信息,也即,库存组件必须给购物车提供一个“查询商品库存”的接口。在该页面中,还有一个“结算”的按钮,点击之后,我们会进入订单的页面。由此,订单组件必须对购物车提供一个“生成订单”的接口。


进入订单页面后,可以看到有一个“提交订单”的按钮,点击之后进入支付管理的页面。由此,支付管理组件必须对订单组件提供一个“提交订单”的接口。


提交订单之后,我们来到支付管理页面,在这里有一个“下一步”的按钮,根据我们网购的经验,可以知道点击之后我们会进入响应的网银支付系统。因此,支付管理组件需要支付系统提供一个支付的接口。


经过以上的分析,我们可以把组件及组件之间的联系用一个表来表示:



根据上面的表格,我们就可以轻松地绘制出组件图:


至此,组件图就画完了。


组件图的应用


组件图表现的是系统静态实现的结构,能够帮助开发人员对系统组成达成一致的认识。

可以用组件图来对可执行程序的结构、源代码、物理数据库、可拓展系统进行建模。

可执行程序

对可执行程序的结构(只体现了各个可执行文件间的关系)进行建模。可以清晰地表示出各个可执行文件、链接库、数据库、帮助文件和资源文件等其他运行态物理构件之间的关系。


源代码

表示出各个不同源程序文件之间的关系,帮助开发团队更好地理解各个源代码文件之间的对应关系。

例子:





【说明】

参考材料:

《UML面向对象建模基础》


接入第三方登录是让用户方便快捷地使用已有账号登录你的网站或应用程序,提高用户体验的一种方式。本文将介绍如何使用 PHP 实现微信公众号第三方登录。 1. 获取微信授权 首先,需要获取微信用户的授权。具体步骤如下: 1)引导用户打开微信授权页面: ```php $appid = 'your_appid'; $redirect_uri = urlencode('http://yourdomain.com/callback.php'); $scope = 'snsapi_userinfo'; $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=STATE#wechat_redirect"; header("Location: $url"); ``` 其中,`$appid` 是你的微信公众号的 AppID,`$redirect_uri` 是授权后回调的 URL,`$scope` 是授权作用域,可以是 `snsapi_base` 或 `snsapi_userinfo`,`$state` 是自定义参数,用于防止 CSRF 攻击。 2)获取授权码: 用户同意授权后,会重定向到 `$redirect_uri` 指定的 URL,带上授权码 `code` 和 `state` 参数。 ```php $code = $_GET['code']; $state = $_GET['state']; ``` 3)获取 access_token 和 openid: 使用授权码 `code` 获取 `access_token` 和 `openid`。 ```php $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $response = file_get_contents($access_token_url); $result = json_decode($response, true); $access_token = $result['access_token']; $openid = $result['openid']; ``` 其中,`$secret` 是你的微信公众号的 AppSecret。 2. 获取用户信息 获取到 `access_token` 和 `openid` 后,可以使用以下代码获取用户信息: ```php $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $response = file_get_contents($userinfo_url); $userinfo = json_decode($response, true); ``` 其中,`$userinfo` 包含用户的昵称、头像等信息。 3. 将用户信息保存到数据库 最后,将获取到的用户信息保存到数据库中,以便下次使用时快速登录。 ```php // 连接数据库 $con = mysqli_connect('localhost', 'username', 'password', 'database'); mysqli_set_charset($con, "utf8"); // 查询用户是否已存在 $sql = "SELECT * FROM users WHERE openid='$openid'"; $result = mysqli_query($con, $sql); if (mysqli_num_rows($result) == 0) { // 用户不存在,插入新用户信息 $nickname = mysqli_real_escape_string($con, $userinfo['nickname']); $headimgurl = mysqli_real_escape_string($con, $userinfo['headimgurl']); $sql = "INSERT INTO users (openid, nickname, headimgurl) VALUES ('$openid', '$nickname', '$headimgurl')"; mysqli_query($con, $sql); } // 保存用户登录状态 $_SESSION['openid'] = $openid; ``` 以上就是使用 PHP 实现微信公众号第三方登录的步骤。需要注意的是,为了确保安全性,应该对用户输入的数据进行过滤和验证,防止 SQL 注入和 XSS 攻击等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值