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

на главную

Жанры

Интернет-журнал "Домашняя лаборатория", 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;

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

Мимик нового Мира 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
рейтинг книги
Сыночек в награду. Подари мне любовь