12165

КЛАССЫ ОБЩЕГО НАЗНАЧЕНИЯ

Лекция

Информатика, кибернетика и программирование

Классы общего назначения Как показывает практика в большинстве задач приходится использовать однотипные структуры данных: списки массивы множества и т.д. От задачи к задаче изменяются только их элементы а методы работы сохраняются. Например для любого списка нужны п...

Русский

2013-04-24

51 KB

3 чел.

Классы общего назначения

Как показывает практика, в большинстве задач приходится использовать однотипные структуры данных: списки, массивы, множества и т.д. От задачи к задаче изменяются только их элементы, а методы работы сохраняются. Например, для любого списка нужны процедуры вставки и удаления элементов. В связи с этим возникает естественное желание решить задачу "в общем виде", т.е. создать универсальные средства для управления основными структурами данных. Эта идея не нова. Она давно пришла в голову разработчикам инструментальных пакетов, которые быстро наплодили множество вспомогательных библиотек. Эти библиотеки содержали классы объектов для работы со списками, коллекциями (динамические массивы с переменным количеством элементов), словарями (коллекции, индексированные строками) и другими "абстрактными" структурами. Для среды Delphi тоже разработаны аналогичные классы объектов. Их большая часть сосредоточена в модуле Classes. Наиболее нужными для вас являются списки строк (TStrings, TStringList) и потоки (TSream, THandleSream, TFileStream, TMemoryStream и TBlobStream). Рассмотрим кратко их назначение и применение.

Классы для представления списка строк

Для работы со списками строк служат классы TStrings и TStringList. Они используются в библиотеке VCL повсеместно и имеют гораздо большую универсальность, чем та, что можно почерпнуть из их названия. Классы TStrings и TStringList служат для представления не просто списка строк, а списка элементов, каждый из которых представляет собой пару строка-объект. Если со строками не ассоциированы объекты, получается обычный список строк.

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

Свойства класса TStrings описаны ниже.

Count: Integer — число элементов в списке.

Strings[Index: Integer]: string — обеспечивает доступ к массиву строк по индексу. Первая строка имеет индекс, равный 0. Свойство Strings является основным свойством объекта.

Objects[Index: Integer]: TObject — обеспечивает доступ к массиву объектов. Свойства Strings и Objects позволяют использовать объект TStrings как хранилище строк и ассоциированных с ними объектов произвольных классов.

Text: string — позволяет интерпретировать список строк, как одну большую строку, в которой элементы разделены символами #13#10 (возврат каретки и перевод строки).

Наследники класса TStrings иногда используются для хранения строк вида Имя=Значение, в частности, строк INI-файлов (см. гл. 6). Для удобной работы с такими строками в классе TStrings дополнительно имеются следующие свойства.

Names[Index: Integer]: string — обеспечивает доступ к той части строки, в которой содержится имя.

Values[const Name: string]: string — обеспечивает доступ к той части строки, в которой содержится значение. Указывая вместо Name ту часть строки, которая находится слева от знака равенства, вы получаете ту часть, что находится справа.

Управление элементами списка осуществляется с помощью следующих методов:

Add(const S: string): Integer — добавляет новую строку S в список и возвращает ее позицию. Новая строка добавляется в конец списка.

AddObject(const S: string; AObject: TObject): Integer — добавляет в список строку S и ассоциированный с ней объект AObject. Возвращает индекс пары строка-объект.

AddStrings(Strings: TStrings) — добавляет группу строк в существующий список.

Append(const S: string) — делает то же, что и Add, но не возвращает значения.

Clear — удаляет из списка все элементы.

Delete(Index: Integer) — удаляет строку и ассоциированный с ней объект. Метод Delete, также как метод Clear не разрушают объектов, т.е. не вызывают у них деструктор. Об этом вы должны позаботиться сами.

Equals(Strings: TStrings): Boolean — Возвращает True, если список строк в точности равен тому, что передан в параметре Strings.

Exchange(Index1, Index2: Integer) — меняет два элемента местами.

GetText: PChar — возвращает все строки списка в виде одной большой нуль-терминированной строки.

IndexOf(const S: string): Integer — возвращает позицию строки S в списке. Если заданная строка в списке отсутствует, функция возвращает значение -1.

IndexOfName(const Name: string): Integer — возвращает позицию строки, которая имеет вид Имя=Значение и содержит в себе Имя, равное Name.

IndexOfObject(AObject: TObject): Integer — возвращает позицию объекта AObject в массиве Objects. Если заданный объект в списке отсутствует, функция возвращает значение -1.

Insert(Index: Integer; const S: string) — вставляет в список строку S в позицию Index.

InsertObject(Index: Integer; const S: string; AObject: TObject) — вставляет в список строку S и ассоциированный с ней объект AObject в позицию Index.

LoadFromFile(const FileName: string) — загружает строки списка из текстового файла.

LoadFromStream(Stream: TStream) — загружает строки списка из потока данных (см. ниже).

Move(CurIndex, NewIndex: Integer) — изменяет позицию элемента (пары строка-объект) в списке.

SaveToFile(const FileName: string) — сохраняет строки списка в текстовом файле.

SaveToStream(Stream: TStream) — сохраняет строки списка в потоке данных.

SetText(Text: PChar) — загружает строки списка из одной большой нуль-терминированной строки.

Класс TStringList добавляет к TStrings несколько дополнительных свойств и методов, а также два свойства-события для уведомления об изменениях в списке. Они описаны ниже.

Свойства:

