- •Часть 2
- •Оглавление
- •1. Структурный подход к программированию
- •1.1. Цели структурного программирования
- •1.2. Основные принципы структурного подхода
- •1.3. Спецификация программ
- •1.4. Метод пошаговой детализации
- •2. Предыстория объектно-ориентированного программирования
- •2.1. Введение в объектно-ориентированное программирование
- •2.2. Тип Объекты
- •2.3. Основные понятия ооп. Инкапсуляция. Наследование
- •X, y : integer; {координаты позиции}
- •XX,yy:array [1..1000] of integer;
- •2.4. Совместимость объектных типов по присваиванию
- •2.5. Описание типа-потомка
- •2.6. Полиморфизм
- •2.7. Виртуальные методы. Конструкторы и деструкторы
- •2.7.1. Правила работы с виртуальными методами
- •3. Типы данных и операторы языка object pascal в delphi
- •3.1. Предопределенные типы данных
- •3.1.1 Вещественные типы
- •3.1.2. Длинные строки
- •3.2. Структурированные типы
- •3.2.1. Множества
- •Var MySet: set of 'a'..'z';
- •3.2.2. Массивы
- •Var FlexArray: array of Real;
- •Var Ints: array of array of Integer;
- •3.2.3. Записи
- •Var Record1,Record2:tDateRec;
- •3.2.4. Указатели
- •I: Integer;
- •V1,v2,v3,v4,v5:Variant;
- •I:Integer;
- •3.3. Типы данных, специфичные для Windows
- •3.3.1. Приведение и преобразование типов
- •3.4. Операторы языка Паскаль
- •I:Integer;
- •I:Integer;
- •3.4.1. Элементы управления редактированием
- •3.5. Процедуры и функции библиотеки vcl
- •4. Реализация ооп на языке pascal
- •V: Real;
- •Наследование
- •Virtual;
- •Конструкторы и деструкторы
- •Перекрытие методов
- •5. Программирование в среде delphi
- •5.1. Основные элементы
- •5.2. Реализация объектно-ориентированного программирования
- •5.3. Разработка интерфейса приложения
- •5.3.1. Создание простейшего Windows-приложения
- •5.3.2. Создание Windows-приложения с метками и кнопками
- •Объект Свойство Значение
- •6.1.3. Меню Edit
- •6.1.4. Меню Search
- •6.1.5. Меню View
- •6.1.6. Меню Run
- •6.1.7. Меню Component
- •6.1.8. Меню Tools
- •6.1.9. Полоска кнопок быстрого доступа SpeedBar
- •6.1.10. Локальные меню. SpeedMenu
- •6.2. Работа с формами
- •6.2.1. Палитра компонентов
- •6.2.2. Object Inspector
- •6.2.3. Написание кода
- •6.2.4. Компиляция проекта
- •6.2.5. Интегрированный отладчик
- •6.2.6. Файлы, создаваемые системой
- •7. Структура delphi-программ
- •7.1. Разработка проекта Dialog
- •7.2. Процедуры вызова диалоговых окон
- •7.3. Преобразования типов
- •Var factW,optW,Rost,Delta:integer;
- •Var factW,optW,Rost,Delta:real;
- •7.4. Простейшие компоненты
- •7.4.1. Группы радиокнопок - компоненты RadioGroup, RadioButton, GroupBox
- •7.4.2. Компоненты выбора из списков - ListBox, ComboBox
- •7.4.3. Многострочные окна редактирования Memo и Richedi
- •7.4.4. Графические объекты
- •If OpenDialog1.Execute
- •Image1.Picture.LoadFromFile
- •7.4.5. Канва и пиксели
- •X, y :real; // координаты функции
- •7.4.6. Воспроизведение немых видео клипов – компонент Animate
- •7.4.7. Установка и настройка приложения: работа с файлами *.Ini
- •IniFile.Free;
- •Упражнения
- •8. Репозиторий объектов и эксперты
- •8.1. Страницы репозитория объектов
- •8.1.1. Страница New
- •8.1.2. Страница Forms
- •8.1.3. Страница Dialogs
- •8.1.4. Страница Data Modules
- •8.1.5. Страница Projects
- •8.2. Эксперты Delphi
- •8.2.1. Application Expert
- •8.2.2. Dialog Box Expert
- •9. Классы и модули
- •9.1. Классы и сокрытие информации
- •9.2. Классы и модули
- •9.3. Модули и область видимости
- •9.4. Модули и программы
- •9.5. Информация о типе на этапе выполнения
- •If MyAnimal is Dog then …
- •If MyAnimal is Dog
- •If MyAnimal is Dog then
- •10. Использование компонентов
- •10.1. Буксировка из одного компонента в другой
- •10.2. Обработка исключений
- •10.3. Восприятие ввода для пользователя
- •Val( Edit1.Text,Number,Code);
- •Val((Sender as tEdit).Text,Number,Code);
- •11.2. Различные роли элементов меню
- •11.3. Редактирование меню с помощью Menu Designer
- •If OpenDialog1.Execute
- •If SaveDialog1.Execute
- •Procedure tForm1.ViewEdit1Click(Sender:tObject); begin
- •If Panel1.Visible
- •If Buttons1.Enabled
- •12. Получение «ввода от мыши» и рисование в форме
- •12.1. События, связанные с мышью
- •12.2. Рисование в форме
- •If ssShift in Shift
- •If Circle then Canvas.Ellipse(Center.X-Radius.X,Center.Y-
- •Else Canvas.Rectangle(Center.X-Radius.X,Center.Y-
- •12.3. Черчение и рисование в системе Windows
- •13. Инструментальная линейка и строка состояния
- •13.1. Построение инструментальной линейки
- •Procedure tForm1.SpeedButton1Click(Sender:tObject); begin
- •If SpeedButton1.Down
- •13.2. Добавление всплывающих подсказок в линейку
- •13.3. Комбинированный список в инструментальной линейке
- •13.4. Построение строки состояния
- •14.1. Добавление второй формы в программу
- •14.2. Создание диалоговой панели
- •Задание № 1
- •Procedure tForn1.BitBtnClick(Sender:tObject); begin PageControl1.SelectNextPage(true);
- •Do ListBox1.Items.Add(PageControl1.Page[I].Caption);
- •14.3.1. Блокнот с набором ярлыков
- •If FontDialog1.Execute
- •15.2. Жизненный цикл программного средства
- •15.3. Понятие качества программного средства
- •15.4. Обеспечение надежности основной мотив разработки программных средств
- •15.4.1. Методы борьбы со сложностью
- •15.4.2. Обеспечение точности перевода
- •15.4.3. Преодоление барьера между пользователем и разработчиком
- •15.4.4. Контроль принимаемых решений
- •Литература
- •Часть 2. Объектно-ориентированное программирование
Перекрытие методов
Перекрыть метод предка в классе наследнике очень просто: следует продекларировать метод с тем же именем.
Type
Class5 = Object(Class1)
Procedure Nothing;
End;
При этом если перекрывается метод виртуальный, то перекрывающий метод тоже обязан быть виртуальным и, кроме того, иметь тот же список параметров. Если первое требование объявлять перекрывающий метод виртуальным введено, вероятно, для того, чтобы программист не забывал о его унаследованной виртуальности (компилятор вполне в состоянии самостоятельно определить, является ли перекрываемый метод витруальным), то второе - требование одинаковости списка параметров - насущно необходимо: при вызове виртуального метода для любого объекта любого класса-наследника компилятор может генерировать код передачи одинакового списка параметров - ведь заранее неизвестен реальный тип объекта.
Выводы
Итак, в Borland Pascal v.7.0 реализованы все три основных принципа ООП и частично - механизм позднего связывания (он работает только при использовании указателей). Невозможность полной реализации связана с тем, что типы статических объектов (переменных) на языке Паскаль определяются до выполнения программы, фактически еще до ее компиляции. Естественно, что для объектов предопределенного типа (класса) нет смысла применять механизм определения типа и вызова соответствующего метода (т. e. механизм позднего связывания).
Это явное несоответствие, вероятно, связано с неустоявшейся терминологией в ООП на момент разработки синтаксиса. В более поздних реализациях Паскаля для этой цели явно используется ключевое слово class.
5. Программирование в среде delphi
5.1. Основные элементы
В начале 90-х годов ХХ века в средствах разработки программного обеспечения возникло новое направление - визуальное программирование. Одним из наиболее известных средств визуального создания программ является популярный продукт фирмы Borland/Inprise - Delphi, который прекрасно реализует эту концепцию и базируется на языке Pascal.
Delphi с точки зрения разработки Windows-приложений включает в себя следующие компоненты: быстрая среда разработки, содержащая набор визуальных средств для создания приложений; компилятор языка Pascal; библиотека классов. Основные элементы, с которыми пользователю приходится работать в среде Delphi, - это дизайнер форм, окно редактирования, палитра инструментов, свойства объектов, менеджер проектов и справочная система. Разрабатывая программы, пользователь может переключаться между дизайнером форм и окном редактирования приложений. Помимо перечисленных средств среда включает в себя и технические средства - интегрированный отладчик, позволяющий проводить трассировку программы и следить за состоянием переменных в специальном окне. Пакетный компилятор используется для создания исполняемого кода приложения в виде EXE-файла.
В среде Delphi пользователь работает с проектами - наборами файлов, из которых состоит приложение. Ими могут быть файлы с исходными текстами модулей, написанными на языке Pascal (расширение PAS), формы, являющиеся графическим представлением приложения (расширение DFM), и сами файлы проектов (расширение DPR). Каждому файлу формы обязательно соответствует файл с исходным текстом модуля, но файл модуля не обязательно должен иметь форму. Файл проектов связывает вместе все файлы, из которых состоит приложение, и, таким образом, среда Delphi знает, какие файлы необходимы для сборки приложения.
Интерактивная среда разработчика состоит из ряда компонентов, которые могут присутствовать на экране: главного окна (включающего панель пиктографического меню и панели компонентов), окон свойств объектов и проекта, а также формы визуального создания приложения и окна для написания кода (редактора программы).
Главное меню среды состоит из следующих пунктов: File, Edit, Search, View, Project, Run, Component, Tools, …, Help.
В меню FILE находятся команды для выполнения операций с проектами, модулями, файлами. Данные команды создают новый файл проекта, загружают существующий проект, добавляют новую форму или модуль, сохраняют проект или форму, позволяют напечатать проект.
В меню Edit и Search расположены команды, осуществляющие операции редактирования, работы с областью обмена данными, отмены операций, поиска и замены текста кода в окне редактирования.
В меню View содержатся команды для отображения различной информации (формы Forms или кода Units), вызова менеджера проектов (Project Manager), окна свойств объектов (Object Inspector), отладочного окна (Debug Window), браузера объектов (Browser).
Меню Run представляет команды для выполнения приложения (Run), окончания выполнения (Program Reset), а также команды встроенного отладчика, которые позволяют выполнить приложения пошагово (Step Over), пошагово с заходом в подпрограммы (Step Into), до строки с установленным курсором (Run To Cursor).
На основном экране ниже главного меню расположена полоса пиктографического меню, которая содержит набор кнопок, эквивалентных функциям наиболее часто используемых команд главного меню.
Палитра компонентов позволяет выбрать визуальные средства, которые пользователь может расположить в текущей форме. Компоненты - это строительные блоки, из которых собирается приложение. Ими могут быть кнопки, списки, статические текстовые элементы, строки редактирования, кнопки выбора, индикаторные кнопки и т. д.
Окно инспектора объектов позволяет отображать свойства отмеченного компонента формы. После того как пользователь расположил необходимые объекты в форме, он может изменить их свойства, например, размер области, заголовок, цвет, шрифт, фон, имя и т. д. Список свойств представлен в виде таблицы, причем возможно изменение свойств не только визуально, но и программно.
Приложение, создаваемое в среде Delphi, может быть достаточно комплексным - состоять из нескольких модулей и форм. Для управления проектами среда разработчика содержит менеджер проектов, позволяющий демонстрировать код и форму файлов проекта.
Редактор - это еще один обязательный элемент среды разработчика, он используется для непосредственного написания кода. Редактор можно вызвать путем двойного щелчка мыши на соответствующем объекте в текущей форме. Переключиться на редактор можно также из окна проекта щелчком по кнопке View, Code Explorer, при этом будет показано окно редактора для всей формы.
