Лаб. 6 УКПО
.docxЛабораторная работа №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
Из анализа метрик следует, что сложность используемых классов невысокая, связность методов в классах – высокая. Чувствительность программы к модификациям классов не очень высока. В целом можно считать качество программы соответствующим среднему уровню.
