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

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

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

298 0 18:01, 17-10-2023

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

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

    1 ... 399 400 401 402 403 404 405 406 407 ... 415
    Перейти на страницу:
    require: true;

           /// ensure: сделать активным первый элемент;

           /// </summary>

           public void start()

           {

                cursor = first; index = 1;

           }//start

           /// <summary>

           /// finish: require: true;

           /// ensure: сделать активным последний элемент;

           /// </summary>

           public void finish()

           {

                cursor = last; index = count;

           }//finish

           /// <summary>

           /// go_prev: require: not (index = 1);

           /// ensure: сделать активным предыдущий элемент;

           /// </summary>

           public void go_prev()

           {

                cursor = cursor.Prev; index-;

            }// go_prev

            /// <summary>

            /// go_next: require: not (index = count);

            /// ensure: сделать активным последующий элемент

            /// </summary>

            public void go_next()

            {

                cursor = cursor.Next; index++;

            }// go_next

            /// <summary>

            /// go_i(i): require: (i in [1, count]);

            /// ensure: сделать активным элемент с индексом

            /// </summary>

            /// <param name="i" x/param>

            public void go_i(int i)

            {

                if(i >index)

                     while (i>index)

                     {

                         cursor = cursor.Next; index++;

                      }

                 else if(i<index)

                         while (i<index)

                      {

                         cursor = cursor.Prev; index-;

                      }

            }// go_i

            /// операции поиска:

            /// <summary>

            /// search_prev(elem): require: not (index = 1);

            /// ensure: сделать активным первый элемент elem слева от курсора;

            /// </summary>

            /// <param name="elem">искомый элемент</param>

            public virtual void search_prev(Figure elem)

            {

                bool found = false;

                while (!found && (index!=1))

                {

                     cursor = cursor.Prev; index-;

                     found = (elem == item());

                }

                search_res = found;

            }// search_prev

        /// <summary>

        /// успех или неуспех поиска сохранять в булевской

        /// переменной search_res

        /// search_next: require: not (index = count);

        /// ensure: сделать активным первый элемент elem справа от курсора;

        /// успех или неуспех поиска сохранять в булевской

        /// переменной search_res

        /// </summary>

        /// <param name="elem"></param>

           public virtual void search_next(Figure elem)

           {

               bool found = false;

               while (!found && (index!=count))

               {

                   cursor = cursor.Next; index++;

                   found = (elem == item());

               }

               search_res = found;

           }//search_next

        }

    }

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

    Классы элементов списка

    Рассмотрим классы, описывающие элементы списков — элементы с одним и с двумя указателями:

    using System;

    namespace Shapes

    {

       /// <summary>

       /// Класс Linkable(T)задает элементы списка, включающие:

       /// информационное поле типа Т — item

       /// ссылку на элемент типа Linkable — next

       /// Функции:

       /// конструктор new: —> Linkable

       /// запросы:

       /// Get_Item: Linkable —> T

       /// Get_Next: Linkable —> Linkable

       /// процедуры:

       /// Set_Item: Linkable*T —> Linkable

       /// Set_Next: Linkable*Linkable —> Linkable

       /// Роль типа T играет Figure

       /// </summary>

        public class Linkable

        {

             public Linkable ()

             {

                 item =null; next = null;

             }

             /// <summary>

             /// закрытые атрибуты класса

             /// </summary>

             Figure item;

             Linkable next;

             /// <summary>

             /// процедуры свойства для доступа к полям класса

             /// </summary>

             public Figure Item {

             get {

                   return(item);

                   }

              set {

                   item = value;

                    }

               }

               public Linkable Next {

               get {

                     return(next);

                     }

                set {

                     next = value;

                      }

                }

          }//class Linkable

          /// <summary>

          /// Класс TwoLinkable задает элементы с двумя ссылками

          /// </summary>

          public class TwoLinkable

          {

                public TwoLinkable()

                {

                   prev = next = null;

                }

                /// <summary>

                /// закрытые атрибуты класса

                /// </summary>

                TwoLinkable prev, next;

                Figure item;

                /// <summary>

                /// процедуры свойства для доступа к полям класса

                /// </summary>

                public Figure Item

                {

                    get

                    {

                        return(item);

                    }

                    set

                    {

                         item = value;

                    }

             }

             public TwoLinkable Next

             {

                    get

                    {

                         return(next);

                    }

                    set

                    {

                         next = value;

                    }

              }

              public TwoLinkable Prev

              {

                    get

                    {

                          return(prev);

                    }

                    set

                    {

                          prev = value;

                    }

              }

         }//class TwoLinkable

    }

    Организация интерфейса

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

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

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


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

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

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


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

    Новые отзывы

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