суббота, 9 февраля 2013 г.

классовые функции c++

От Delphi 4 к Delphi 5 часть 21От Delphi 4 к Delphi 5 Палитра компонентов.Страница INTERBASE. Эта страница введена в версии Delphi 5. На ней располагаются (рисунок 1) компоненты, поддерживающие технологию Interbase Express (IBX), которая позволяет клиентским программам взаимодействовать с сервером Interbase v.5.5 без помощи BDE. Компонент IBTable (IBX таблица) аналог компонента Table на странице Data Access. Компонент IBQuery (IBX запрос) аналог компонента Query на странице Data Access. Компонент IBStoredProc (IBX хранимая процедура) аналог компонента StoredProc на странице Data Access. Компонент IBDatabase (IBX база данных) аналог компонента Database на странице Data Acces. Компонент IBTransaction (IBX транзакция) обеспечивает гибкий доступ к мощным транзакционным возможностям Interbase. Компонент IBUpdateSQL (IBX обновляемый запрос) аналог компонента UpdateSQL на странице Data Access. Компонент IBDataSet (IBX набор данных) служит для представления данных, созданных другими компонентами или полученных из файла. Компонент IBSQL (IBX прямой запрос) используется для максимально быстрого получения данных без их отображения визуальными компонентами. Компонент IBDatabaseInfo (IBX информация о данных) предоставляет вспомогательную информацию о текущей базе данных. Компонент IBSQLMonitor осуществляет программный мониторинг SQL-запросов. Компонент IBEvents (IBX событие) информирует программу о наступлении нужного события в базе данных. Синтаксический контроль. Для того чтобы облегчить чтение и написание программного кода, Редактор кода Delphi имеет свойство, которое называется выделение синтаксиса цветом. В зависимости от того, какое значение имеют набираемые слова программного кода, имеется возможность отображать их разными цветами.По умолчанию ключевые слова выглядят полужирными, строки и комментарии имеют различные цвета. Это дает возможность вам отличать зарезервированные слова от комментариев и т.д.У вас есть возможность произвести настройку подсветки синтаксиса на свой вкус. Для этого необходимо воспользоваться меню Delphi. Произведите выбор раздела Tools -> Emvironment Options -> Color.Диалоговое окно Color позволит вам выбрать цвет и шрифт по вашему усмотрению для синтаксического контроля (рису-нок 2).Опция Color SpeedSetting позволяет вам быстро конфигурировать фон диалогового окна Редактора кода с возможностью просмотра образца, который показывает, как будут выглядеть установленные вами параметры.В окне Element вы можете выбрать последовательно опции, определяющие фон диалогового окна Редактора кода, комментариев, зарезервированных слов, идентификаторов, символов и т.д., а для перечисленных элементов цвет, шрифт. Для выбора цвета используются чекбоксы. Палитра цвета (FG) ForeGround соответствует выбору цвета переднего плана, а палитра цвета (BG) BackGround избранного кодового элемента.Выбор одного и того же цвета для переднего плана и фона не рекомендуется.Чтобы выбрать цвет с использованием клавиатуры, необходимо:1. использовать клавиши со стрелками;2. нажать клавишу F, чтобы выбрать цвет переднего плана, или клавишу B, чтобы выбрать цвет фона.Чекбоксы текстовых атрибутов определяют выбор формата для кодового элемента. Формат для текста предусматривает выбор полужирного шрифта, курсива или подчеркивание. По умолчанию используются цвета, установленные системой. Таким образом, вы можете настроить диалоговое окно Редактора кода по своему усмотрению, чтобы была возможность легче ориентироваться для определения ошибок, осуществляя набор программного кода.Так как затронут вопрос, связанный с разделом Tools, рассмотрим конфигурацию данного раздела. Работая со средой Delphi, возможно, вам потребуется обращение к другим приложениям Windows. Доступ к ним закрыт окнами Delphi, но есть возможность расположить пиктограммы приложений Windows в нижней видимой части. Если вы используете полноэкранный режим для диалоговых окон Delphi (т.е. растянув диалоговые окна инспектора объекта, Редактора кода, формы), то доступ к приложениям возможен только после свертывания диалоговых окон Delphi. В этом случае вам поможет меню команды Tools. Для его конфигурации, т.е. для осуществления доступа к приложениям Windows, необходимо выбрать в данном меню команду Configure Tools. Перед вами появится диалоговое окно Tool Options, которое уже содержит приложения, введенные по умолчанию. Выбрав команду Add, вы можете добавить необходимые приложения, в этом вам поможет диалоговое окно Tool Properties. Безошибочный выбор поможет осуществить кнопка Browse, открывающая диалоговое окно Select Transfer Item для выбора исполняемых файлов (рисунок 3). Таким образом, выбранные приложения появятся в меню команды Tools, что позволит осуществить вам доступ к ним, не закрывая диалоговые окна Delphi.Большую помощь во время написания кода оказывает Code Insight Знаток кода. Для того чтобы настроить Code Insight, необходимо выбрать команду в меню Delphi Tools, далее выбрать команду Environment Options. В открывшемся диалоговом окне выберите вкладку Code Insight (рисунок 4). Опции автоматического выполнения различных функций имеют следующее назначение:Code Completion завершение кода, предоставляет подсказку в виде списка свойств, методов, событий, относящихся к данному компоненту;Code Parameters подсказка параметров функций, процедур, методов;Tooltip Expression Evaluation оценка выражений во время останова или пошагового выполнения приложения во время его отладки;Tooltip Symbol Insight подсказка определений идентификаторов, над которыми перемещается курсор мыши.Все эти опции включены по умолчанию. Некоторые из них на начальном этапе оказывают неоценимую помощь. Но автоматическое выполнение опции Code Completion иногда приводит к невольным ошибкам, подставляя в ваш программный код неправильные свойства или методы. Автоматическое выполнение данной опции можно отключить, нажав сочетание клавиш Ctrl+пробел.Задержка автоматического срабатывания Code Insight устанавливается использованием ползунка Delay. Если в течение данного времени вы не осуществили ввод программного кода, появляется подсказка.Раздел Code Templates содержит список шаблонов типичных структур языка Object Pascal, подсказки по которым предлагает Code Insight. После выделения названия и краткого описания одного из шаблонов в списке в нижнем окне можно увидеть предлагаемый программный код заготовки (рисунок 5).Кнопка Edit позволяет изменять имя и краткое описание шаблона. Текст его можно изменять, не нажимая этой кнопки, а переводом курсора в нижнее окно с кодом шаблона. Кнопка Delete позволяет удалить шаблон из списка. Кнопка Add позволяет добавить в список новый шаблон.В процессе написания программного кода происходит работа Знатока кода (рисунок 6). Классовые процедуры и классовые функции. В языке Object Pascal вы можете объявлять классовые методы. Наиболее важное отличие обычных методов класса от классовых методов заключается в том, что для вызова классового метода вам не требуется действительный представитель класса.Классовые процедуры концептуально более близки к обычным самостоятельным процедурам, чем методы-процедуры. Для вызова их не требуется экземпляр объекта. Эти процедуры объявляются как часть класса и вызываются с использованием ссылки на класс, а не на представителя этого класса.Классовые функции аналогично классовым процедурам не требуют представителей класса. Классовые методы объявляются в точности так же, как и обычные методы, но только перед их объявлением ставится зарезервированное слово class.Синтаксис объявления классовой процедуры. Общий синтаксис объявления классовой процедуры имеет вид: typeИмяКласса = class(ИмяРодителя)...class procedure ИмяМетода(<Список параметров>);...end;Примеры:typeTDataList = class(TPersistent)...class procedure FreeAll;class procedure SetDelimiter(ASynbol: Char);...end;Синтаксис объявления классовой функции. Общий синтаксис объявления классовой функции имеет вид: typeИмяКласса = class(ИмяРодителя)...class function ИмяМетода(<Список параметров>): ВозвращаемыйТип;...end;Примеры:TypeTClientWindow = class(TWindow)...class function Numlnstances;class function DefaultCaption: String;class function DefaultWidth: Integer;...end; В классе можно одновременно объявлять несколько классовых методов как классовых процедур, так и классовых функций.Каждое объявление классовой процедуры внутри описания класса начинается с зарезервированного слова class, за которым следуют зарезервированное слово procedure и имя метода. Каждое объявление классовой функции начинается с зарезервированного слова class, за которым следуют зарезервированное слово function и имя метода. В обоих случаях остальная часть объявления классовых методов должна соответствовать тем же правилам, что и для обычных методов-процедур и методов-функций соответственно.Большая часть того, что касается реализации самостоятельных подпрограмм, применима также и к методам. Между самостоятельными подпрограммами и методами существует важное различие, заключающееся в способе доступа к данным представителя класса.Для того чтобы самостоятельные подпрограммы могли работать с элементами данных, эти данные должны быть переданы подпрограммам предпочтительно в виде параметров.Самостоятельные подпрограммы имеют доступ к любым данным, объявленным глобально в модуле или программе, в которых эти подпрограммы определяются, а также ко всем глобальным данным других модулей, перечисленных в списке uses.Реализациям обычных (то есть, не являющихся классовыми) методов доступны не только все те данные, которые были бы доступны подпрограмме. Методы также имеют неявный доступ к полям того представителя класса, который был использован в их вызове.Это подобно тому, что как будто каждому методу при вызове передается дополнительный параметр, указывающий на использовавшийся при вызове экземпляр объекта, и внутри метода стоит неявный оператор with, заключающий в себя все тело метода. И так оно и есть на самом деле.Несмотря на то, что вы не видите этого дополнительного параметра, который называется Self, в определении метода он в нем неявно присутствует. Этот дополнительный параметр Self имеет тот же тип, что и класс, в котором определен метод.Все тело метода заключено в неявный оператор with Self do, который предоставляет методу доступ к полям, свойствам и другим методам данного представителя класса.Неявный оператор with действует примерно следующим образом: beginwith Self do begin(Код метода)end;end;Внешний блок begin-end представляет собой основной блок метода. Расположенный внутри него оператор with настраивает контекст для доступа к полям объекта.Поскольку параметр Self неявно присутствует внутри метода, большую часть времени не будет возникать нужды явно ссылаться на него. Представитель класса, использованного в вызове, неявно доступен, контекст для доступа к нему подготовлен, так что вы можете непосредственно ссылаться на поля объекта, не используя при этом никаких префиксов.Хотя никто и не запрещает вам использовать префикс Self при доступе к полям объекта внутри метода, но обычно в этом нет необходимости. Внутри метода и так подразумевается использование префикса Self, так что вы можете просто напрямую ссылаться на поля объекта, как если бы это были локальные переменные.Однако изредка возникают ситуации, когда вам приходится явно использовать параметр Self. В частности, этот параметр может вам понадобиться для разрешения конфликтов идентификаторов внутри метода.Для того чтобы разрешить конфликт имен с помощью параметра Self, например, чтобы одновременно работать и с локальной переменной, и с полем объекта, имена которых совпадают, вам нужно поставить перед именем поля объекта префикс Self с точкой (например, Self.FTitle).Большая разница между обычными методами и классовыми методами состоит в том, что у классовых методов отсутствует неявный параметр Self.Поскольку классовые методы можно вызывать, как используя экземпляр класса, так и ссылаясь непосредственно на сам класс (то есть, не ссылаясь на какого-либо конкретного его представителя), классовый метод не может иметь доступ к полям представителя класса. Внутри классового метода отсутствует неявный параметр Self, значит, отсутствует и возможность использовать его поля.Так как в классовых методах отсутствует Self, они по существу ничем не отличаются от самостоятельных подпрограмм. Классовые методы это лишь удобная возможность указать, что метод логически относится к данному классу.Реализация классового метода очень проста. Вы должны придерживаться тех же правил, что и для обычных методов, за исключением того, что заголовок реализации должен начинаться с зарезервированного слова class.Единственное обстоятельство, о котором вы не должны забывать, это тот факт, что внутри классового метода у вас нет доступа к полям объекта даже в том случае, когда для вызова этого метода используется действительный представитель класса. Попытка сослаться на какое-либо поле объекта приведет к синтаксической ошибке при трансляции. Говоря другими словами, просто обращайтесь с реализацией классового метода так, как будто вы пишете самостоятельную подпрограмму.Реализация классовой процедуры должна располагаться в разделе implementation модуля, либо в программе или библиотеке, до основного блока begin-end, то есть в том же блоке кода, в котором размещаются обычные методы. Реализация начинается с зарезервированного слова class, за которым следуют зарезервированное слово procedure и полное имя метода.Реализация классовой функции начинается с зарезервированного слова class, за которым следуют зарезервированное слово function, полное имя метода и такая же, как и для обычных методов, остальная часть заголовка (объявления).

  содержаниеновый сайт КГ информация редакция

562-14-21 [МТС]630-29-63 [Velcom]skype: www.pk.byicq: 219-068-786

(017) 334-94-99ул.Чичерина 21 оф.20P

телефоны в Минске

Более 100 м2 площадей мастерских, десять опытных, высококвалифицированных инженеров, огромная база запчастей

Высококлассный сертифицированный сервисный центр по ремонту:

У Нас ремонтируются Все!

От Delphi 4 к Delphi 5 часть 21

Комментариев нет:

Отправить комментарий