![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго всем дня, недавно столкнулась с такой для меня проблемой: нужно было написать абстрактно как будет выглядеть интерфейс для работы с коллекциями кривых (контуров)
встала задача написать функцию, которая бы перебирала все кривые и оставляла только те их куски, которые бы входили в ограниченный прямоугольник. интерфейсы я задала, задала классы, но вот как теперь это всё заюзать в функции, я не знаю, перерыла кучу литературы-везде описание классов и интерфейсов, а как конкретно их использовать-примера нет. Тема для меня новая, я в делфи больше по базам данных работала, чем с "чистым" ООП кодом...Прошу вашей помощи...Объясните, пожалуйста, как именно в функции использовать классы и интерфейсы. вот, собственно, сам код: Код:
TRect_Float= record X1, Y1, X2, Y2 : double; // Прямоугольник. Стороны параллельны осям координат. Для простоты гарантируется что X1<X2, Y1<Y2 End; IContourPoint = interface Function GetX : double; Function GetY : double; End; IContourBit = interface Function GetPointCount : integer Function IsClosed : Boolean; //флажок замкнутости контура. Тру – последняя точка соединена с первой. Function GetPoint(const idx : integer) : IContourPoint; // Nil если (idx < 0) or (idx >= GetPointCount) End; IContour = interface Function GetContourBitCount : integer; Function GetContourBit(const idx : integer) : IContourBit; End; IContours = interface Function GetContourCount: integer; Function GetContour(const idx : integer) : IContour; End; IContourEdit = interface (IContour) procedure AddContourBit( const bit: IContourBit ); procedure Clear; end; IContourBitEdit = interface (IContourBit) procedure AddPoint( const x, y, value: double ); // Value всегда надо задавать равным 0 procedure SetClosed( const closed: boolean ); procedure Clear; end; Точка, кусочек контура, контур, коллекция контуров, и редактирующие интерфейсы. Так же есть классы которые имплементируют эти интерфейсы: TContourBitEdit = class(TInterfacedObject, IContourBit, IContourBitEdit) TContourEdit = class(TInterfacedObject, IContour, IContourEdit) Задача – написать функцию Function CutContoursByWindow(const Cntrs : IContours; const window : TRect_Float ) : IContour; Функция должна вернуть IContour, состоящий из отрезков входящих контуров, которые (отрезки) попадают внутрь заданного окна, либо пересекают/касаются его границ. |