Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Рекомендации по выполнению задания



Для создания новых классов в проектах Visual Studio.NET можно использовать команду «Project» –> «Add class…». Visual Studio предлагает указать имя файла, в котором будет сохранён новый класс с соответствующим именем.

Пункт 1

Базовый класс для иерархии геометрических фигур рекомендуется сделать абстрактным классом.

При этом заголовок класса может выглядеть следующим образом:

abstract class Figure

Класс должен как минимум содержать:

· данные, хранящие информацию о двух точках, задающих размеры блока геометрической фигуры;

· конструктор класса, получающий эти точки в качестве аргументов;

· абстрактные методы Draw, DrawDash, Hide, которые должны будут обеспечивать рисование, рисование пунктиром и стирание фигур соответственно.

Абстрактные методы задаются с ключевым словом abstract и не содержат тела метода.

В производных классах эти методы будут получать реализацию, соответствующую типу конкретной фигуры. При этом они объявляются с использованием ключевого слова override.

Пример объявлений абстрактного метода в базовом классе и его реализации в производном классе:

public abstract void Draw(Graphics g);

public override void Draw(Graphics g) {…}

Функции рисования должны получать в качестве аргумента объект Graphics, который им должна передавать форма, в которой будет рисоваться фигура.

Также в классе Figure можно уже поместить реализацию метода MouseMove, который получая от формы Graphics и координаты мыши, будет перемещать фигуру в новое положение, последовательно стирая её в исходном положении, изменяя координаты второй точки, задающей фигуру, и отображая фигуру в новом положении пунктиром.

Также можно поместить в этот класс вспомогательный метод для нормализации координат прямоугольника, которая может требоваться для корректного вызова функций рисования. Чтобы метод в C# мог изменять значения переменных, переданных ему через аргументы, при объявлении этих аргументов и их передаче в метод должен использоваться префикс ref, обеспечивающий передачу аргумента по ссылке, а не по значению.

Например, заголовок функции нормализации двух пар координат может быть следующим:

public void norm(ref int x1, ref int y1, ref int x2, ref int y2)

Пункт 2

Класс, моделирующий прямоугольник, должен быть объявлен производным от класса фигуры и должен содержать соответствующую реализацию абстрактных методов, объявленных в классе фигуры.

Конструктор класса должен получать координаты углов прямоугольника и передавать их классу точки. Передача аргументов конструктору базового класса выполняется с использованием ключевого слова base.

Например:

public Rect(Point point1, Point point2): base(point1, point2) {}

Пункт 3

Динамический массив следует сделать полем класса Form2 и проинициализировать это поле в конструкторе класса Form2.

При нажатии на левую кнопку мыши должен создаваться экземпляр класса прямоугольник.

При перемещении мыши он должен использоваться для прорисовки перемещения.

При отпускании левой кнопки должен рисоваться окончательный вид прямоугольника и он должен добавляться к динамическому массиву.

Код класса формы следует очистить от всех деталей, связанных с рисованием прямоугольников и обработкой их координат. Он должен лишь управлять объектами, выполняющими эти действия.

Пункт 4

Для восстановления информации в окне следует реализовать в классе Form2 обработчик события Paint. Этот метод должен перебирать все элементы динамического массива и перерисовывать их.

После этого в конец блока, обрабатывающего добавление нового прямоугольника в массив, следует добавить вызов метода Invalidate(), который также инициирует перерисовку окна. Этот вызов обеспечит устранение дефектов рисунка, которые могут появляться в процессе добавления новых элементов к рисунку.





Дата публикования: 2015-06-12; Прочитано: 251 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...