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

на главную - закладки

Жанры

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

{

// маленький круг радиуса 4

}

}

}

Класс Rect

Этот класс является еще одним прямым потомком класса Figure:

using System;

using System.Drawing;

namespace Shapes

{

/// <summary>

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

/// </summary>

public class Rect: Figure

{

int sideA, sideB;

Rectangle rect;

public Rect(int sideA,int sideB, int x, int y): base(x,y)

{

this.sideA = sideA; this.sideB = sideB;

rect =Init;

}

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

{

rect = Init ;

g. DrawRectangle(pen,rect);

g. FillRectangle(brush,rect);

}

public override Rectangle Region_Capture

{

rect = Init ;

return rect;

}

Rectangle Init

{

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

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

int leftupX = center.X — a/2;

int leftupY = center.Y — b/2;

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

}

}

}

Класс Square

Квадрат —

это частный случай прямоугольника. Соответствующий класс является потомком класса Rect:

using System;

namespace Shapes

{

/// <summary>

/// Класс Square — потомок класса Rect.

/// </summary>

public class Square: Rect

{

public Square(int side, int x, int y): base(side,side,x,у)

{

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

}

}

}

Класс Person

Этот класс является прямым потомком класса Figure. Вместе с тем, класс является клиентом трех других классов семейства — Circle, Rect и LittleCircle, поскольку элементы фигуры, составляющие человечка, являются объектами этих классов%

namespace Shapes

{

/// <summary>

/// Класс Person — потомок класса Figure,

/// клиент классов Circle, Rect, LittleCircle.

/// </summary>

public class Person: Figure

{

int head_h;

Circle head;

Rect body;

LittleCircle nose;

public Person (int head_h, int x, int y): base(x,y)

{

// head_h — радиус головы, x,y — ее центр.

// остальные размеры исчисляются относительно

// размера головы.

this.head_h = head_h;

head = new Circle(head_h,x,у);

int body_x = x;

int body_y =

у + 3*head_h;

int body_w =2*head_h;

int body_h = 4*head_h;

body = new Rect(body_w, body_h, body_x,body_y);

nose = new LittleCircle (x+head_h +2, y);

}

public override void Show(System.Drawing.Graphics g,

System.Drawing.Pen pen, System.Drawing.Brush brush)

{

int h = Convert.ToInt32(head_h*scale);

//head

int top_x = center.X — h;

int top_y = center.Y — h;

g. DrawEllipse(pen, top_x,top_y, 2*h,2*h);

g. FillEllipse(brush, top_x,top_y, 2*h,2*h);

//body

top_y += 2*h;

g. DrawRectangle(pen, top_x,top_y, 2*h,4*h);

g. FillRectangle(brush, top_x,top_y, 2*h,4*h);

//nose

top_y — =h; top_x += 2*h;

g. DrawEllipse(pen, top_x,top_y, 8,8);

g. FillEllipse(brush, top_x,top_y, 8,8);

}

public override System.Drawing.Rectangle

Region_Capture

{

int h = Convert.ToInt32(head_h*scale);

int top_x = center.X — h;

int top_y = center.Y — h;

return new

System.Drawing.Rectangle(top_x,top_y,2*h,2*h);

}

}

}

Список с курсором. Динамические структуры данных

Добавим в проект классы, задающие динамические структуры данных. Конечно, можно было бы воспользоваться стандартными… Но для обучения крайне полезно уметь создавать собственные задающие такие структуры данных. Список с курсором — один из важнейших образцов подобных классов:

using System;

namespace Shapes {

/// <summary>

/// Класс TwoWayList(G) описывает двусвязный список с

/// курсором. Элементами списка являются объекты

/// TwoLinkable, хранящие, помимо указателей на двух

/// преемников, объекты типа G.Курсор будет определять

/// текущий (активный) элемент списка. Класс будет

/// определять симметричные операции по отношению к курсору.

/// Конструкторы:

/// Конструктор без параметров будет создавать пустой список

/// Запросы:

/// empty: require: true; возвращает true для пустого списка

/// item: require: not empty; возвращает активный элемент типа G;

/// require: true; возвращает число элементов списка;

/// count: count in[0,n] (count == 0) eqviv empty ;

/// index: require: not empty; возвращает индекс активного элемента.

/// search_res: require: true; возвращает true, если последний поиск был успешным.

/// Команды:

/// put_left(elem): require: true;

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

Предатель. Ты променял меня на бывшую

Верди Алиса
7. Измены
Любовные романы:
современные любовные романы
7.50
рейтинг книги
Предатель. Ты променял меня на бывшую

Черный Баламут. Трилогия

Олди Генри Лайон
Черный Баламут
Фантастика:
героическая фантастика
5.00
рейтинг книги
Черный Баламут. Трилогия

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5

Вы не прошли собеседование

Олешкевич Надежда
1. Укротить миллионера
Любовные романы:
короткие любовные романы
5.00
рейтинг книги
Вы не прошли собеседование

Неудержимый. Книга IV

Боярский Андрей
4. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга IV

Эволюционер из трущоб. Том 3

Панарин Антон
3. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
6.00
рейтинг книги
Эволюционер из трущоб. Том 3

Бестужев. Служба Государевой Безопасности. Книга вторая

Измайлов Сергей
2. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга вторая

Вамп

Парсиев Дмитрий
3. История одного эволюционера
Фантастика:
рпг
городское фэнтези
постапокалипсис
5.00
рейтинг книги
Вамп

Новый Рал 3

Северный Лис
3. Рал!
Фантастика:
попаданцы
5.88
рейтинг книги
Новый Рал 3

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Все ведьмы – стервы, или Ректору больше (не) наливать

Цвик Катерина Александровна
1. Все ведьмы - стервы
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Все ведьмы – стервы, или Ректору больше (не) наливать

Барин-Шабарин 2

Гуров Валерий Александрович
2. Барин-Шабарин
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Барин-Шабарин 2

Сумеречный Стрелок 4

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

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха