zoukankan      html  css  js  c++  java
  • 第四次课程作业

    题目要求

    OOA(Object Oriented Analysis,面向对象分析): 从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个类(class)来表示。建立一个能够反映真实情况的需求模型。
    OOD(Object Oriented Design,面向对象设计):将面向对象分析阶段形成的需求模型进一步具体设计。如类的设计(继承、派生、类与类之间的消息协作)、算法的设计等。采取通用的工具,如流程图、类图等来描述。

    Q1:采取面向对象的方法,四则运算自动出题软件,根据需求可以划分为几个类?每个类具有什么属性?每个类具有什么行为?

    A:大致可分为四个类。
    1.文件读写类,将各种界面进行读取,输入输出流文件。

    class file
    {
    private:
        int n;//题数
        char input[100];
        char output[100];
    public:
        void readfile1();//读取文件
        void readfile2(char *p, int n, int right);//运行
        void writefile1(char *s,double right, double answer);//内容写入
    };
    

    2.用户交互类,用于不同用户的语言需求,根据用户需求生成语言,题目数和生成答案。

    class ex
    {
        private:
        int num;
        int answer;
        int random;
        public:
        void scanf();//选择语言,获取数据
        void answer();//输出正确答案
        void statistics();//统计题数
    }
    

    3.随机生成类,用于随机生成加减乘除,数字以及符号。

    class random
    {
        private:
        int number;
        char operation; 
        public:
        int randomnum();//随机数
        char randomoperation();//随机运算符
        char randomexpress();//随机算式
    };
    

    4.计算类,用于计算结果

    class cal
    {
        private:
        int answer;
        char express;
        public:
        int cal();//计算结果
        void judge();//统计答题情况
    }
    

    类图如下:

    Q2:类与类之间是如何进行协作的?谁给谁发送消息?谁持有谁的引用?

    A:流程图如下:

    Q3:该自动出题软件采取何种算法或者是如何实现的?

    A:采用循环队列栈等等...至于博客园中大神们用到的逆波兰,目前还在研究中...

    感想:

    非常感谢各位大佬们的帮助,此次改进代码后类的思路较为清晰,也渐渐出现了模块化的水准,再一步步的向分装化改进,程序变得更加清楚,也纠正了自己的编码习惯。

  • 相关阅读:
    设计模式(5)>模板方法
    设计模式(2)>工厂方法模式
    分支限界>装载问题
    解决Oracle 11g在用EXP导出时,空表不能导出
    设计模式(7)>观察者模式
    算法>并行算法
    设计模式(15)>桥接模式
    设计模式(9)>迭代器模式
    设计模式(11)>建造者模式
    设计模式(17)>中介者模式
  • 原文地址:https://www.cnblogs.com/Cleveland/p/6860613.html
Copyright © 2011-2022 走看看