Федеральное агентство по образованию
Delphi. Введение в объектно-ориентированное программирование
Учебно-методическое ...
12 downloads
224 Views
408KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Федеральное агентство по образованию
Delphi. Введение в объектно-ориентированное программирование
Учебно-методическое пособие (Практикум)
Составители: В.В. Васильев Л.В. Хливненко
ВОРОНЕЖ 2007
2
Утверждено Научно-методическим советом математического факультета 31 января 2007 года, протокол № 5
Рецензент С.В. Писарева
Учебно-методическое пособие (практикум) подготовлен на кафедре математического моделирования математического факультета Воронежского государственного университета.
Рекомендовано для студентов 5-6 курсов всех форм обучения.
Для направления 010101 (010100) Математика
3
1. Введение в объектно-ориентированное программирование Каждый, кто пытался писать программы на каком-либо языке программирования, наверняка на каком-то этапе работы замечал, что часто в разных программах приходится многократно выполнять одни и те же действия. Например, выводить окно с предупреждением о невозможности отмены какого-либо действия. Естественным в таких случаях является использование библиотек, содержащих подпрограммы (процедуры) для выполнения стандартных действий. Такие “заготовки” можно использовать в качестве строительных “кубиков” при создании программы. В Паскале эта идея была реализована в виде возможности подключения к программе модулей - библиотек готовых подпрограмм. Для того, чтобы подключить к программе модуль, после служебного слова Program надо написать: Uses <список модулей через запятую>; Примерами готовых библиотечных модулей в Турбо Паскале являются файлы Crt.tpu (библиотека процедур поддержки работы с экраном в текстовом режиме и работы со звуком), Graph.tpu (библиотека графических подпрограмм). Для того чтобы получить возможность при написании программы пользоваться готовыми процедурами из подключенных модулей (например, очищать экран и рисовать окружности), нужно после заголовка программы в среде Turbo Pascal написать: Uses Crt,Graph; Программист может не только использовать стандартные библиотеки процедур, но и создавать свои собственные модули. Текст модуля пишется в отдельном файле <Имя файла>.pas, а потом компилируется в файл <Имя файла>.tpu. Модуль имеет следующую структуру: UNIT <имя_модуля>; INTERFACE <интерфейсная часть> IMPLEMENTATION <исполняемая часть> {BEGIN <инициирующая часть>} END. Интерфейсная часть содержит описание всех глобальных типов, констант, переменных и заголовки всех подпрограмм, которые будут доступны в основной программе или в другом модуле. Исполняемая часть состоит из подпрограмм. В исполняемой части могут объявляться локальные для модуля типы, константы, переменные и метки. Инициирующая часть является необязательной и может содержать операторы, которые будут выполнены при подключении модуля к основной программе. Как правило, инициирующая часть используется для подготовки работы программы или модуля. При использовании библиотечных модулей всегда возникает проблема их состыковки с программой. Для облегчения этой работы, были разра-
4
ботаны стандарты, которые позволяют записывать библиотечные подпрограммы в форме, максимально облегчающей такую состыковку. Одним из таких стандартов являются классы. В языке Object Pascal класс описывается так: Type <Имя_класса> = Class <Список полей, методов и свойств класса> End; Класс служит заготовкой (шаблоном, образцом) для создания конкретных экземпляров класса (объектов) и классов-потомков. Например, командная кнопка Button1, добавленная на форму, принадлежит описанному в Delphi классу кнопок TButton. В основу классов и объектно-ориентированного программирования положены три принципа – инкапсуляция, наследование и полиморфизм. Инкапсуляция – изолирование составляющих класса (полей, методов и свойств) от остальных частей программы. Класс представляет собой самодостаточную заготовку для решения узкой задачи. Например, для создания главного меню приложения. Библиотека классов Delphi – это стандартный набор шаблонов, из которых можно строить программы. Шаблоны можно дополнять новыми возможностями и получать новые «поколения» классов. Наследование – возможность создания новых классов на базе имеющихся с возможностью использования их составляющих. Класспотомок объявляется так: Type <Имя_класса_потомка> = Class(<Имя_класса_родителя>) <Список новых полей, методов и свойств класса> End; Объект, принадлежащий классу-потомку, может использовать поля, свойства и методы класса-родителя и новые составляющие своего класса. Если в классе-потомке описан новый метод, одноименный с методом класса-родителя, то «говорят», что в потомке «перекрыт» метод родителя. Полиморфизм – способность классов решать похожие задачи разными способами. При перекрытии метода родителя в потомке реализуется новый алгоритм решения задачи. Получается, что в объекте-родителе и объекте-потомке действуют два одноименных метода, имеющих разную алгоритмическую основу. Поля - инкапсулированные в классе данные (величины объявленного в описании типа). Например, Type TMy_Class = Class aSymField: Char; … End; Поля могут быть любого типа, в том числе – классами. Согласно принципу инкапсуляции, обращаться к полям класса можно с помощью свойств и методов класса. Полезно знать, что Object Pascal допускает прямое обращение к полю. Например,
5
Var My_Object: Tmy_Class; Begin My_Object.aSymField:=’a’; End; Методы - инкапсулированные в классе процедуры и функции, то есть способы работы с данными. Рассмотрим пример описания и составления методов My_Method1 (процедура) и My_Method2 (функция). Type TMy_Class = Class (* описание класса *) aSymField: Char; (* описание поля *) procedure My_Method1; (* описание метода *) function My_Method2: Byte; (* описание метода *) … End; procedure TMy_Class.My_Method1; (* реализация метода - процедуры *) begin блок операторов end; function TMy_Class.My_Method2: Byte; (* реализация метода - функции *) begin блок операторов end; Подпрограммы-функции всегда возвращают в вызывающую их программу одно значение объявленного после заголовка функции типа. В состав любого класса входят два специальных метода – конструктор и деструктор. Конструктор создает объект, т.е. конкретный представитель данного класса. При создании объекта для него выделяется область в динамической памяти. Динамическая память представляет собой оперативную память ПК, выделенную для работы программы, за вычетом сегмента данных (для хранения обычных статических переменных), стека (для использования при работе программы) и тела программы. Деструктор удаляет объект. При удалении объекта освобождается занимаемая этим объектом область динамической памяти. Конструктор объявляется в классе с помощью специального слова Constructor. Деструктор – с помощью слова Destructor. Свойства – способы доступа к полям. В свойстве указаны методы, с помощью которых читается и выводится значение поля, связанного с данным свойством. Свойства в классе объявляются с помощью специального слова – property. Например, property SymValue: Char read GetField write SetField; Описание класса может содержать четыре секции, предваряемые служебными словами published (декларированные), private (личные), protected (защищенные), public (доступные). В каждой из секций могут на-
6
ходиться составляющие класса (поля, методы, свойства). Секции нужны для разграничения зоны видимости составляющих класса. В секции published перечисляются поля, методы и свойства, которые должны быть доступны (видны в Инспекторе объектов) на этапе конструирования программы. Составляющие класса из секции published можно вызывать в любом другом модуле программы. Секция используется при разработке проекта. Секция private максимально сужает зону видимости. Описанные в ней поля, методы и свойства доступны только в методах данного класса и в подпрограммах, находящихся в том же модуле. Составляющие класса, описанные в секции protected, доступны в методах самого класса, а также в методах потомков, находящихся даже в других модулях. Секция public максимально открывает зону видимости. Описанные в ней составляющие класса доступны в любом модуле программы. Любая из секций может быть пустой и может отсутствовать. Если метод класса-родителя будет перекрыт в классе-потомке, то при описании метода в классе-родителе за ним ставят директиву virtual (виртуальный), а при описании метода в классе-потомке - директиву override (перекрытый). Динамически перекрываемые методы, которые не производят никаких действий, называются абстрактными. После описания таких методов ставятся две директивы – virtual; abstract. Такие методы обязаны перекрываться в потомках. Вызов абстрактного метода приводит к сообщению об ошибке. Абстрактные методы служат заготовками для настоящих методов. Классы, содержащие абстрактные методы, называются абстрактными. В таких классах собраны общие свойства их неабстрактных потомков. Объекты абстрактных классов никогда не создаются. Абстрактные классы служат для создания на их базе новых классов, обладающих общими свойствами. Абстрактный класс TObject служит основой (родителем) для начинающегося с него дерева классов. В классе TObject описаны общие для всех классов методы. Например, функции ClassName (имя класса), ClassParent (имя класса-родителя). Основными потомками класса TObject являются классы Exeption (Исключение), TStream (Поток) и TPersistent (Постоянный). На рис. показан фрагмент объектной модели. Класс Exeption используется для обработки исключительных ситуаций, возникающих при некорректной работе программы. Например, при попытке открыть несуществующий файл или при делении на ноль. При появлении исключительной ситуации среда перехватывает управление программой и выдает (или отмечает) сообщение об ошибке.
7
Класс TStream используется для работы с потоками. Основные свойства потока данных – размер в байтах (свойство Size) и текущая позиция (свойство Position). В потомках класса TStream описаны необходимые методы для чтения объектов из потока и их записи в поток. При сохранении объекта в поток записывается в том числе и уникальный идентификатор класса, к которому принадлежит объект. При чтении объекта из потока по идентификатору класса определяется количество байт, отведенное под объект в потоке. В способности хранить в одном потоке объекты разных классов реализуется полиморфизм потоков. Класс TPersistent является родителем классов, объекты которых могут быть помещены в память и взяты из нее. Потомками класса TPersistent являются, например, классы TComponent (предок всех компонент, в том числе самого приложения TApplication и формы TForm), TCollection (предназначен для обработки совокупности однотипных элементов), TCanvas (содержит набор примитив для рисования). Совершенно ясно, что никакие самые лучшие стандарты не в силах помочь, когда речь идет о состыковке визуальных элементов конкретного приложения (кнопок, полей ввода или вывода, меню и пр.). Автор-программист сам должен решить, где и что он будет размещать на экране. Для облегчения решения этой проблемы была придумана идея предоставления программисту макета будущего экрана с возможностью размещения на нем визуальных компонент. При этом дается естественная возможность передвигать с помощью мыши компоненты и изменять их размеры так же, как это можно делать с окнами Windows. После того, как макет экрана сформирован и определены свойства компонент формы, появляется важная задача автоматизации приложения – написания программ, которые и определяют работу приложения. С каждым объектом связан набор событий, «понимаемых» этим объектом. Событие – это пакет информации, воспринимаемый объектом. Например, элемент «командная кнопка» понимает события от мыши (OnClick – левый клик по кнопке, OnMouseMove – курсор мыши скользит по кнопке и др.) и события от клавиатуры (OnKeyPress – нажата клавиша, OnKeyUp – отпущена клавиша и др.). Сами по себе события не производят никаких действий в программе. Реакцию приложения на появление события должен заранее определить программист. Для этого он должен написать программу - обработчик, которая будет запускаться при появлении события, связанного с конкретным объектом. Например, при нажатии кнопки, выбора пункта меню, ввода данных в поле и т.д. Понятно, что унифицировать такие обработчики так же бессмысленно, как создавать машину, которая будет за кого-то делать утреннюю зарядку. Программы-обработчики надо писать на каком-либо из известных языков программирования. Любая визуальная среда программирования строится на базе одного (или нескольких) из известных языков. Среда визу-
8
ального программирования Delphi построена на базе языка Object Pascal, выросшего из языка Turbo Pascal корпорации Borland. Ясно, что при таком подходе разработка программы состоит в подробном описании всех окон, свойств их визуальных компонент и обработчиков событий (щелчков мыши, активизации и изменения элементов и т.д.). Заканчивает создание приложения сам компьютер, преобразуя по команде программиста всю описанную информацию в код программы. При таком подходе существенно облегчается отладка программы (поскольку большую часть работы по формированию программного кода выполняет сам компьютер) и особую роль приобретает проектирование приложения. К преимуществам систем визуального программирования следует отнести • облегчение компоновки визуальных элементов в окне, • облегчение “состыковки” различных элементов программы, • облегчение оформления программы в виде Windows-приложения (это очень громоздкая задача, совершенно недоступная начинающим программистам, если решать ее обычными методами). Все перечисленное позволяет сделать вывод, что главное достоинство Delphi - повышение производительности труда программиста. Конечно, не стоит забывать, что за все удобства надо платить, и наряду с очевидными достоинствами такие системы визуального программирования имеют свои недостатки. Перечислим некоторые из них: • сложность пакета программ, реализующего описанный режим работы, • вообще говоря, неоптимальность тех программных решений, которые генерируются автоматически, • сложность модификации той части программы, которая (пусть даже частично) формируется автоматически, • некорректная работа проекта после сохранения разных версий проекта в одном каталоге (избежать опасности потерять почти готовый проект можно путем частого сохранения промежуточных результатов в разные папки). Реализация описанной идеи визуализации создания приложений потребовала написания новых сложных программных продуктов, поддерживающих режим визуального программирования. Однако преимущества нового подхода оказались столь убедительны, что были созданы визуальные среды, поддерживающие и другие языки программирования. Естественно, что такие пакеты требуют все больших возможностей компьютеров. 2. Интегрированная среда разработки IDE (Integrated Development Environment) или интегрированная среда разработки – это среда, в которой из «кубиков» - элементов собирается Delphi-проект. В этой среде есть все необходимое для проектирования, запуска и тестирования работы приложений. Запустим Delphi. Примерный вид экрана показан на рис.
9
Как и любое окно Windows-приложения, наше окно содержит строку заголовка с названием программы и документа (по умолчанию Project1) и . кнопками Ниже расположена строка меню с заголовками разделов File (Файл), Edit (Правка), Search (Поиск), View (Вид), Project (Проект), Run (Выполнение), Component (Компонент), DataBase (База данных), Tools (Инструментарий), Help (Справка). При нажатии на каждый заголовок открывается список пунктов меню. Еще ниже слева находятся панели быстрых кнопок (назначение каждой из них можно прочитать по подсказке-хинту, всплывающей при установке курсора мыши на кнопку). Добавить (или удалить) панели можно, выполнив команду View|ToolBars… (Вид|Панели инструментов…). Справа от панелей инструментов находятся закладки страниц компонентов. На каждой из страниц находится группа кнопок - компонентов Delphi. Эти кнопки - компоненты и являются теми “строительными кубиками”, из которых собирается проект. Их названия также всплывают при установке указателя мыши. Для того чтобы открыть нужную страницу, надо щелкнуть мышью по ярлычку с названием вкладки. Попробуйте! Страница компонентов Standard (Стандартные) включает основные элементы, из которых строятся приложения Windows. К ним относят MainMenu (главное меню), PopupMenu (всплывающее меню), Label (надпись), Edit (поле), Memo (многострочное текстовое поле), Button (кнопка) и др. Компоненты страницы Additional (Дополнительные) дополняют стандартную палитру. Здесь находятся Image (рисунок), ScrollBox (прокручивающаяся область), ControlBar (панель управления) и т.д. На странице Win32 собраны стандартные для Windows’95 (и выше) элементы управления. В число этих элементов входят TrackBar (ползунки), ProgressBar (индикаторы процесса), TabControl (ярлыки) и др. Посмотрите самостоятельно некоторые элементы, собранные на других страницах. Поместить компонент на форму можно, щелкнув мышью сначала на компоненте, а затем на форме (либо дважды щелкнув на компоненте). После этого, двигая мышью компонент по форме, можно установить его в нужное место. Выделив на форме элемент и нажав F1 можно вывести на экран текст справки по этому элементу. Ниже панели быстрых кнопок и группы закладок с компонентами в рабочей области справа расположена форма - поле, на котором размещаются “кубики-компоненты” при компоновке программы.
10
Где же сам текст Паскаль-модуля проекта? Нажмите F12. Поверх окна формы появится новое окно, озаглавленное Unit1, в котором автоматически уже созданы следующие строки: Заголовок модуля unit Unit1; Interface Интерфейсная часть модуля Подключение к пользовательскому модуUses Windows, Messages, SysUtils, Classes, Graphics, Conлю стандартных библиотечных модулей trols, Forms, Dialogs; Type Описание класса TForm1 – потомка абстTForm1 = class(TForm) рактного класса TForm Private Раздел описания скрытых объектов, дос{ Private declarations } тупных только в модуле Public Раздел описания объектов, доступных и в { Public declarations } модуле, и из других программ end; Var Описание объекта Form1 из класса TForm1 Form1: TForm1; Исполняемая часть модуля Implementation {$R *.DFM} Конец кода модуля end. Это окно Паскаль-модуля формы. Сюда по мере наполнения проекта, Delphi будет автоматически дописывать необходимый код (или предлагать это сделать Вам). Для того чтобы вызвать окно формы, надо снова нажать F12. Слева от формы размещается Инспектор Объектов (ИО- Object Inspector), о котором стоит поговорить чуть-чуть подробнее. Если открыть пустую форму, то на ней еще нет ни одного компонента, и проект содержит только один объект ─ саму форму-заготовку окна Windows. Именно на этом единственном объекте и сосредоточено внимание ИО. В его заголовке написано - Form1:TForm1. Здесь Form1 - имя объекта, а TForm1 - название класса, к которому этот объект относится. Если объектов много, то их полный список можно просмотреть в ИО. Поле, связанное со списком объектов, содержит имя выбранного объекта - Form1:TForm1. ИО имеет две закладки - Properties (свойства) и Events (события). Вкладка Properties (свойства) ИО содержит многочисленные свойства объекта и их значения (в начале разработки проекта – всей формы). Например, св-во Name (имя) имеет значение по умолчанию Form1. Заголовок формы задается как значение свойства Caption (заглавие). Поменяйте стандартное название Form1 на фразу «Моя форма». Обратите внимание, как параллельно меняется заголовок макета формы. Значения некоторых свойств нельзя впечатать с клавиатуры, а можно выбрать из готового списка возможных значений. Такие списки значений есть у свойств Align (выравнивание), AutoScroll (автоматическая прокрутка), Color (цвет) и др. Попробуйте изменить стандартный серый цвет формы.
11
Плюс перед свойством означает, что за этим заголовком скрыто не одно, а много свойств, доступ к редактированию которых можно получить, дважды щелкнув на этом поле. Откройте группу свойств Font (шрифт): Charset (раскладка клавиатуры), Color(цвет символов), Name (вид шрифта), Size (размер шрифта). Измените установленные по умолчанию свойства Font, а затем положите на форму компонент Label (надпись). Обратите внимание на то, что установленные Вами свойства шрифта формы унаследованы надписью. Для того чтобы добраться до свойства любого объекта, нужно указать через точку все объекты, в которые вложен данный объект, потом название самого объекта и название свойства! Тот факт, что свойство AutoScroll формы Form1 установлено в True (истина), означает следующее Form1.AutoScroll:=True. Отметим особо, что именно таким образом можно установить это свойство в тексте Паскаль-кода проекта. Вернемся к ИО и откроем закладку Events (события). Для того чтобы открыть свойства формы, нужно кликнуть в свободном от компонент месте формы. Попробуйте! Ниже имени объекта Form1 появился список событий формы. Щелкнув сначала по любой строке (выбрав событие), а затем дважды правее названия события, Вы откроете окно модуля формы с автоматически созданным заголовком процедуры обработки выбранного события. Найдите событие OnClose (Закрытие) и дважды щелкните в строке справа от него. При этом созданный заголовок процедуры должен иметь вид: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin end;
Между begin и end можно вписать код процедуры-обработчика. В дальнейшем мы будем это делать многократно. Пока же ничего вписывать не будем, а вернемся к ИО, щелкнув мышью в его поле. Обратите внимание - напротив события OnClose появилась строка FormClose - признак того, что создана процедура обработки события. Итак, мы познакомились с основными элементами основного окна Delphi. Что же будет, если, ничего не добавляя в форму, попытаться создать соответствующую пустой форме программу. Естественный ответ - должна получиться программа, создающая пустое Windows-окно, которое можно двигать по экрану, изменять в размерах, развернуть на весь экран. Компиляция такой программы, запись соответствующего exe-файла на . диск и запуск ее на исполнение осуществляется нажатием клавиши Проверьте, что созданное пустое Windows-окно действительно обладает всеми обычными свойствами. Закройте его обычным образом.
12
Добавим на форму новый элемент - кнопку BitBtn1, клик по которой будет закрывать окно работающей программы. После выполнения примера работы 1 кнопка будет иметь вид . План примера 1 1-3. Добавление кнопки и изменение надписи на ней. 4. Изменение размера кнопки. 5-13. Изменение картинки на кнопке. 14-18. Написание обработчика события OnClick для кнопки. 19. Изменение положения рисунка и надписи на кнопке. 20. Запуск программы на исполнение. Пример работы 1: Подсказка Страница компонент Additional 1. Добавьте на форму кнопку BitBtn1 2. Откройте свойства объекта BitBtn1 Выделите BitBtn1 на макете 3. Измените название кнопки Измените значение свойства Caption с Exit на Выход Потяните за черные маркеры вокруг кнопки 4. Увеличьте размер кнопки Попробуем теперь изменить картинку на кнопке BitBtn1. Изготовим гравировку самостоятельно из какого-нибудь символа шрифта Wingdings или Webdings, например, y Пуск|Программы|Microsoft Office|Microsoft Word 5. Откройте Word Вставка|Символ. Шрифт Wingdings или Webdings. 6. Вставьте символ y Размер – 20 пт (или другой) Ctrl+Insert 7. Скопируйте символ в Буфер обмена Пуск|Программы|Стандартные|Paint 8. Откройте Paint Shift+Insert 9. Вставьте символ из Буфера обмена 10. Гравировку сохраните под Выделите символ и скопируйте его в свою папку (Правка|Копировать в файл) именем man.bmp справа 11. Измените картинку Найдите свойство Gliph. Нажмите от значения свойства. В открывшемся диалогона кнопке BitBtn1 вом окне с помощью кнопки Load (загрузить) укажите файл man.bmp и нажмите на кнопку ОК 12. Отобразите картинку Измените значение свойства NumGliph (часть картинки) на 1 на кнопке целиком 13. Запустите проект Нажмите на кнопку Попробуйте закрыть форму нажатием на кнопку, свойства которой Вы меняли. Клик по кнопке пока не дает желаемый результат. Придется написать собственный обработчик события OnClick для кнопки BitBtn1, в который надо включить одну команду Halt (прекратить выполнение программы). Закройте окно работающей программы нажатием на крестик в правом верхнем углу. Выделите BitBtn1 на макете 14. Откройте свойства объекта BitBtn1 Левый клик по ярлычку в Ин15. Перейдите на вкладку Events спекторе Объектов
13
16. Создайте процедуру-обработчик Дважды кликните в поле правее названия события OnClick события OnClick procedure Form1.BitBtn1Click(…); 17. Напишите команду begin halt Halt между begin и end процедуры-обработчика end; 18. Протестируйте работу Запустите программу нажатием на кнопку , кнопки и попробуйте нажать на кнопку Клик по кнопке выхода в работающей форме должен приводить к корректному ее закрытию. Добавим еще несколько обновленных деталей для кнопки BitBtn1. 19. Измените положе- Измените значение свойства Layout на blGliphRight ние рисунка man.bmp (картинка справа), blGliphLeft (картинка слева), blGliphTop (вверху) или blGliphBottom (внизу) на кнопке 20. Протестируйте раЗапустите программу нажатием на кнопку боту кнопки В комплекте поставки Delphi есть готовые гравировки для кнопок. Каталог с гравировками попробуйте поискать по адресу C:/Program files/Common files/Borland Shared/Images/Buttons/ Контрольные вопросы и задания 1. Введение в объектно-ориентированное программирование 1. Что такое модули? Как они появились? Как подключить к программе модуль? Примеры модулей? Какие стандартные модули есть в Паскале? 2. Как создать собственный модуль? 3. Опишите структуру модуля. Что называют классом? Как описать класс? 4. В чем смысл принципов Инкапсуляция, Наследование, Полиморфизм? 5. Что такое объект? Приведите примеры. 6. Что такое поля? Как описать поле в классе? Как обратиться к полю? 7. Что такое методы? Как описать метод в классе? 8. Что такое процедуры и функции? 9. Что такое конструктор и деструктор? Как они описываются? 10. Что называют динамической памятью? 11. Что такое свойства? Как описать свойство в классе? 12. Что содержат секции published, private, protected, public в описании класса? 13. Зачем после метода ставят директиву virtual? override? abstract? 14. Какие методы и классы называют абстрактными? 15. Какой класс является родоначальником остальных классов? Приведите примеры методов данного класса. 16. Нарисуйте фрагмент объектной модели Delphi. 17. Что представляет собой классы Exeption, TStream? 18. Как реализуется полиморфизм потоков? 19. Что представляет собой класс TPersistent? Назовите потомков класса. 20. Какой класс является предком классов TApplication и TForm? 21. Что такое коллекции?
14 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
Какой класс содержит набор примитив для рисования? В чем состоит идея визуализации разработки приложения? Что называют событием? Приведите примеры. Зачем нужны программы-обработчики? На каком языке пишутся обработчики в Delphi? На какие этапы делится разработка приложений в Delphi? Преимущества и недостатки систем визуального программирования? 2. Интегрированная среда разработки Охарактеризуйте структуру окна Delphi. Опишите пункты строки меню. Какие страницы компонентов существуют в Delphi? Охарактеризуйте некоторые элементы вкладок Standard, Additional, Win32. Как поместить компонент на форму? Продемонстрируйте. Как получить справку о назначении элемента? Что такое форма? Как перейти от формы к Паскаль-модулю и обратно? Охарактеризуйте команды Паскаль-модуля формы. Что такое Инспектор Объектов? Что означает запись Form1:TForm1 в заголовке Инспектора Объектов? Охарактеризуйте вкладки Инспектора Объектов. Назовите три способа задания значений свойствам объекта. Как задать имя формы? Заглавие? Цвет? Что означает плюс перед свойством объекта? Охарактеризуйте группу свойств Font. Продемонстрируйте их в действии. Как привязать программу-обработчик к событию и объекту? Продемонстрируйте. Как осуществить компиляцию программы в Delphi? Зачем нужно создавать копию проекта в своей папке? Какое расширение имеют файлы, являющиеся Delphi -проектами? Как открыть проект в Delphi? Как просмотреть список имеющихся в проекте форм? Как просмотреть список всех компонентов формы? Как изменить надпись на командной кнопке? Размеры кнопки? Положите на кнопку созданную Вами картинку. Как сделать, чтобы была видна только четвертая часть картинки? Вся картинка? Как изменить положение надписи и картинки на кнопке? В чем смысл команды Halt? Учебное издание
Delphi. Введение в объектно-ориентированное программирование
15
Учебное пособие для вузов (Практикум)
Составители: Васильев Валерий Викторович, Хливненко Любовь Владимировна Редактор
Бунина Т.Д.