Duplicates: TDuplicates — определяет, разрешено ли использовать дублированные строки в списке. Свойство может принимать следующие значения: dupIgnore (дубликаты игнорируются), dupAccept (дубликаты разрешены), dupError (дубликаты запрещены, попытка добавить в список дубликат вызывает ошибку).

Sorted: Boolean — если имеет значение True, то строки автоматически сортируются в алфавитном порядке.

Методы:

Find(const S: string; var Index: Integer): Boolean — выполняет поиск строки S в списке строк. Если строка найдена, Find помещает ее позицию в переменную, переданную в параметре Index, и возвращает True.

Sort — сортирует строки в алфавитном порядке.

События:

OnChange: TNotifyEvent — указывает на обработчик события, который выполнится при изменении содержимого списка. Событие OnChange генерируется после того, как были сделаны изменения.

OnChanging: TNotifyEvent — указывает на обработчик события, который выполнится при изменении содержимого списка. Событие OnChanging генерируется перед тем, как будут сделаны изменения.

Ниже приводится фрагмент программы, демонстрирующий создание списка строк и манипулирование его элементами:

var

 Items: TStrings;

 I: Integer;

begin

 // Создание списка

 Items := TStringList.Create;

 Items.Add('Туризм');

 Items.Add('Наука');

 Items.Insert(1, 'Бизнес');

 ...

 // Работа со списком

 for I := 0 to Items.Count - 1 do

   Items[I] := UpperCase(Items[I]);

 ...

 // Удаление списка

 Items.Free;

end;


 

А также другие работы, которые могут Вас заинтересовать

24472. Темперамент: его свойства и типология 46.5 KB
  Тип темперамента тесно связан с врожденными анатомофизиологическими особенностями высшей нервной деятельности. К свойствам темперамента можно отнести те отличительные индивидуальные признаки человека которые определяют собой динамические аспекты всех его видов деятельности характеризуют особенности протекания психических процессов имеют более или менее устойчивый характер сохраняются в течение длительного времени проявляясь вскоре после рождения. Небылицин выделяет три ведущих свойства темперамента относящихся к сферам общей активности...
24473. Характер: его формирование и детерминанты 53 KB
  Последний представляет собой динамическую сторону характера. В состав характера человека входят следующие свойства личности: Свойства личности которые определяют поступки человека в выборе целей деятельности. Черты которые относятся к действиям направленным на достижение поставленных целей: настойчивость целеустремленность последовательность и другие а также альтернативные им как свидетельство отсутствия характера. Формирование характера и его детерминанты.
24474. Задатки, способности, одаренность 41.5 KB
  Способности индивидуальнопсихологические особенности личности являющиеся условием успешного выполнения той или иной деятельности. Теплова способности это индивидуальнопсихологические особенности отличающие одного человека от другого и имеющие отношение к успешности выполнения деятельности. Теплов считает индивидуальное своеобразие продуктивной деятельности оригинальность и самобытность приемов используемых в деятельности. 2 Способности служат успешному выполнению деятельности.
24475. Потребности и мотивы. Направленность личности 54.5 KB
  Возникновение потребности является механизмом запускающим активность человека на поиск и достижение цели которая может удовлетворить эту потребность. Существуют различные классификации потребностей человека которые чаще всего строятся на основе таких критериев как зависимость организма или личности от какихто объектов а также по нуждам которые он испытывает. Деятельность человека направляется не одним мотивом а их совокупностью т. В основе внутренних мотивов лежат потребности человека его эмоции интересы.
24476. Стратегия и этапы индивидуальной психологической помощи клиентам с проблемами нарко/алко-зависимости 55.5 KB
  Важнейшими мотивами воздержания являются: стремление быть социально полезным способствовать изменениям в обществе самореализация поиск единомышленников из чувства долга за полученную в прошлом помощь интересно провести досуг решить собственные проблемы. Предлагается поэтапное продвижение к открытому рассмотрению проблемы а затем к намерению изменить ситуацию. Потенциальные ресурсы преодоления проблемы. В качестве потенциальных ресурсов преодоления проблемы важно оценить следующие области: 1.
24477. Психология в системе наук о человеке. Предмет и структура психологической науки. Прикладная психология и её задачи 43 KB
  Психология в системе наук о человеке. Прикладная психология и её задачи. В наиболее общем виде психология может быть определена как наука направленная на изучение закономерностей развития и функционирования психики как особой формы жизнедеятельности. Современная психология находится в системе наук занимая промежуточное положение между философскими науками с одной стороны естественными с другой социальными с третьей.
24478. Классификация методов психологического исследования 36.5 KB
  Классификация методов психологического исследования. Метод путь познания опирающийся на некую совокупность ранее полученных знаний принципов. Существуют различные подходы к описанию и классификации методов психологического исследования. Наиболее общепризнанной классификацией методов психологического исследования в отечественной психологии является классификация Б.
24479. Эволюция психики в филогенезе. Стадии развития психики 28.5 KB
  Эволюция психики в филогенезе. Стадии развития психики. Развитие психики в филогенезе это качественные изменения психики происходящие в рамках эволюционного развития живых существ обусловленные усложнением их взаимодействия с окружающей средой. Леонтьева объективным критерием психики является способность организма реагировать на биологически нейтральные абиотические свойства внешней среды.
24480. Бихевиоризм и необихевиоризм.Теория оперантного бихевиоризма 47 KB
  Предмет бихевиоризма или поведенческой психологии поведение которое понималось как совокупность реакций индивида на стимулы внешней среды. Основная задача бихевиоризма по Уотсону заключается в накоплении наблюдений над поведением человека для того чтобы в каждом данном случае при данном стимуле психолог мог предсказать какова будет реакция или если дана реакция какой ситуацией данная реакция вызвана...