Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»
Книгу Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория» читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!
Шрифт:
Интервал:
Закладка:
/// 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. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
- 2. Просьба отказаться от оскорблений, угроз и запугиваний.
- 3. Просьба отказаться от нецензурной лексики.
- 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.
Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.
Оставить комментарий
-
Волошина Вера Ивановна05 август 04:07 Плохо де вы относитесь а читателям предупреждая их о таком. Ну лабро, бог вам судья и будет возмездие. Книга замечательная. И ее... Барселонская галерея - Олег Рой
-
Гость Екатерина03 август 20:06 Ужасный сайт. Читать онлайн невозможно. Постоянно викидывает. Нервов не хватает!... Королевство гнева и тумана - Сара Маас
-
Артур01 август 01:14 "Там, где лес не растëт", конечно, тяжëлая книга... Концовка слëзы выжимает нещадно. ... Там, где лес не растет - Мария Семенова