根据契约进行分析--录像店案例研究01

Richard Mitchell 著,zhen_lei 译


本文包括录像店案例研究的一些片段,用来说明根据契约进行分析的原理。本文假定读者已经从其它渠道学习了一些关于根据契约进行分析的方法。

完整的一套模型可以写成一本书。这些选择的片段用来说明开发的某些方面,其中精确的模型(采用OCL)可以提供真正的支持,包括:
􀁺 限制类型模型的冗余部分,以便容易描述其它定义
􀁺 定义状态模型和类型模型间的关系
􀁺 表述操作的预状态

这些模型从整个系统的角度建立,将系统视作黑箱。假定域模型中定义的所有事件都映射到系统操作中。

这个模型没有经过正式的外部评审,因此应看作可能存在缺陷。我们欢迎读者的反馈。

问题描述

录像店出租销售录像带。只有会员可以租借录像,任何人都可以购买。当录像没有出租价值时,录像店将它标记为可以出售。

如果希望成为会员,你要交纳一定的会费,然后得到一张带有条码的会员卡,条码表示你的会员编号。

录像出租期限是1 至3 天。租借天数越多,日租金就越低。如果超过出租期限,需要支付罚金,罚金高于一天的租借费用。在支付罚金之前,会员将被禁止租借。

如果想要的录像带暂时没有,会员可以预订。当录像带可以出租时,预订该录像带的会员就会收到通知,告诉他们可以在三天内租借该录像带。如果超过三天,录像带可以由其它会员租用。

问题域研究

我们可以从问题域中的事物入手对它进行研究,可以分为两部分,“存在的事情(事物)”和“发生的事情(事件)”。

存在的事情(事物)

以下是一些我们从问题域中发现的事物,可以模化为对象类型:
录像带,人,商店,租借合同,收据,日期、预订、通知 … …

发生的事情(事件)
我们可以通过考察场景来研究发生的事情。理想地,每个场景应该是承担一部分或周期性任务的行为,因此我们知道什么时候开始,什么时候结束。例如,我们可以对录像带出租的周期进行建模:
录像带被一个会员租借(或者不允许任何人预订)

另一个会员预订该录像带
第一个会员还录像带(结果包括:录像带归还,给第二个会员发通知)
第二个会员租借录像带

以上场景提出了一个问题,我们出租和预订的是否是同一个事物。实际上,现实世界中一个影片有多个拷贝,影片和拷贝不是同一事物。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核结构及源码概述

参考:深入分析LINUX内核源码 深入分析Linux内核源码 (kerneltravel.net) Linux 是一个庞大、高效而复杂的操作系统,虽然它的开发起始于 Linus Torvalds 一个人,但随着时间的推移,越来越多的人加入了 Linux 的开发和对它的不断完善…

[Unity] Text文本首行缩进两个字符

Text文本首行缩进两个字符的方法比较简单。通过代码把"\u3000\u3000"加到文本字符串前面即可。 比如: 效果: 代码: TMPtext1.text "\u3000\u3000" "选择动作类型:";

单片机:实现控制LED灯亮灭(附带源码)

使用单片机控制LED灯的亮灭是一个非常基础的嵌入式应用项目,适合初学者学习如何操作GPIO(通用输入输出)端口以及如何控制外设。通过该项目,您可以学习如何通过按键输入、定时器控制或其他触发条件来控制LED灯的开关状态。 1. 项目…

jQuery理论

jQuery定义 jQuery是一个快速、简洁的JavaScript库,它能够简化HTML文档遍历、事件处理、动画设计和Ajax交互。jQuery的设计目标是通过尽可能少的代码实现更多的功能,并且提供一种优雅的方式来处理HTML文档、处理事件、创建动画效果以及实现Ajax交互。. …

容器内部时间和Node时间不同步问题

之前在《 Docker及Kubernetes使用过程中出现的问题(FAQ)》中的“FAQ30 容器内部时间和Node时间不同”分享过容器内部和容器服务器之间时间不一致的问题;这通常会导致各种问题,比如日志记录、定时任务等。 问题原因:问…

组合模式(Composite Pattern):树形结构的优雅处理方案

目录 1. 什么是组合模式2. 组合模式的结构3. UML类图4. 代码实现5. 常见应用场景6. 优缺点分析7. 最佳实践建议 1. 什么是组合模式 组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表现"整体-部分&…

AI开源南京分享会回顾录

AI 开源南京分享会,已于2024年11月30日下午在国浩律师(南京)事务所5楼会议厅成功举办。此次活动由 KCC南京、PowerData、RISC-Verse 联合主办,国浩律师(南京)事务所协办。 活动以“开源视角的 AI 对话”为主…

