Проектирование классов объектов на основе контрактов

Класс «Trapeze» (Трапеция)

Атрибуты:

Point P1,P2,P3,P4 – точки оснований;

const double h – высота;

Название Предусловия Постусловия
Trapeze P2– точка большего основания h – высота>0 this->P2=P2 this->h=h Р1=Р2-> MoveTodXdY(-а/2;0) Р4=Р1-> MoveTodXdY(2а;0) Р3=Р2-> MoveTodXdY(2а;0)
~ Trapeze P1,P2,P3,P4 – точки основания h – высота экземпляр класса разрушен
MoveTo P1 – точка основания P1=p
MoveTodXdY (dx Є R) & (dy Є R) P1-> MoveTodXdY(dx,dy)
ConsSFigure Point – точка отн. кот. строится симметрия P2->ConsSР(Point)
GetPoint1 P1 – точка основания P11=P1
GetPoint2 P2 – точка основания P21=P
GetPoint3 P3 – точка основания P31=P3
GetPoint4 P4 – точка основания P41=P4
GetH h - высота h1=h

Инвариант: (P1.x Є R) && (P1.y Є R) && (P2.x Є R) && (P2.y Є R) && (P3.x Є R) && (P3.y Є R) && (P4.x Є R) && (P4.y Є R) && (h>0) && (a=1/3L)&&(d=2a), где R – подмножество вещественных чисел в диапазоне (-500, 500)

Класс «Circle» (Четверть дуги окружности)

Атрибуты: Атрибуты:

Point Р5 – координаты центра

const double r – радиус

Название Предусловия Постусловия
Circle P5 – центр. r=L this->P5=P5 this->r=r
~ Circle P5 – центр. r - радиус экземпляр класса разрушен
MoveTo P5 - центр P5=p
MoveTodXdY (dx Є R) & (dy Є R) P5-> MoveTodXdY(dx,dy)
ConsSFigure Point – точка отн. кот. строится симметрия Р5->consSP(Point)
GetPoint5 P5 – центр. P51=P5
GetR r - радиус r1=r

Инвариант:

(P5.x Є R) && (P5.y Є R) && (r= L), где R – подмножество вещественных чисел в диапазоне (-500, 500)

Класс «Piece» (Отрезок)

Атрибуты:

Point L1,L2– точки концов отрезка;

Название Предусловия Постусловия
Piece L1,L2– точки концов this->L1=L1 this->L2=L2
~ Piece L1,L2– точки концов экземпляр класса разрушен
GetLPoint1 L1 – точка конца отрезка L11=L1
GetLPoint1 L2 – конца отрезка L21=L2
MoveTo L1 – точка конца отрезка L1=p
MoveTodXdY (dx Є R) & (dy Є R) L1-> MoveTodXdY(dx,dy) L2-> MoveTodXdY(dx,dy)
ConsSFigure Point – точка отн. кот. строится симметрия L1->consSP(Point) L2->consSP(Point)

Инвариант: (L1.x Є R) && (L1.y Є R) && (L2.x Є R) && (L2.y Є R), где R – подмножество вещественных чисел в диапазоне (-500, 500)

Класс «Image» (Изображение)

Атрибуты:

Piece piece1, piece2, piece3;

Circle circle;

Trapeze trapeze;

List<Point> points;

Название Предусловия Постусловия
Image trapeze - трапеция circle – четверть дуги окружности piece 1– отрезок1 piece 2– отрезок2 piece 3– отрезок3 piece - трапеция создана circle – дуга создана piece 1– отрезок1 создан piece 2– отрезок2 создан piece 3– отрезок3 создан
~ Image trapeze - трапеция circle – четверть дуги окружности piece 1– отрезок1 piece 2– отрезок2 piece 3– отрезок3 points – характерные точки экземпляр класса разрушен трапеция, четверть дуги окружности отрезок 1, отрезок 2, отрезок 3, характерные точки разрушены
Get Trapeze Trapeze - трапеция trapeze = trapeze – копия
GetCircle circle - круг circle = circle – копия
GetPiece1 рiece1 – отрезок рiece1 = piece1 – копия
GetPiece2 рiece 2 – отрезок рiece2 = piece2 – копия
GetPiece3 рiece 3 – отрезок рiece3 = piece3 – копия
GetPoints Points this->points=points
MoveTodXdY (dx Є R) & (dy Є R) Все точки в списке переместить Все объекты переместить
ConsSImage Point – точка отн. кот. строится симметрия Всем точкам в списке сопоставить симметричные Всем объектам сопоставить симметричные

Инвариант: все условия предусмотрены ранее


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: