zoukankan      html  css  js  c++  java
  • 2020面向对象程序设计寒假作业3 设计思想

    介于这次可能要加入条件语句与判断语句,原本的架构可能无法支持

    如果要使用原架构,则相当于在 World 类中增加方法,以后可延拓性不强

    因此我需要重新考虑一个,可延拓性更强的架构


    【思路】

    首先,原本的三个库的基本形式还是要保证的,同时加上一定的优化:

    变量库(VariableRepository)

    首先,考虑到变量类型的拓展,变量类型不在局限于整数,可能的还有:字符、布尔、实数、复数甚至 C++ 中不具有的分数。

    因此,每个变量都需要开一个 vector 库;其次,除了变量名到地址的映射外,还需要建立一个变量名到变量类型的映射


    数字库(NumberRepository)

    规范数字的输入模式以及输出模式,添加乘法、除法、指数、对数运算


    值库(ValueRepository)

    由于定义的变量名本身不能歧义,即不能与关键字、数字冲突,也不能与定义过的变量冲突

    而赋值语句时,右值需要依次判定是否为数字与变量,最后都是取值

    因此,很大程度上,变量与数字有相似处,可以使用一个新的库合并


    错误抛出库(ErrorRepository)

    由于错误抛出占据了 World 很大的比重,故将之单独列出来,增强区块化与可读性


    世界(World)

    经过重新架构, World 应只是程序的集合,以及程序对外界指令的输入。其自身具有的方法,应尽可能少,避免降低可延拓性

    经重新架构,我希望 World 仅需要以下方法:

    1. 输入指令的唯一渠道
    2. 调用其它类进行对指令的分析
    3. 调用其它类进行对指令的执行
    4. 调用其它类进行对指令的错误抛出
    5. 输出结果的唯一渠道

    为了判定指令执行的成功性,所有非 World 的以上五类方法返回值均需设置为 bool 型;而原返回值改为引用形式


  • 相关阅读:
    NOI2015刷题记录
    [WC2013][UOJ58]糖果公园 莫队算法
    啦啦啦~
    完全平方数
    构建之法
    测试更新
    程序的测试
    程序的封装
    构建之法5.5-6-7章观后感
    给徐侃童鞋的一个汉堡
  • 原文地址:https://www.cnblogs.com/JustinRochester/p/12285020.html
Copyright © 2011-2022 走看看