2015-12-12 6 views
0

У меня есть класс с именем fileInfo.cpp, который содержит частные переменные, публичный конструктор, общедоступный метод для выполнения некоторых операций с переменными и некоторые общедоступные методы getVariableX() {return variableX;}. Вот файл .h:Создание диаграммы классов UML для класса и основного класса? C++

class fileInfo{ 

private: 

    string fileName; 
    string fileType; 
    int sampleRate; 
    int bitRes; 
    int channels; 

public: 

    fileInfo(string s); 
    int pullValues(); 
    std::vector<std::string> readSamples(); 
    int getSampleRate(); 
    int getBitRes(); 
    int getChannels(); 
}; 

У меня есть три разных основных класса/программы, каждый из которых получает доступ к этому классу fileInfo. Например, у меня есть какая-то программа под названием runthis.cpp

#include... 

void concatFiles(string,string); 

main(...){ 
    concatFiles("this.txt","this2.txt"); 
} 

void concatFiles(string file1,string file2){ 
    fileInfo f = fileInfo(file1);    //Here I access the fileInfo class 
    int isSuccessful = f.pullValues(); 
    //todo 
} 

Как бы показать это соотношение в диаграмме UML? Я бы использовал диаграмму классов, диаграмму usecase?

ответ

3

Это зависит, как и во многих случаях, от перспективы. Вы бы выделили здесь две основные перспективы. Первый - это представление чистой статической иерархии классов, а второе - представление развертывания.

Иерархия классов: Вы не увидите никаких файлов здесь, а структуры. Включение обычно означает, что вы будете использовать другой класс для чего-то (где в вашем конкретном случае h -file представляет открытый интерфейс класса). Тогда самым слабым представлением будет зависимость.

enter image description here

Но наиболее распространенным является использование ассоциации, которая показывает некоторое фактическое использование одного класса в другой. Это также часто сопровождается ролью (т. Е. Именем некоторой переменной или свойства экземпляра) на противоположном конце.

enter image description here

Там намного больше, вы можете выразить с ассоциациями, но это не будет вписываться в этом ответе.

Deployment View: Это менее распространенное использование, но иногда вы сделаете это по какой-то причине. Здесь вы видите отдельные файлы. Но вместо классов вы будете использовать артефакты и (стереотипные) зависимости.

enter image description here

Вместо <<use>> вы также можете написать <<include>>.

Смежные вопросы