OpenCV 图像变换与处理实战

OpenCV快速通关 第一章:OpenCV 简介与环境搭建 第二章:OpenCV 图像基本操作 第三章:OpenCV 图像变换与处理实战 OpenCV 图像变换与处理实战 OpenCV快速通关OpenCV 图像变换与处理实战一、OpenCV 基础与图像处理概览二、图像变换理论精析三、…

Ubuntu22.04安装docker desktop遇到的bug

1. 确认已启用 KVM 虚拟化 如果加载了模块,输出应该如下图。说明 Intel CPU 的 KVM 模块已开启。 否则在VMware开启宿主机虚拟化功能: 2. 下一步操作: Ubuntu | Docker Docs 3. 启动Docker桌面后发现账户登陆不上去: Sign in | …

【深度学习入门】深度学习介绍

1.1 深度学习介绍 学习目标 目标 知道深度学习与机器学习的区别了解神经网络的结构组成知道深度学习效果特点 应用 无 区别 特征提取方面 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识深度学习通常由多个层组成,它们通常将更简…

实现按键按下(低电平)检测到下降沿

按照流程进行编程 步骤1: 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…

【Linux金典面试题(上)】41道Linux金典面试问题+详细解答,包含基本操作、系统维护、网络配置、脚本编程等问题。

大家好,我是摇光~,用大白话讲解所有你难懂的知识点 之前写了一篇关于 python 的面试题,感觉大家都很需要,所以打算出一个面试专栏。 【数据分析岗】Python金典面试题 这个专栏主要针对面试大数据岗位、数据分析岗位、数据运维等…

【Ubuntu】使用ip link工具创建虚拟局域网并配置?

🦋🦋🦋如何使用ip link工具创建虚拟局域网? sudo ip link add link enx888bd66b7000 name enx.120 type vlan id 120 上述命令使用ip link工具在Linux系统中创建了一个新的虚拟局域网(VLAN)接口&#xff0c…

汽车车牌标记支持YOLO,COCO,VOC三种格式标记,4000张图片的数据集

本数据集支持YOLO,COCO,VOC三种格式标记汽车车牌,无论是新能源汽车还是油车都能识别标记,该数据集一共包含4000张图片 数据集分割 4000总图像数 训练组 70% 2800图片 有效集 20% 800图片 测…

Docker 如何在容器未运行时修改内部配置文件

今天遇到一个数据库分组查询的问题:sql_modeonly_full_group_by,即查询 SQL 的字段列表中包含了未分组的字段,在 mysql7 版本下需要修改数据库的配置文件 my.cnf 中的 sql_mode,去除掉值中的 ONLY_FULL_GROUP_BY。 第一次进入 do…

游秦岭山感

巍乎高哉! 悠悠大秦岭 佑吾华夏之根脉 八水润之 泽万物而赋予生机 于万山之山中 享自然之美于万物 西有昆仑祖龙脉 东有秦岭护关中 绿水青山国之本 万山长青谋发展 旭日东升耀中华 固我山河永泰安 你我同行共保护 关中龙脉更兴旺

阿里云-通义灵码:测试与实例展示

目录 一.引子 二.例子 三.优点 四.其他优点 五.总结 一.引子 在软件开发的广袤天地中,阿里云通义灵码宛如一座蕴藏无尽智慧的宝库,等待着开发者们去深入挖掘和探索。当我们跨越了入门的门槛,真正开始使用通义灵码进行代码生成和开发工作…

微信小程序中使用miniprogram-sm-crypto实现SM4加密攻略

在微信小程序开发过程中,数据安全至关重要。本文将为大家介绍如何在微信小程序中使用miniprogram-sm-crypto插件进行SM4加密,确保数据传输的安全性。 一、SM4加密简介 SM4是一种对称加密算法,由国家密码管理局发布,适用于商密领…

使用 Ansys Fluent 对气体泄漏检测进行建模

了解使用 Ansys Fluent 仿真气体泄漏和确保安全的前沿技术。 挑战 气体泄漏对人类安全和环境构成重大风险。及早检测气体泄漏可以防止潜在的灾难,包括爆炸、火灾和有毒物质暴露。有效的气体泄漏检测系统对于石油和天然气、化学加工和住宅基础设施等行业至关重要。…

原创 传奇996_55——后端如何点击npc隐藏主界面

点击图片退出&#xff0c;举例&#xff1a; |linkexit Img|ax0.5|ay0.5|percentx50|percenty50|imgpublic/touming2.png|hideMain1|linkexit <Img|x0|y0|esc1|show4|bg1|move0|imgcustom/new/longhun/bg.png|loadDelay0|reset1|hideMain1>