LoveRead.info » Книги » Разная литература » Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»

Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»

Книгу Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория» читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

298 0 18:01, 17-10-2023

Книга Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория» читать онлайн бесплатно без регистрации

Большой и увлекательный, научно-прикладной, образовательный, некоммерческий интернет-журнал, созданный группой энтузиастов. Журнал содержит материалы, найденные в Интернет или написанные для Интернет. Основная тематика статей — то, что можно сделать самому, от садовых поделок до сверхпроводников, но есть и просто полезные материалы.

    1 ... 396 397 398 399 400 401 402 403 404 ... 415
    Перейти на страницу:
    цвета — первый определяет цвет повторяющегося элемента, второй — цвет границы между элементами узора.

    Непосредственное рисование кистью осуществляют методы группы Fill;

    graph.FillEllipse(brush,ret);

    graph.FillPie(brush, ret,30f,60f);

    graph.FillRectangle(brush,ret);

    Первый аргумент всегда задает кисть, а остальные зависят от типа рисуемой фигуры. Как правило, всегда задается прямоугольник, ограничивающий данную фигуру.

    Вызов метода DrawShapes, как уже говорилось, встроен в обработчик события Click формы RandomShapes:

    private void RandomShapes_Click(object sender, System.EventArgs e)

    {

       DrawShapes();

    }

    На этом поставим точку в рассмотрении данной темы. По сути, этим завершается и наш учебный курс. В последней лекции будет рассмотрен некоторый заключительный проект.

    25. Финальный проект

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

    В финальном проекте создается семейство классов, описывающих геометрические фигуры. Проектирование начинается с абстрактного класса поведения, который описывает общие свойства и методы, характерные для всех фигур семейства. Затем, используя наследование, создаются классы конкретных геометрических фигур, начиная с простейших, таких, как круги и прямоугольники, до составных, таких, как класс Person. Мы добавим в наш проект динамические структуры данных, такие, как список с курсором, для хранения в нем фигур семейства. Наконец, мы создадим интерфейс, включающий меню с десятками команд и панель с инструментальными кнопками. Интерфейс позволяет конечному пользователю выполнять различные действия над геометрическими фигурами — создавать, рисовать их на форме, перемещать их с помощью команд и перетаскивать их мышью, менять их размеры и цвет, сохранять в списке и удалять из списка, отображать все фигуры списка или очистить его полностью.

    Проект может служить образцом полноценного Windows-приложения, примером проектирования в классах с демонстрацией преимуществ, предоставляемых наследованием. Закончим на этом рекламную часть и приступим к делу. Хочу предупредить, вас ждут программные тексты, почти без всяких комментариев. Все нужные комментарии были даны в предыдущих лекциях. С моей точки зрения, наиболее интересная часть программистских книжек — это та, в которой приводится программный код. И значит, эта глава самая интересная.

    Абстрактный класс Figure

    Приведем код класса:

    using System;

    using System.Drawing;

    namespace Shapes {

    /// <summary>

    /// Figure — это абстрактный класс; прародитель семейства

    /// классов геометрических фигур. Все фигуры имеют:

    /// центр — center, масштаб — scale, статус

    /// перетаскивания — dragged center — объект встроенного

    /// класса (структуры) Point. Этот объект задает характерную

    /// точку фигуры — чаще всего ее центр (тяжести)

    /// scale задает масштаб фигуры, первоначально единичный.

    /// drugged = true, когда фигура следует за курсором мыши.

    /// над фигурами определены операции: параллельный

    /// перенос — Move(а, Ь) масштабирование — Scale(s)

    /// Показ фигуры — Show. Область захвата — Region_Capture

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

    /// перетаскивание фигуры возможно при установке курсора

    /// мыши в области захвата.

    /// </summary>

    abstract public class Figure

    {

       /// <summary>

       /// закрытые для клиентов атрибуты класса — center, scale

       /// </summary>

       protected Point center;

       protected double scale;

       protected bool dragged;

       protected Color color;

       //Доступ к свойствам

       public Point center_figure

       {

           get {return(center);}

           set {center = value;}

       }

       public double scale_figure

       {

           get {return(scale);}

           set {scale = value;}

       }

       public bool dragged figure

       }

           get {return(dragged);}

           set {dragged = value;}

       }

       public Color color figure

       {

           get {return (color);}

           set {color = value;}

       }

       /// <summary>

       /// базовый конструктор фигур

       /// </summary>

       /// <param name="х">координата X характерной точки

       ///фигуры</param>

       /// <param name="у">Координата Y характерной точки

       ///фигуры</param>

       public Figure(int x, int y)

       {

            center = new Point(x,y);

            scale = 1;

            dragged = false;

            color = Color.ForestGreen;

       }

       /// <summary>

       /// отложенный метод

       /// Параллельный перенос фигуры на (а, Ь)

       /// require: true;

       /// ensure: для любой точки фигуры р(х, у):

       /// х = old(x) + а; у = old(у) + Ь;

       /// </summary>

       /// <param name="a">a — перемещение по горизонтали

       /// вправо </param>

       /// <param name="b">b — перемещение по вертикали

       /// вниз</param>

       /// Замечание: Для того, чтобы фигура при рисовании была

       /// полностью видимой, координаты всех ее точек должны

       /// быть в пределах области рисования,

       public void Move (int a,int b)

       {

            center.X +=a; center.Y += b;

       }

       /// <summary>

       /// изменяет масштаб фигуры

       /// </summary>

       /// <param name="s">масштаб изменяется в s раз</param>

       public void Scale(double s)

       {

             scale*=s;

       }

       /// <summary>

       /// рисование фигуры в окне, передающем объекты g и реп

       /// </summary>

       /// <param name="g"> графический объект, методы которого

       /// рисуют фигуру</param>

       /// <param name="pen">перо рисования</param>

       public abstract void Show(Graphics g, Pen pen,

            Brush brush);

       public abstract System.Drawing.Rectangle Region_Capture();

    }

    Абстрактный класс, относящийся к этапу проектирования системы, вместе с тем является важнейшим элементом заключительного семейства классов. В этом проявляется мощь объектно-ориентированного подхода к разработке программных систем. Заметьте, на данном уровне большая часть текста представляет документацию, являющуюся неотъемлемой частью программного проекта. Документация записана в тегах <summary>, что позволяет автоматически ее извлечь и сохранить в виде XML-отчета.

    Классы семейства геометрических фигур

    Приведем теперь программные коды классов, являющихся потомками класса Figure.

    Класс Ellipse

    Вот программный код этого класса:

    using System;

    using System.Drawing;

    namespace

    1 ... 396 397 398 399 400 401 402 403 404 ... 415
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Валентина Валентина04 июль 13:25 Большое спасибо за интересную тему.  Сюжет заманчиввй,интересный. Жду продолжения ... Лекарь Фамильяров. Том 7 - Александр Лиманский
    2. Наталья По Наталья По01 июль 10:12 Ужасный перевод:(... Аркадия - Эрин Дум
    3. Вика Вика29 июнь 21:56 Какая хрень с первых строк.  У ребенка в 14 месяце не может быть черепно мозговой травмы при падании с дивана ... Вернуть семью любой ценой - Чарли Ви
    Все комметарии
    Новинки бесплатной онлайн библиотеки