Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# - лекции IntUit (Биллиг В.А.).pdf
Скачиваний:
140
Добавлен:
13.02.2015
Размер:
4.13 Mб
Скачать

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)задает элементы списка,включающие:

///информационное поле типа 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

{

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]