ood解题思路----实物类面向对象

这篇具有很好参考价值的文章主要介绍了ood解题思路----实物类面向对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实物类

下面以vending machine为例文章来源地址https://www.toymoban.com/news/detail-515712.html

5C

  • Clarify
    • What
      1. 输入输出是什么?
      2. 大小是否有限制? 无
      3. What items does this vending machine sell? coke、sprite、mountain dew
      4. What to do when an item sold out?
      5. What are the supposed payment methods? 可以使用strategy design Pattern,不同的付款方式调用不同的接口。此处假设只接受硬币
    • How
      1. how to select items to purchase?
  • Core object
    ood解题思路----实物类面向对象
  • Use Cases
    • select item
    • insert coin
    • execute transaction
    • cancel transaction
    • refill items
  • classes
    • select item
      1. 使用Map<String, Item> itemIdentifiers对应按键和饮料。但是这样有个漏洞,就是可能A1按键对应的Item已经卖光了,这样就会导致NullPointerException的错误。要避免这样的问题,我们可以增加一个ItemInfo的类,然后在VendingMachine中增加一个Map<ItemInfo, List<Item>> items; Map<String, ItemInfo> itemIdentifiers;,记录这个按键的信息,Item的信息以及剩余量
    • insert coin
      1. void insertCoins(List<Coin> coins)
    • execute transaction
      1. get the current selected item: ItemInfo currentSelection;
      2. compare the item price ans inserted coins: List<Coin> currentCoins;
      3. if not enough money, throw an exception:
      4. else, return the item purchased: Item executeTransaction();
      5. refund if any: 上面的函数返回值只是Item,但是可能存在要找零的情况,可以将上面的函数修改为:Pair<Item, List<Coin>> executeTransaction(); List<Coin> refund();
    • cancel transaction
      1. return the current coins that has been inserted. List<Coin> cancelTransaction();
    • refill items
      1. void refillItems(List<Item> items);更新Map
        bad:
        ood解题思路----实物类面向对象
        good:无论stock的结构有多么复杂,这样设计都可以避免暴露在vending machine中;这样设计也更方便去maintain
        ood解题思路----实物类面向对象
        ood解题思路----实物类面向对象

到了这里,关于ood解题思路----实物类面向对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode 122双周赛 解题思路+代码

    本人水平有限,只做出3道,最后1道放弃。 给你一个长度为 n 的整数数组 nums 。 一个数组的 代价 是它的 第一个 元素。比方说,[1,2,3] 的代价是 1 ,[3,4,1] 的代价是 3 。 你需要将 nums 分成 3 个 连续且没有交集 的子数组。 请你返回这些子数组的 最小 代价 总和 。 示例 1: 输

    2024年02月20日
    浏览(43)
  • 路由表的更新算法(解题思路)

    某时刻路由器R6的路由表如下表: 第一步:将更新信息的距离+1,把下一路由改为发来更新信息的路由 R4更新表: (黄字为解释) 目的网络 距离 下一跳路由器 net1 3 =2+1 R4 R1在R4的下一跳 net2 5 =4+1 R4 R2在R4的下一跳 net3 4 =3+1 R4 R9在R4的下一跳 第二步:与原表对比 R6的原表: 目

    2024年02月11日
    浏览(83)
  • BUUCTF [MRCTF2020]Ezpop解题思路

    php魔术方法: __call() : 在对象中调用一个不可访问方法时, __call() 会被调用 __toString : 将对象当作一个字符串输出的时候 __wakeup : 反序列化时被调用 __invoke : 当一个对象被作为函数调用时被调用 __get : 当对象访问一个不存在的属性时调用 __construct :创建对象时调用 序列化只

    2024年02月12日
    浏览(35)
  • 【攻防世界-Web】unserialize3解题思路

    本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 而__wakeup()在PHP中被称为魔术方法,在进行反序列化时,unserialize()会检查是否存在__wakeup(),若存在,该__wakeup()魔术方法会被先一步调用。对于本题,如果我们直接进行序列化,则会执行__wakeup()从而导

    2024年02月08日
    浏览(42)
  • CTF-[Web] MD5解题思路

    写在前面:最近练习了一些CTF中关于md5绕过的题目,总结了几种思路,本质没有太大变化,就是各种组合绕过,也是比较考察基础的,前段时间太摆烂了,好久没有更新了,革命尚未成功,同志仍需努力!!!   md5是一种信息摘要算法(目标是用于证明原文的 完整性 ),其

    2024年02月13日
    浏览(46)
  • PTA数组及排序查找题解与解题思路

    函数题目为平台提供的裁判程序调用所完成的函数进行判题,题目规定语言为C语言 本题较为简单,考察的是如何遍历一个二维数组,只需要两个循环依次遍历其每个维度和元素即可 如何寻找最大值? 只需要在遍历每个元素的过程中,使用一个变量记录最大值,当出现更大的

    2024年02月08日
    浏览(53)
  • zip文件格式及伪加密解题思路

    目录 zip文件格式 压缩源文件数据区 压缩源文件目录区 压缩源文件目录结束标志 判断加密方式 无加密 真加密 伪加密 伪加密解题思路 方法一 方法二 方法三 方法四 一个ZIP文件由三大部分组成: 压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志   数据区主要记

    2024年02月16日
    浏览(34)
  • [区块链安全-Ethernaut]附加GoodSamaritan解题思路

    说来也巧,Ethernaut上一篇刚完结,突然点开看到又更新了GoodSamaritan,我干脆单独列出来把。 总共有三个合约互相作用,分别为 GoodSamaritan (慈善家,对外暴露捐款接口)、 Coin (慈善家通过钱包创建的代币合约)以及 Wallet (由慈善家所有)。本关卡的目的是获取到钱包里所

    2024年01月19日
    浏览(37)
  • [第五空间 2021]pklovecloud 解题思路&过程

    打开题目,一道关于php反序列化的的代码审计问题。源码如下: 可以看到,通过ace-echo_name()函数,可以调用到file_get_contents来读文件;acp-__toString()魔术方法中有通过其cinder属性对echo_name()的调用,且__construct()会创建cinder为一个对象; 于是初步构造payload: 还不够,目前只是构

    2024年02月14日
    浏览(42)
  • 2021电工杯数学建模B题解题思路

    目录 一、前言 二、问题背景 三、具体问题 四、解题思路 (一)整体思路 (二)问题一 (三)问题二 (四)问题三 (五)问题四 (六)问题五 五、相关工具及公式 (一)SPSS (二)指数平滑法 (三)误差分析相关公式         本文是对2021 年第十三届 “电工杯” 高校

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包