Читаем Интернет-журнал "Домашняя лаборатория", 2007 №9 полностью

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


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

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

using System;

namespace Shapes

{

   ///

   /// Класс 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

   ///

    public class Linkable

    {

         public Linkable ()

         {

             item =null; next = null;

         }

         ///

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

         ///

         Figure item;

         Linkable next;

         ///

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

         ///

         public Figure Item {

         get {

               return(item);

               }

          set {

               item = value;

                }

           }

           public Linkable Next {

           get {

                 return(next);

                 }

            set {

                 next = value;

                  }

            }

      }//class Linkable

      ///

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

      ///

      public class TwoLinkable

      {


            public TwoLinkable()

            {

               prev = next = null;

            }

            ///

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

            ///

            TwoLinkable prev, next;

            Figure item;

            ///

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

            ///

            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 кнопками, команды которых повторяли основную команду меню. Описывать процесс создания интерфейса не буду — он подробно рассмотрен в предыдущей главе. Поскольку вся работа по созданию интерфейса транслируется в программный код формы, то просто приведу этот достаточно длинный текст почти без всяких купюр:

Перейти на страницу:

Похожие книги