Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
выш.мат. методичка.DOC
Скачиваний:
32
Добавлен:
13.02.2015
Размер:
1.71 Mб
Скачать

12.1. Пример использования ооп

В связи с тем, что использование ООП применительно к небольшим програм­мам неэффективно, возникает трудность иллюстрации тех или иных его положе­ний. Тривиальные примеры могут создать впечатление искусственности ООП, его неэффективности, сложные примеры потребуют много усилий для уяснения принципов работы той или иной программы. В связи с этим решено лишь наметить пример сравнительно сложной программы [1] - эк­ранного редактора символьной информации, на котором будут иллюстрироваться все моменты ООП. Т. к. такие редакторы довольно сложны, приведена только его часть, выполняющая небольшое количество функций. В ней совершенно не рассмотрен вопрос работы с внешними файлами, куда записывается набранная в редакторе информация, ограничено число обрабатываемых редактором клавиш. Далее будет сказано, как, используя принципы ООП, можно расширить его фун­кции. Редактор предназначен только для режима дисплея, когда на экране раз­мещается 25 строк по 80 символов в строке. Не следует рассматривать приведен­ную программу как высококачественный редактор - это учебный пример, и он не является лучшим. В частности; программа неудовлетворительна с точки зре­ния быстродействия. Более того, в некоторых случаях выбиралась далеко не оп­тимальная реализация с целью проиллюстрировать те или иные положения ОOП, без которых можно было бы и обойтись. Основная часть редактора оформлена в виде модуля, у которого можно было бы почти полностью не приводить исполнительную часть (implementation), что существенно уменьшило бы размеры при­мера. Эта часть приведена в [1]полностью лишь на тот случай, если читатель захочет проверить работу программы и правильность рассматриваемых положений непосредственно на ПЭВМ.

Особенностью этого редактора является то, что размер строка и число строк него практически не ограничены (фактически число символов в строке и число строк ограничено числом 65535, а также имеющейся оперативной' памятью). Весь текст, набранный в редакторе, представляет собой последовательность строк, а т. к. размер строки может быть произвольным, целесообразно строки набирать из отдельных элементов (вероятно, лучше всего размером в строку экрана), добавляя эти элементы по мере необходимости. Следовательно, набранный текст должен иметь довольно, сложную структуру строк, которые, в свою очередь, состоят из отдельных элементов. При этом можно считать, что сами строки являются элементами всего текста. Нажатие той или иной клавший при­водит к изменению текста (добавлению и удалению символов, формированию новых строк, удалению старых и т. д.). Таким образом, программа предусматри­вает некоторую иерархию объектов, находящихся во взаимной связи. Эта иерар­хия представлена на рис. 2.

Связь элементов

Элемент строки Структура

Строка Текст

Операция

Изображаемые Клавиши Клавиша Клавиша --------

символы направления Еnter ВасkSpасе

Рис. 2. Иерархия объектов программы-редактора

Она фактически состоит из двух групп объектов: объектов, связанных с фор­мированием текста, и объектов, связанных c обработкой нажатия тех или иных клавиш. Каждая из этих групп начинается одним исходным объектом (предком всех последующих). В качестве таких объектов выступают объекты “Связь эле­ментов” - для первой группы - и “Операция” - для второй группы.

Объект "Связь элементов" включает в себя связь определенного элемента с предыдущим и последующим элементами. Объект "Структура" дополнительно определяет для каждого объекта его начальный и конечный элемент (для стро­ки - начальный и конечный элементы строки, для текста - начальная и конечная строки). Объект "Элемент строки" включает в себя строку символов, набранных при работе с редактором, или пробелов, если символы еще не набраны. Объект "Строка" объединяет в себе свойства структуры и элемента строки и предостав­ляет возможность работать со строкой (совокупностью элементов строки) как единым целым. Объект "Текст" позволяет работать с совокупностью всех строк. Здесь же определяются общие параметры текста, как, например, координаты ку­рсора в тексте, координаты начала выводимой на экран информации и т. д.

Вторая группа начинается объектом "Операция", включающим в себя общие действия по обработке нажатия любой клавиши (или комбинации клавиш). Да­лее идут объекты (группы объектов) обработки кодов тех или иных клавиш. В данном примере рассмотрены лишь объекты обработки кодов клавиш, формирующих изображаемые символы (символы с кодом больше 31), клавиш направле­ния (Up, Dn, Left, Right), клавиши формирования новой строки (Еnter) и клавиши удаления символа или объединения строк (ВасkSрасе). Количество объектов обработки кодов клавиш можно в принципе увеличивать. В этой иерархии предшествующие объекты "порождают" последующие и пе­редают им часть своих свойств. Например, объект "Структура" включает в себя свойства объекта "Связь элементов", т. к. несет информацию и о связи конкрет­ных элементов структуры с предыдущими и последующими элементами.