![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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: 510; Нарушение авторских прав |