Обобщенные типы данных в шаблонах классов

Категория: Учебники по Delphi » Delphi XE

 

Синтаксическая конструкция, объявления шаблона класса, способного работать с обобщенным типом данных, не многим отличается от унаследованной еще со времен языка Object Pascal конструкции описания обычного класса. Здесь также присутствуют ключевые слова type и class, и класс-шаблон, так же как и его обыч­ный ’’коллега”, содержит поля и методы. Однако внимательный читатель обнару­жит отличительную черту шаблона — пару угловых скобок <.. .> сразу после име­ни класса:

 

Обобщения в процедурах и функциях

Категория: Учебники по Delphi » Delphi XE

 

Если абстрагироваться от типа данных, окажется, что логика очень многих алго­ритмов абсолютно одинакова. Например, алгоритм быстрой сортировки идентичен как для массива целых, так и для массива вещественных чисел. В подобных ситуа­циях благодаря созданию обобщенной функции (функции с параметром обобщен­ного типа) мы сможем определить смысл алгоритма, не отвлекаясь на обслужи­ваемый тип данных. Поэтому обобщенный тип данных может оказаться весьма полезным при разработке шаблонов процедурных типов данных, способных вос­принимать параметры любых типов.

По аналогии с объявлением обычной процедуры или функции, при создании шаб­лона процедуры или функции сначала указывают ключевое слово type, а затем имя типа. Сразу за именем следует синтаксический элемент, характерный для обобще­ний — пара угловых скобок <... > с названием обобщенного типа данных.

 

Классы-шаблоны

Категория: Учебники по Delphi » Delphi XE

 

Современный язык Delphi приобрел возможность работы с шаблонами или, говоря точнее, с обобщенными типами (generics types) данных. Своим появлением на свет шаблоны обязаны желанием разработчиков развить возможности ООП. Именно в языках программирования, основанных на ООП, код приобрел истинную универ­сальность и стал позволять программистам повторно использовать первоначально разработанный алгоритм для решения новых задач. Создав исходный класс для применения в какой-то прикладной задаче, мы имеем возможность перенести свой класс (или его потомков) в другой проект. Однако обычные классы, пусть даже усиленные за счет наследования, инкапсуляции и полиморфизма, далеко не универ­сальны, ведь их методы и свойства нацелены на обслуживание строго определен­ных типов данных. Концепция обобщенного типа данных как раз и предназначена для устранения этого недостатка — она позволяет программисту абстрагироваться от типа данных. Благодаря шаблонам разработчик получает возможность создавать алгоритмы, не указывая типы данных, с которыми он работает. Услуги обобщенно­го типа данных окажутся весьма кстати при описании схожих алгоритмов, зани­мающихся обработкой разноплановых данных. Например, это позволяет реализо­вать классические алгоритмы сортировки массивов самых разнообразных типов данных в рамках одного и того же метода класса. 

Замечание: Благодаря шаблонам мы получаем удобную возможность отделения алгоритма от
конкретных типов данных, с которыми он работает.

 


 

 
 

Забываем VCL?

Категория: Учебники по Delphi » Delphi XE

 

Идея платформы FireMonkey основана на идее объектно-ориентированного про­граммирования (ООП), поэтому изучение недр FireMonkey стоит начать с обзора опорных классов библиотеки. И здесь нас ждет первый сюрприз. Одного взгляда на иерархию наследования окажется достаточно для того, чтобы понять, что новейшая библиотека проектировалась не с ’’нуля”. В начале цепочки наследования вы обна­ружите хорошо знакомые по классической библиотеке VCL классы TObject, TPersistent и, конечно же, TCom.pon.ent (рис. 2.1), и только затем, на четвертой сту­пени иерархии вам встретится первый "кроссплатформенный" класс TFmxObject. Так что даже если вы решили окончательно и бесповоротно перейти на разработке своих приложений исключительно на FireMonkey, классическую библиотеку VCL вам забыть не удастся!

Вернемся к VCL. На рис. 2.1 представлен фрагмент иерархии наследования классов Delphi. Здесь вы обнаружите наиболее важные классы платформ VCL и FireMonkey (FMX). Почему поставлен акцент на слово "важные"? Потому что именно эти клас­сы (за счет абстрагирования, инкапсуляции, наследования и полиморфизма и дру­гих механизмов, составляющих концепцию ООП) определяют основные родовые черты своих многочисленных кроссплатформенных потомков. Изучив опорные классы, мы получим представление о ключевых особенностях всех классов библио­теки.

 

Что делать, когда код зависит от платформы?

Категория: Учебники по Delphi » Delphi XE

Несмотря на то, что библиотека FireMonkey предлагает нам универсальный инст­румент, позволяющий создавать приложения, предназначенные для работы на раз­ных программных платформах, надо понимать, что ни одна из библиотек не в со­стоянии полноценно заменить родной API целевой операционной системы. Поэто­му уже в данной главе позволю дать вам совет— если в вашем проекте потребуется воспользоваться функциями API, принадлежащими исключительно Windows, OS X или iOS, то перед обращением к ним необходимо явным образом указать компилятору об их использовании так, как предложено в листинге