Чтение онлайн

на главную

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №9
Шрифт:

{

get {return(scale);}

set {scale = value;}

}

public bool dragged figure

}

get {return(dragged);}

set {dragged = value;}

}

public Color color figure

{

get {return (color);}

set {color = value;}

}

/// <summary>

/// базовый конструктор фигур

/// </summary>

/// <param name="х">координата X характерной точки

///фигуры</param>

/// <param name="у">Координата Y

характерной точки

///фигуры</param>

public Figure(int x, int y)

{

center = new Point(x,y);

scale = 1;

dragged = false;

color = Color.ForestGreen;

}

/// <summary>

/// отложенный метод

/// Параллельный перенос фигуры на (а, Ь)

/// require: true;

/// ensure: для любой точки фигуры р(х, у):

/// х = old(x) + а; у = old(у) + Ь;

/// </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 и реп

/// </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-отчета.

Классы семейства геометрических фигур

Приведем теперь программные коды классов, являющихся потомками класса Figure.

Класс Ellipse

Вот программный код этого класса:

using System;

using System.Drawing;

namespace Shapes

{

/// <summary>

/// Класс Ellipse — потомок класса Figure.

/// </summary>

public class Ellipse: Figure

{

int axisA,axisB;

Rectangle rect;

public Ellipse (int A, int B, int x, int у): base(x,у)

{

axisA = A; axisB = B;

rect =Init;

}

public override void Show(Graphics g, Pen pen, Brush brush)

{

rect = Init;

g. DrawEllipse(pen,rect);

g. FillEllipse (brush, rect);

}

public override Rectangle Region_Capture

{

rect = Init ;

return rect;

}

Rectangle Init

{

int a =Convert.ToInt32(axisA*scale);

int b =Convert.ToInt32 (axisB*scale);

int leftupX = center.X — a;

int leftupY = center.Y — b;

return (new Rectangle(leftupX,leftupY,2*a,2*b));

}

}

}

Класс Circle

Этот класс является потомком класса Ellipse:

using System;

using System.Drawing;

namespace Shapes

{

/// <summary>

/// Класс Circle — потомок класса Ellipse.

/// </summary>

public class Circle: Ellipse

{

public Circle (int radius,int x, int y):base(radius,radius,x,y)

{

// Круг — это эллипс с равными полуосями (радиусом круга)

}

}

}

Здесь опять-таки проявляется мощь наследования. Потомок наследует все свойства и методы родителя. Ему остается только указать собственный конструктор объектов класса, да и в нем главное состоит в вызове конструктора родительского класса с передачей ему нужных аргументов.

Класс LittleCircle

Этот класс, задающие маленькие кружочки фиксированного радиуса, в свою очередь, является наследником класса Circle. Устроен он также чрезвычайно просто:

using System;

namespace Shapes

{

/// <summary>

/// Класс LittleCircle — потомок класса Circle.

/// </summary>

public class LittleCircle: Circle

{

public LittleCircle(int x,int y): base(4,x,y)

Поделиться:
Популярные книги

Мимик нового Мира 13

Северный Лис
12. Мимик!
Фантастика:
боевая фантастика
юмористическая фантастика
рпг
5.00
рейтинг книги
Мимик нового Мира 13

Идеальный мир для Лекаря 15

Сапфир Олег
15. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 15

Адепт: Обучение. Каникулы [СИ]

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.15
рейтинг книги
Адепт: Обучение. Каникулы [СИ]

Ты всё ещё моя

Тодорова Елена
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Ты всё ещё моя

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7

Книга пяти колец

Зайцев Константин
1. Книга пяти колец
Фантастика:
фэнтези
6.00
рейтинг книги
Книга пяти колец

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VI

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Мимик нового Мира 7

Северный Лис
6. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 7

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь