Главная страница
Навигация по странице:

  • Пример: Рассмотрим программу:class

  • View::area

  • лекция. Сборник лекций по МДК _Технология разработки программного обеспе. Курс лекций для специальности спо базовой подготовки


    Скачать 4.41 Mb.
    НазваниеКурс лекций для специальности спо базовой подготовки
    Анкорлекция
    Дата02.09.2022
    Размер4.41 Mb.
    Формат файлаdocx
    Имя файлаСборник лекций по МДК _Технология разработки программного обеспе.docx
    ТипКурс лекций
    #660044
    страница60 из 62
    1   ...   54   55   56   57   58   59   60   61   62

    Степень абстрактности классов (DAC)


    Степень абстрактности классов (Density of Abstract Classes-DAC). Эта метрика содержит отношение абстрактных классов к общему числу классов. Как дополнение к метрике NAC, эта метрика позволяет сравнивать абстрактность программ разного размера.

    В литературе упоминается также метрика число аггрегатных связей ("the number of aggregation relationships"), которая отражает, по сути, один из вариантов определенной выше метрики, а именно, число классов, представители которых являются полями данного класса. В терминах полной модели взаимодействия компонентов метрика может быть выражена как число кругов-вершин, связанных с данной вершиной дугами с видимостью, равной “компонент класса”.
      1. Количество переопределеных методов в подклассе (NMO)


    Количество переопределенных методов в подклассе (Number of Methods Overwritten-NMO) - Число дуг со значениями переопределение метода и переопределение свойства атрибута тип, выходящих из вершины промежуточной модели наследования классов. Эта метрика определяет количество методов класса-предка, переопределенных в классе-потомке. Правильное проектирование системы предполагает расширение классов-предков, а не их переопределение. Большая величина этой метрики сигнализирует об ошибках проектирования.

    На практике рассматривают такую метрику не только для классов, но и для компонентов классов – методов и свойств. В терминах модели метрика число переопределений для метода определяется как число дуг с типом “переопределение метода”, выходящих из точки-метода в промежуточной модели наследования классов.

    Метрика связана с сопровождаемостью программ, поскольку чрезмерная глубина иерархии наследования классов в сочетании с переопределением методов в подклассах увеличивает сложность ОО программ.

    Рекомендуемые значения - большие значения метрики оправданы лишь для так называемых frameworks (framework – collection of classes that provide a set of services for a particular domain; a framework thus exports a number of individual classes and mechanisms that clients can use or adapt [4]).
    Пример:

    Рассмотрим программу:

    class View {

    Rect area;
    virtual Rect getArea()

    { return area; }

    };

    class SegmentedEdge : public View {

    vector
    segments;
    virtual Rect getArea() {

    Rect r(segments[0]);
    for (int i = 1; i < segments.size(); i++)

    r |= Rect(segments[i]);

    return r;

    }

    };

    Метрика NMO(SegmentedEdge) = 1, поскольку класс SegmentedEdge   переопределяет метод класса getArea() класса View.

    Класс View является базовым классом для классов, которые представляют на экране некоторые фигуры. Для этого класса ошибочно был реализован метод, который "выдает" прямоугольную область, к которую попадает фигура. Для этого в классе View имеется переменная  area. Однако этот метод getArea переопределяется в классе SegmentedEdge, который представляет на экране ломаную линию. При этом переменная View::area и метод View::getArea()становятся излишними. Правильным решением было бы сделать View::getArea()чистой виртуальной, а базовый класс View абстрактным.

    Метрика NMO(SegmentedEdge) в этом случае становится равной 0.
      1. Пропорция переопределения методов в подклассе (POM)


    Пропорция переопределения методов в подклассе (Proportion of Overridden Methods in Class-POM). Эта метрика вычисляется как отношение: 

    POM = число переопределенных методов подкласса / общее число методов подкласса

    Эта метрика, как дополнение к метрике NMO, позволяется сравнивать абстрактность программ разного размера. Например, одну и ту же программу, но на разных этапах ее разработки
      1. Число свойств (атрибутов или переменных) в классе(NAA)


    Число свойств (атрибутов или переменных) в классе (The total number of available attributes (NAA)) - длина списка свойств вершины в промежуточной модели наследования. Считается, что нулевое значение метрики показывает, что программа не является хорошо продуманной ОО программой
      1. Число унаследованных свойств (атрибутов или переменных) в классе (NIV)


    Число унаследованных свойств (The number of inherited variables - NIV) - Число дуг в промежуточной модели наследования со значением наследование свойства атрибута тип, входящих в вершину.
      1. 1   ...   54   55   56   57   58   59   60   61   62


    написать администратору сайта