Ошибка:
Graphics.pas(146) : Класс Circle не реализует метод MoveOn(IStyledGraphicsObject) интерфейса Engine_6.GraphicsObjects.IMovable
Вот архив: Engine 6.rar (420,3 КБ)
Вот описание класса Circle:
/// Окружность.
Circle = class(StyledGraphicsObject, ICircle, ICloneable)
private
[ContractInvariantMethod]
procedure PropertiesValidation();
public
/// Радиус.
auto property Radius: real;
constructor(__vector2D: Vector2D; radius: real);
/// Возвращает рендер объекта.
function GetRender(): IRender; override;
/// Клонирует объект.
function Clone(): object; override;
end;
А вот StyledGraphicsObject:
using Engine_6.Tools;
using System;
using System.Diagnostics.Contracts;
namespace Engine_6.GraphicsObjects
{
/// <summary>
/// Простой визуализируемый графический объект.
/// </summary>
public abstract class StyledGraphicsObject : IStyledGraphicsObject, ICloneable
{
[ContractInvariantMethod]
protected virtual void PropertiesValidation() => Contract.Invariant(Style != null);
/// <summary>
/// Стиль объекта.
/// </summary>
public IStyle Style { get; set; }
/// <summary>
/// Задаёт центр объекта.
/// </summary>
public Vector2D Center { get; set; }
public StyledGraphicsObject(Vector2D center) => Center = center;
// Для языков, требующих конструктор по умолчанию.
public StyledGraphicsObject() : this(Vector2D.Default)
{
}
/// <summary>
/// Возвращает рендер объекта.
/// </summary>
/// <returns>рендер.</returns>
public abstract IRender GetRender();
/// <summary>
/// Перемещает объект на вектор.
/// </summary>
/// <param name="vector2D">Вектор смещения.</param>
public void MoveOn(Vector2D vector2D) => Center = new Vector2D(Center.X + vector2D.X, Center.Y + vector2D.Y);
/// <summary>
/// Перемещает объект к другому объекту.
/// </summary>
/// <param name="vector2D">Объект-цель.</param>
public void MoveOn(IStyledGraphicsObject styledGraphicsObject) => Center = styledGraphicsObject.Center; // <--
/// <summary>
/// Клонирует объект.
/// </summary>
/// <returns>Копия объекта.</returns>
public abstract object Clone();
}
}
А вот сам IMovable:
using Engine_6.Tools;
namespace Engine_6.GraphicsObjects
{
/// <summary>
/// Перемещаемый объект.
/// </summary>
public interface IMovable
{
/// <summary>
/// Перемещает объект на вектор.
/// </summary>
/// <param name="vector2D">Вектор смещения.</param>
void MoveOn(Vector2D vector2D);
/// <summary>
/// Перемещает объект к другому объекту.
/// </summary>
/// <param name="vector2D">Объект-цель.</param>
void MoveOn(IStyledGraphicsObject styledGraphicsObject);
}
}