Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Реакция на нажатие символьных клавиш
Необходимо описать каждый модуль. Описать его функции, допустимые входные и возможные выходные данные, описать основные процессы обработки данных, а также составить тестовые примеры. После разбиения программы на модули следует тщательно проверить его вручную. Ошибки могут обнаруживаться на всех стадиях разработки, однако чем раньше обнаруживается ошибка, тем легче ее исправить.
Проектирование снизу вверх При проектировании снизу вверх сначала проектируются модули самого низкого уровня. Затем на их основе проектируются модули более высокого уровня. Процесс продолжатся до тех пор, пока не будет спроектирована вся задача. Пример — нарисовать шахматную доску с позицией фигур. Шаг 1. Выполним проектирования модулей нижнего уровня: 1) модуль, рисующий черную клетку; 2) модуль, рисующий белую клетку; 3) модуль, рисующий пешку; 4) модуль, рисующий ладью; 5) модуль, рисующий коня; 6) модуль, рисующий слона; 7) модуль, рисующий ферзя; 8) модуль, рисующий короля. Шаг 2. Выполним проектирование модулей более высокого уровня: 9) модуль, рисующий шахматную доску; можно спро 10) модуль, рисующий позицию фигур на доске; мож Шаг 3. Выполним проектирование главного модуля программы. Его можно спроектировать на основе модулей 9 и 10. Проектирование и написание программ снизу вверх удобно тем, что модули более высокого уровня собираются из проверенных и оттестированных программ. А неудобно тем, что снизу вверх трудно запроектировать достаточно сложные программы. Опишем входные и выходные данные всех модулей проекта. Модуль I. Модуль, рисующий черную клетку. Входные данные: координаты центра клетки. Выходные данные: -//-. Модуль II. Модуль, рисующий белую клетку. Входные данные: координаты центра клетки. Выходные данные: -//—. Модуль III. Модуль, рисующий пешку. Входные данные: координаты центра клетки, цвет границы фигуры, цвет заполнения фигур. Выходные данные: г//—. Модуль IV. Модуль, рисующий ладью. Модуль V. Модуль, рисующий коня. Модуль VI. Модуль, рисующий слона. Входные и выходные данные аналогичны модулю 3. Модуль VII. Модуль, рисующий ферзя^ Модуль VIII. Модуль, рисующий короля. Модули 1-8 использую константу размер клетки. Модуль IX. Модуль, рисующий шахматную доску. Входные данные: —//—■ Выходные данные: —//—. Модуль X. Модуль, рисующий позицию фигур на доске. Входные данные: массив координат фигур на доске. Выходные данные: — //-. Модуль XI. Главный модуль. Входные данные: массив координат фигур. Выходные данные: —//—. Введение в объектно-ориентированное Программирование и программирование С управлением по событиям. Основные понятия Концепция объЕКтно-орИЕНтировлнного ПРОГРАММИРОВАНИЯ Уже из названия ясно, что изучаемый сейчас вами стиль программирования ориентирован на некоторые объекты. Что же такое объекты, и как на них ориентируются? Определим некоторые базовые понятия объектно-ориентированного программирования. + Объекты — это некоторые элементы, из которых строится приложение (программное). С объектами связаны также такие понятия, как свойства события и методы, а так же классы объектов и методов. + Свойство — это определяющая характеристика некоторых вещей, с которыми работает программист, которая влияет на то, как будет выглядеть компонент, а также на его невидимые черты (поведение).
8. Информатика ♦ Событие — это то, что происходит в реальном време ♦ Методы можно охарактеризовать как способы, которы Более строго метод можно определить следующим образом. ■ f Метод — это процедура, которая определена как часть класса и инкапсулирована (содержится) в нем. Как объекты, так и их методы подразделяются на классы. + Класс — это категория объектов или методов, обладающих одинаковыми свойствами и поведением. При этом объект представляет собой просто экземпляр какого-либо класса. Методы манипулируют полями и свойствами классов (хотя могут работать и с любыми переменными) и имеют автоматический доступ к любым полям и методам своего класса. Доступ к полям и методам других классов зависит от уровня «защищенности» этих полей и методов. Методы объектов Object Pascal могут иметь любой из трех типов: - статический, - виртуальный, - динамический. + Под «диспетчеризацией» вызовов методов объектов понимается то, каким образом приложение будет определять, какой код требуется выполнить при вызове того или иного метода. Так как статические и виртуальные методы не претерпели принципиальных изменений по сравнению с Borland Pascal 7.0 остановимся на новом по реализации типе — динамическом (который, вообще говоря, присутствовал в неявной форме в библиотеке OWL). Динамические (dynamic) методы по возможностям наследования и перекрытия аналогичны виртуальным, но, в отличие от последних, не имеют входов в таблицу VMT. Такой подход позволяет снизить расход памяти при большом количестве этих методов и самих классов. Virtual Methods Table (VMT) — структура, содержащая ссылки на виртуальные методы. При инициализации экземпляра объекта происходит так называемое «позднее связывание», то есть установление связи между «автоматическим» полем Self объекта и VMT. Self передается в качестве дополнительного неявного параметра в любой из виртуальных методов для определения, какой из них к какому уровню иерархии наследования относится. В отличие от виртуальных методов и самой идеологии VMT, таблица динамических методов (DMT) содержит входы только для методов, объявленных или перекрытых для данного класса. На каждый динамический метод приходится только одна ссылка, представленная так называемым «индексом», по которому и происходит поиск метода для вызова (базовая информация по обработке динамических методов содержится в модуле x: \delphi\source\ rtl\sys\dmth.asm). С точки зрения синтаксиса перекрытие динамических и виртуальных методов производится одинаково —- с использованием ключевого слова override. Исключение составляют обработчики Windows-сообщений. + Делегирование. Под делегированием понимается то, что некий объект может предоставить другому объекту отвечать на некоторые события. Такая модель в некоторых случаях значительно упрощает программирование. К примеру, когда вы добавляете кнопку в форму и прикрепляете код, обрабатывающий нажатие, вы фактически используете делегирование кода для ассоциирования кода с событием OnClick. Такая ассоциация происходит для вас автоматически. Если проверить страницу Events в Инспекторе объектов для вашего приложения, можно увидеть ассоциированные с событиями процедуры. Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 741; Нарушение авторского права страницы