- •Введение
- •Как использовать руководства по Borland Pascal
- •Глава 1. Установка и запуск Borland Pascal
- •Использование программы Install
- •Программа Install и Windows
- •Запуск Borland Pascal
- •Защищенный режим и память
- •Запуск Borland Pascal for Windows
- •Запуск bp.Exe в расширенном режиме Windows 386
- •Запуск bp.Exe в стандартном режиме Windows
- •Запуск bp.Exe в окне Windows dos
- •Жидкокристаллические и плазменные экраны
- •Файл readme
- •Файлы filelist.Doc и helpme!.Doc
- •Примеры программ
- •Глава 2. Что нового в Borland Pascal
- •Три интегрированных интерактивных среды разработки программ
- •Новые средства ide
- •Компилятор командной строки, работающий в защищенном режиме
- •Среда разработки программ защищенного режима dos
- •Динамически компонуемые библиотеки dos
- •Добавления к языку Паскаль
- •Улучшения в библиотеке исполняющей системы
- •Новые подпрограммы модуля System
- •Новые модули
- •Новые директивы компилятора
- •Усовершенствования компилятора
- •Улучшения в Turbo Vision
- •Улучшения ObjectWindows
- •Новые средства и утилиты
- •Глава 3. Основы интегрированной среды для dos
- •Запуск ide
- •Компоненты интегрированной среды
- •Окна ide
- •Управление окном
- •Строка состояния
- •Диалоговые окна
- •Глава 4. Программирование в интегрированной интерактивной среде для dos
- •Запуск ide и выход из нее
- •Параметры запуска
- •Установка параметров запуска в интегрированной среде
- •Выход из ide
- •Использование справочной системы Help
- •Перемещение в справочной системе
- •Запрос помощи
- •Копирование примеров исходного кода
- •Загрузка других справочных файлов
- •Выход из справочника Help
- •Запись и редактирование исходного кода
- •Настройка конфигурации редактора
- •Изменение решения: команда Undo
- •Групповая отмена
- •Отмена отмены
- •Работа с блоками текста
- •Выделение блока
- •Вырезание, копирование и вставка блоков
- •Изменение поведения выделенных блоков
- •Поиск и замена
- •Соответствие пар ограничителей
- •Переход к строке с заданным номером
- •Использование локального меню окна редактирования
- •Выделение синтаксиса
- •Выбор файлов для выделения
- •Запрещение выделения синтаксиса
- •Глава 4. Программирование в интегрированной интерактивной среде для dos (часть2) Печать исходного кода
- •Работа с файлами
- •Открытие файлов
- •Открытие файла в позиции курсора
- •Компиляция и выполнение
- •Выбор целевой платформы
- •Компиляция
- •Формирование (Make)
- •Построение (Build)
- •Выполнение
- •Передача программе параметров
- •Параметры компилятора и компоновщика
- •Оптимизация кода
- •Условная компиляция
- •Директивы define и undef
- •Предопределенные идентификаторы
- •Идентификаторы iFxxx, else и endif
- •Директивы ifdef и ifndef
- •Директива ifopt
- •Просмотр исходного кода
- •Просмотр объектов
- •Просмотр модулей
- •Просмотр глобальных идентификаторов
- •Просмотр идентификаторов в исходном коде
- •Просмотр функций ObjectBrowser
- •Выполнение в ide других программ
- •Настройка меню Tools
- •Работа с окном Messages
- •Настройка конфигурации ide
- •Сохранение рабочей операционной среды
- •Использование файла конфигурации
- •Использование файла оперативной области
- •Управление проектом
- •Глава 5. Программирование в интегрированной интерактивной среде для Windows
- •Запуск ide для Windows
- •Использование оперативной полосы
- •Настройка конфигурации оперативной полосы
- •Использование справочной системы Help
- •Перемещение по справочной системе
- •Запрос помощи
- •Копирование примеров кода
- •Выход из справочной системы
- •Запись и редактирование исходного кода
- •Настройка конфигурации редактора
- •Набор команд
- •Использование редактора
- •Выделение синтаксиса
- •Цветовое выделение текста
- •Использование системных цветов Windows
- •Изменение атрибутов текста
- •Печать исходного кода
- •Работа с файлами
- •Открытие файлов
- •Где находятся файлы?
- •Работа с файлами в другом каталоге
- •Компиляция и выполнение
- •Просмотр исходного кода
- •Просмотр объектов
- •Буквенные символы в ObjectBrowser
- •Фильтры
- •Просмотр глобальных идентификаторов
- •Просмотр идентификаторов в исходном коде
- •Выполнение в ide других программ
- •Настройка конфигурации ide
- •Глава 6. Отладка в интегрированной среде
- •Что такое отладка?
- •Какие существуют виды ошибок?
- •Методы отладки
- •Генерация отладочной информации
- •Управление выполнением
- •Что такое шаг?
- •Выполнение программы по шагам
- •Трассировка программы
- •Трассировка или выполнение по шагам?
- •Выполнение больших фрагментов
- •Поиск нужного места
- •Повторное выполнение
- •Отслеживание вывода программы
- •Переключение экранов
- •Окно Output
- •Использование двух мониторов
- •Просмотр значений
- •Что такое выражение?
- •Просмотр выражений
- •Спецификаторы формата в выражениях отладчика
- •Вычисление и модификация
- •Использование точек останова
- •Задание точек останова
- •Отмена точке останова
- •Модификация точек останова
- •Создание условный точек останова
- •Прерывание программы без точек останова
- •Глава 7. Модули Borland Pascal
- •Что такое модуль?
- •Структура модуля
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Как используются модули?
- •Ссылки на описания модуля
- •Оператор uses секции реализации
- •Стандартные модули
- •Создание ваших собственных модулей
- •Компиляция модуля
- •Доступность модуля для программы
- •Модули и большие программы
- •Утилита tpumover
- •Глава 7. Модули Borland Pascal
- •Что такое модуль?
- •Структура модуля
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Как используются модули?
- •Ссылки на описания модуля
- •Оператор uses секции реализации
- •Стандартные модули
- •Создание ваших собственных модулей
- •Компиляция модуля
- •Доступность модуля для программы
- •Модули и большие программы
- •Утилита tpumover
- •Глава 9. Объектно-ориентированное программирование
- •Объекты
- •Наследование
- •Объекты: наследующие записи
- •Экземпляры объектных типов
- •Поля объектов
- •Хорошая и плохая техника программирования
- •Совмещенные код и данные
- •Определение методов
- •Область действия метода и параметр Self
- •Поля данных объекта и формальные параметры метода
- •Объекты, экспортируемые модулями
- •Секция private
- •Программирование в "действительном залоге"
- •Глава 9. Объектно-ориентированное программирование(часть2) Инкапсуляция
- •Методы: никакого ухудшения
- •Расширяющиеся объекты
- •Наследование статических методов
- •Виртуальные методы и полиморфизм
- •Раннее связывание против позднего связывания
- •Совместимость типов объектов
- •Полиморфические объекты
- •Виртуальные методы
- •Проверка диапазонов при вызове виртуальных методов
- •Расширяемость объекта
- •Статические методы или виртуальные методы?
- •Динамические объекты
- •Размещение и инициализация с помощью процедуры New
- •Удаление динамических объектов
- •Деструкторы
- •Пример размещения динамического объекта
- •Что же дальше?
- •Заключение
- •Глава 10. Взгляд на Windows
- •Что такое приложение Windows?
- •Преимущества Windows
- •Требования
- •Программные средства
- •Архитектура с управлением по событиям
- •Графика, независимая от устройств
- •Многозадачность
- •Управление памятью
- •Ресурсы
- •Динамическая компоновка
- •Буфер вырезанного изображения
- •Динамический обмен данными
- •Множественный документальный интерфейс
- •Типы данных Windows
- •Объектно-ориентированная работа с окнами
- •Лучший интерфейс с Windows
- •Интерфейсные объекты
- •Абстрагирование функций Windows
- •Автоматизация ответа на сообщения
- •Структура программы Windows
- •Структура Windows
- •Взаимодействие с Windows и dos
- •Элементарная программа
- •Действия программы при запуске
- •Назначение основного окна
- •Цикл разработки прикладной программы
- •Изучение ObjectWindows
Совмещенные код и данные
Одним из важнейших принципов объектно-ориентированного прог-
раммирования является то, что программист во время разработки
программы должен думать о коде и о данных совместно. Ни код, ни
данные не существуют в вакууме. Данные управляют потоком кода, а
код манипулирует образами и значениями данных.
Если ваши код и данные являются разделенными элементами, то
всегда существует опасность вызова правильной процедуры с невер-
ными данными или ошибочной процедуры с правильными данными. Забо-
та о совпадении этих элементов возлагается на программиста, и хо-
тя строгая типизация Паскаля здесь помогает, самое лучшее, что он
может сделать - это указать на несоответствие.
О том, что действительно существует вместе, Паскаль нигде не
сообщает. Если это не отмечено комментарием или не то, о чем вы
все время помните, то вы играете с судьбой.
Объект осуществляет синхронизацию кода и данных путем сов-
местного построения их описаний. Реально, чтобы получить значение
одного из полей объекта, вы вызываете относящийся к этому объекту
метод, который возвращает значение нужного поля. Чтобы присвоить
полю значение, вы вызываете метод, который назначает данному полю
новое значение.
Однако, Borland Pascal не вынуждает вас делать это. Как вся-
кое структурное программирование, объектно-ориентированное прог-
раммирование является дисциплиной, которую вы должны навязать се-
бе, используя предоставляемые языком средства. Borland Pascal
позволяет вам обращаться к полям объекта непосредственно извне
объекта, однако он поощряет вас использовать преимущества объект-
но-ориентированного программирования и создавать методы для мани-
пулирования полями объекта внутри самого объекта. Borland Pascal
позволяет задать принудительную инкапсуляцию с помощью использо-
вания описания private в объявлении объекта.
Примечание: Подробнее о принудительной инкапсуляции
рассказывается ниже в разделе "Секция private".
Определение методов
Процесс определения методов объектов напоминает модули
Borland Pascal. Внутри объекта метод определяется заголовком про-
цедуры или функции, действующей как метод:
type
TEmployee = object
Name, Title: string[25];
Rate: Real;
procedure Init (AName, ATitle: String; ARate: Real);
function GetName : String;
function GetTitle : String;
function GetRate : Real;
end;
Примечание: Поля данных должны быть описаны перед пер-
вым описанием метода.
Как и описания процедур и функций в интерфейсной секции мо-
дуля (interface), описание методов внутри объекта говорит, что
методы делают, но не говорит, как.
Это определяется вне определения объекта, в отдельном описа-
нии процедуры или функции. Если метод полностью определяется вне
объекта, то имени метода должно предшествовать имя типа объекта,
которому принадлежит этот метод, с последующей точкой:
procedure TEmployee.Init(AName, ATitle: string;ARate: Real);
begin
Name := AName;
Title := ATitle;
Rate := ARate;
end;
function TEmployee.GetName: String;
GetName := Name;
end;
function TEmployee.GetTitle: String;
begin
GetTitle := Title;
end;
function TEmployee.GetRate: Real;
begin
GetRate := Rate;
end;
Метод опpеделения следует методу интуитивного pазделения
точками для указания поля записи. Кpоме наличия опpеделения
TEmployee.GetName можно было бы опpеделить пpоцедуpу с именем
GetName, в имени котоpой нет пpедшествующего идентификатоpа
TEmployee. Однако, такая "внешняя" GetName не будет иметь никакой
связи с объектом типа TEmployee и будет только запутывать смысл
пpогpаммы.