第四次課程做業

題目要求

OOA(Object Oriented Analysis,面向對象分析): 從客觀存在的事務和事務之間的關係,概括出有關對象(包括對象的屬性和行爲)以及對象之間的聯繫,並將具備相同屬性和行爲的對象用一個類(class)來表示。創建一個可以反映真實狀況的需求模型。
OOD(Object Oriented Design,面向對象設計):將面向對象分析階段造成的需求模型進一步具體設計。如類的設計(繼承、派生、類與類之間的消息協做)、算法的設計等。採起通用的工具,如流程圖、類圖等來描述。算法

Q1:採起面向對象的方法,四則運算自動出題軟件,根據需求能夠劃分爲幾個類?每一個類具備什麼屬性?每一個類具備什麼行爲?

A:大體可分爲四個類。
1.文件讀寫類,將各類界面進行讀取,輸入輸出流文件。express

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.用戶交互類,用於不一樣用戶的語言需求,根據用戶需求生成語言,題目數和生成答案。dom

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:採用循環隊列棧等等...至於博客園中大神們用到的逆波蘭,目前還在研究中...code

感想:

很是感謝各位大佬們的幫助,這次改進代碼後類的思路較爲清晰,也漸漸出現了模塊化的水準,再一步步的向分裝化改進,程序變得更加清楚,也糾正了本身的編碼習慣。對象

相關文章
相關標籤/搜索