Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. 6 УКПО

.docx
Скачиваний:
0
Добавлен:
25.01.2026
Размер:
350.96 Кб
Скачать

Лабораторная работа №6

Метрики Чидамбера и Кемерера

using System;

using System.Collections.Generic;

using System.Drawing;

class Point

{

public double x, y;

public Point(double x, double y)

{

this.x = x;

this.y = y;

}

public void PrintInfo()

{

Console.WriteLine($"Точка (x = {x}, y = {y})");

}

}

class Square

{

public Point topLeft;

public double side;

public Square(Point topLeft, double side)

{

this.topLeft = topLeft;

this.side = side;

}

public void ChangeSide(double dr)

{

side += dr;

if (side < 0)

{

side = 0;

}

}

public double GetArea()

{

return side * side;

}

public void PrintInfo()

{

Console.WriteLine($"Квадрат с левым верхним углом в точке (X={topLeft.x}, Y={topLeft.y}) и стороной {side}");

Console.WriteLine($"Площадь квадрата: {GetArea()}");

}

}

class Program

{

static void Main()

{

Console.Write("Введите координату x левого верхнего угла: ");

double x = double.Parse(Console.ReadLine());

Console.Write("Введите координату y левого верхнего угла: ");

double y = double.Parse(Console.ReadLine());

Console.Write("Введите длину стороны квадрата: ");

double side = double.Parse(Console.ReadLine());

Square square = new Square(new Point(x, y), side);

Console.Write("Введите изменение стороны (DR): ");

double dr = double.Parse(Console.ReadLine());

square.ChangeSide(dr);

Console.WriteLine("\nИнформация о квадрате после изменения размера:");

square.PrintInfo();

}

}

Метрика сзвешенных методов:

NM(Point) = 2

WMC(Point) = L[0] + L[1] = 5 + 4 = 9

NM(Square) = 4

WMC(Square) = L[0] + L[1] + L[2] + L[3] = 5 + 8 + 4 + 5 = 21

NM(Program) = 1

WMC(Program) = L[0] = 22

Исходя из показателей метрики NM, самым сложным является класс Square.

Наиболее сложным по метрике WMC являются класс Square

Глубина дерева наследования DIT = 0, поскольку нет наследования.

Количество классов-потомков NOC = 0.

Количество обращений к другим классам:

CBO(Point) = 1

CBO(Square) = 2

CBO(Program) = 17

Наиболее сложным по связности является класс Program.

Количество откликов на класс:

RFC(Point) = CBO(Point) + NM(Point) = 1 + 2 = 3

RFC(Square) = CBO(Square) + NM(Square) = 2 + 4 = 6

RFC(Program) = CBO(Program) + NM(Program) = 16 + 1 = 17

Исходя из полученных значений метрик RFC, наиболее сложным оказался класс Program.

Метрика отсутствия сцепления в методах:

LCOM(Point) = 0 – 1 = -1 => 0

LCOM(Square) = 0 – 6 = -6 => 0

LCOM(Program) = 0

Из анализа метрик следует, что сложность используемых классов невысокая, связность методов в классах – высокая. Чувствительность программы к модификациям классов не очень высока. В целом можно считать качество программы соответствующим среднему уровню.

Соседние файлы в предмете Управление качеством программного обеспечения