Абстрактный класс Figure
Автор: admin | 20 Июнь 2008 – 21:58 -Абстрактный класс Figure
Приведем код класса:
using System;
using System.Drawing;
namespace Shapes
{
/// <summary>
/// Figure – это абстрактный класс; прародитель семейства
/// классов геометрических фигур. Все фигуры имеют:
/// центр – center, масштаб – scale. статус
/// перетаскивания – dragged center – объект встроенного
/// класса (структуры) Point. Этот объект задает характерную
/// точку фигуры – чаще всего ее центр (тяжести)
/// scale задает масштаб фигуры, первоначально единичный.
/// drugged = true, когда фигура следует за курсором мыши.
/// над фигурами определены операции: параллельный
/// перенос – Move(a,b) масштабирование – Scale(s)
/// Показ фигуры – Show. Область захвата – Region_Capture
/// возвращает прямоугольник, характерный для фигуры,
/// перетаскивание фигуры возможно при установке курсора
/// мыши в области захвата.
/// </summary>
abstract public class Figure
{
/// <summary>
/// закрытые для клиентов атрибуты класса – center, scale
/// </summary>
protected Point center;
protected double scale ;
protected bool dragged;
protected Color color;
//Доступ к свойствам
public Point center_figure
{
get{return(center);}
get {center = value;}
}
public double scale_figure
{
get{return(scale);}
get {scale = value;}
}
public bool dragged_figure
{
get{return(dragged);}
get {dragged = value;}
}
public Color color_figure
{
get{return(color);}
set {color = value;}
}
/// <summary>
/// базовый конструктор фигур
/// </summary>
/// <param name=”x”>координата X характерной точки
///фигуры</param>
/// <param name=”y”>Координата Y характерной точки
///фигуры</param>
public Figure(int x, int y)
{
center = new Point(x,y);
scale = 1;
dragged = false;
color = Color.ForestGreen;
}
/// <summary>
/// отложенный метод
/// Параллельный перенос фигуры на (a,b)
/// require : true;
/// ensure : для любой точки фигуры p(x,y):
/// x = old(x) +a; y = old(y) + b;
/// </summary>
/// <param name=”a”>a – перемещение по горизонтали
///вправо </param>
/// <param name=”b”>b – перемещение по вертикали
///вниз</param>
/// Замечание: Для того, чтобы фигура при рисовании была
/// полностью видимой, координаты всех ее точек должны
/// быть в пределах области рисования.
public void Move (int a,int b)
{
center.X +=a; center.Y += b;
}
/// <summary>
/// изменяет масштаб фигуры
/// </summary>
/// <param name=”s”>масштаб изменяется в s раз</param>
public void Scale(double s)
{
scale*=s;
}
/// <summary>
/// рисование фигуры в окне, передающем объекты g и pen
/// </summary>
/// <param name=”g”> графический объект, методы которого
/// рисуют фигуру</param>
/// <param name=”pen”>перо рисования</param>
public abstract void Show(Graphics g, Pen pen,
Brush brush);
public abstract System.Drawing.Rectangle Region_Capture();
}
Абстрактный класс, относящийся к этапу проектирования системы, вместе с тем является важнейшим элементом заключительного семейства классов. В этом проявляется мощь объектно-ориентированного подхода к разработке программных систем. Заметьте, на данном уровне большая часть текста представляет документацию, являющуюся неотъемлемой частью программного проекта. Документация записана в тегах <summary>, что позволяет автоматически ее извлечь и сохранить в виде XML-отчета.
Tags: brush, Class, Color, Figure, ForestGreen, name, namespace, Rectangle, Region, return, Shapes, Show, summary, System
Находится в Учебник | No Comments »
Ответить
Вы должны быть в системе, дабы комментировать.
