Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Проектирование класса многоугольника





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

struct myPoint

{

public int X, // положение точки по горизонтали

Y; // положение точки по вертикали

}

Однако, наилучшим вариантом представляется использование уже готовой структуры, встроенной в язык С# под названием – Point. Этот значительно более мощный тип, обладающий более широкими функциональными возможностями. Она содержит в себе следующие элементы:

public struct Point

{

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

public Point(int dw);

public Point(Size sz);

public Point(int x, int y);

// Статические данные

public static readonly Point Empty;

// Статические методы

public static Point Add(Point pt, Size sz);

public static Point Ceiling(PointF value);

public static Point Round(PointF value);

public static Point Subtract(Point pt, Size sz);

public static Point Truncate(PointF value);

// Статические операторы

public static Point operator -(Point pt, Size sz);

public static bool operator!=(Point left, Point right);

public static Point operator +(Point pt, Size sz);

public static bool operator ==(Point left, Point right);

public static explicit operator Size(Point p);

public static implicit operator PointF(Point p);

// Свойства:

public bool IsEmpty { get; }

public int X { get; set; }

public int Y { get; set; }

// Собственные методы класса

public void Offset(Point p);

public void Offset(int dx, int dy);

// Переопределенные виртуальные методы базового класса

public override bool Equals(object obj);

public override int GetHashCode();

public override string ToString();

}

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

// Листинг 1: Для класса, содержащего массив элементов точек

class Figura

{

// Данные, характеризующие свойства объектов данного класса

….

myPoint Array[30]; // Массив из 30-ти элементов типа – myPoint

int PointsNum; // Реальное количество вершин у многоугольника

public:

Figura(); // Конструктор класса

void AddPoint(int x, int y); // Добавление новой вершины в фигуру

// Другие функции, определяющие поведение объектов данного класса

…..

}

или:

// Листинг 2: Для класса, содержащего список элементов точек

class Figura

{

// Данные, характеризующие свойства объектов данного класса

….

List<Point> PointList; // Список точек

public:

Figura(); // Конструктор класса

void AddPoint(int x, int y); // Добавление новой вершины в фигуру

// Другие функции, определяющие поведение объектов данного класса

….

}

В первом варианте класса фигуры используется представление точки в виде созданной нами структуры типа myPoint и их хранилища в виде массива из ограниченного количества элементов.

Во втором варианте класса фигуры используется встроенная в язык С# структура типа Point и хранилище вершин фигуры, представленное в виде списка.

На основании анализа понятия о многоугольнике, проведенного выше, можно предложить более детальный вариант реализации его класса:

class Figura

{

// Данные, характеризующие состояние объектов данного класса:

List<Point> PointList; // Список точек (вершин многоугольника))

Color bc, // Цвет контура

fc; // Цвет закраски

public:

Figura(); // Конструктор класса

// Свойства:

public BColor

{

set{ bc=value; }

get{ return bc; }

}

public FColor

{

set{ fc=value; }

get{ return fc; }

}

public void AddPoint(int x, int y); // Добавление новой вершины в фигуру

public void Draw(Graphics g){…}; // Рисование многоугольника

public void Move(int dx, int dy){…}; // Рисование многоугольника

// Определение попадания курсора в область фигуры

public bool IsInto(int xc, int yc){…};

}

Date: 2015-07-24; view: 450; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию