
- •1. Условный оператор, оператор выбора
- •5. Метод пошаговой детализации (последовательного уточнения) разработки алгоритмов.
- •2. Операторы организации циклов
- •3. Обработка двумерных массивов.
- •4. Процедуры и функции
- •37. Алгоритмы генерирования k-элементных подмножеств множества
- •6. Использование множеств для решения задач
- •7. Процедуры и функции обработки строк
- •8. Сортировка и поиск информации. Методы внутренней сортировки: Сортировка «пузырек»
- •9.Сортировка подсчетом.
- •10.Сортировка простым обменом
- •11. Методы внутренней сортировки: «Шейкер-сортировка»
- •12. Методы внутренней сортировки: Сортировка «Хаора»
- •14. Методы внутренней сортировки: Пирамидальная сортировка
- •16.Сортировка бинарными вставками
- •17. Методы внутренней сортировки: Сортировка «Шелла»
- •15 Сортировка простыми вставками.
- •19.Чтение типизированных файлов
- •18. Сортировка слиянием
- •20.Алгоритмы удаления записей типизированного файла.
- •19.Сортировка естественным слиянием.
- •28. Динамическая структура очередь, ее создание и использование.
- •20. Поразрядная сортировка
- •32. Деревья: построение бинарного дерева
- •52.Чтение типизированных файлов
- •21. Рекуррентные выражения. Рекурсия: прямая и косвенная.
- •22.Стандартные процедуры и функции Unit Graph.
- •53.Алгоритмы удаления записей типизированного файла.
- •27. Динамическая структура стек, ее создание и использование.
- •34. Алгоритмы генерирования перестановок (антилексикографическом порядке )
- •29. Списки: односвязные
- •33. Алгоритм генерирования перестановок в лексикографическом порядке.
- •30.Списки: двухсвязные
- •31. Динамическая структура кольцо, ее создание и использование.
- •34. Алгоритмы генерирования перестановок
- •51. Создание типизированных файлов.
- •36. Алгоритмы генерирования множества всех подмножеств
- •65. Создание таблиц базы данных с помощью Database Desktop.
- •38. Введение в теорию графов. Способы представления ориентированных и неориентированных графов: матрицы смежности
- •39. Поиск в ширину в графе
- •40. Поиск в глубину в графе
- •41,42. Построение остовного дерева графа.
- •43. Поиск кратчайшего пути в графе (Алгоритм Дейкстры)
- •44.Алгоритм Форда поиска кратчайших расстояний в графе.
- •45.Алгоритм Флойда поиска кратчайших расстояний в графе.
- •46. Алгоритмы с возвращением, их реализация с помощью рекурсий и динамических структур. Примеры алгоритмов с возвращением.
- •50.Типизированные файлы, их назначение и использование. Основные процедуры обработки типизированных файлов
- •47,48. Типы файлов, объявление, логическая и физическая организация файловой системы, процедуры и функции обработки файлов
- •67,68 Компоненты страниц Data Access, Data Controls. Создание базы данных, псевдонима бд
- •62 Компоненты страницы Samples, их назначение, свойства, примеры применения
- •56.Полиморфизм. Виртуальные методы. Таблица виртуальных методов
- •54.Понятие объекта.(класса). Инкапсуляция. Иерархия классов (типов). Правила наследования
- •57. Компоненты страницы Standard, их назначение, свойства, примеры применения.
- •49. Нетипизированные файлы
- •58.Компоненты страницы Additional, их назначение, свойства, примеры применения
- •1. TBitBtn
- •2. TSpeedButton
- •3. TMaskEdit
- •4. TDrawGrid
- •60. Компоненты страницы System, их назначение, свойства, примеры применения
- •71. Создание справочной системы
- •61,. Компоненты страницы Dialogs их назначение, свойства, примеры применения
- •63. Задание и изменение свойств компонентов с помощью Инспектора объектов и программно
- •64. Обработка событий, связанных с использованием компонентов.
- •70. Мультимедийные возможности Delphi
- •66. Создание и использование модуля данных Data Module.
- •69. Графические возможности Delphi
56.Полиморфизм. Виртуальные методы. Таблица виртуальных методов
Виртуальные методы
Подобно динамическим переменным виртуальные методы не имеют полного определения в памяти до непосредственного выполнения программы, т.е. если у статического метода код и экземпляр типа связывается во время компиляции, то у виртуального связь устанавливается во время выполнения программы.
Виртуальные методы используются для закрепления некоторых общих логических действий в отношении любого объекта дерева иерархии по конкретному наименованию. Например, используются процедура Show для объектов Sved и Tel. У виртуальных методов при объявлении добавляется зарезервированное слово VIRTUAL. Но если однажды метод определён как виртуальный, все порожденные типы объектов, также должны определить этот метод как виртуальный.
Полиморфизм
С помощью виртуальных методов можно создать полиморфные объекты.
В языке Pascal под полиморфными объектами понимают экземпляры объектов, которые во время выполнения программ могут принимать различные формы представления: от объекта своего типа до любого из потомков. Поясним суть такого явления на простом примере. Можно добавить к первоначальному описанию Sved новый абстрактный метод ShowToClrScr для вывода содержимого полей объекта на предварительно очищенный экран:
procedure Sved.ShowToClrScr;
begin
ClrScr;
Show;
end;
Если после этого попытаться выполнить:
X.ShowToClrScr;
то вместо планированного вывода содержимого полей Tel будут выведены значения полей объекта Sved. Это происходит потому, что внутри метода ShowToClrScr идет вызов метода Show, который автоматически связан с типом Sved. Если же этот метод будет объявляться виртуально, то при прежнем обращении он будет автоматически связан с текущем типом объекта ( Tel ).
Таблица виртуальных правил
Если для объекта определяется хотя бы один виртуальный метод, то для этого типа объекта в сегменте данных строится так называемая VMT ( Virtual Methode Table). Каждый экземпляр объекта будет связан с этой таблицей. При вызове статического метода происходит обращение к соответствующему полю процедурного типа экземпляра объекта. При вызове виртуального метода происходит обращение к VMT и только затем к указателю на выполнимый код метода (таким образом, использование статических методов уменьшает время выполнения программы по сравнению с использованием виртуальных методов. Однако, без виртуальных методов объектно-ориентированное программирование напоминало бы совокупность обыкновенных записей и процедур над ними).
54.Понятие объекта.(класса). Инкапсуляция. Иерархия классов (типов). Правила наследования
В основе ООП лежат понятия класса (class), сочетающего в себе как данные, так и действия над ними, и его физической реализации — объекта.
Класс является своеобразным типом и объявляется в разделе объявления типов. Он в некотором роде похож на тип-запись (record), но включает в себя не только поля данных, но также и подпрограммы для обработки этих данных, именуемые методами, а также так называемые свойства, сочетающие в себе характеристики полей и методов. Таким образом, в классе сосредоточены его характеристики и поведение. Объект же представляет собой переменную соответствующего класса и задается в разделе объявления переменных.
Не для всех классов можно создать соответствующие объекты. Ряд из них, особенно стоящих в начале иерархического дерева всех классов, не позволяют это сделать, либо создаваемые на их основе объекты оказываются неработоспособными, например исходный класс TObject. Это связано с тем, что такие классы не дают всестороннего описания того или иного законченного объекта (как, например, нельзя создать просто образец мебели, а можно создать конкретный стол, конкретный стул и т. д.). Эти классы называются абстрактными и для них обычно характерно наличие так назы¬ваемых абстрактных методов. Несмотря на эту особенность, создавать такие классы целесообразно, так как в них можно сосредоточить то общее, что характерно для всех представителей этого класса с тем, чтобы не повторять это общее многократно во всех потомках.
Идеи создания нового типа - класса были заложены уже при введении процедурного типа, отождествляющего данные и действия над ними. Фактически класс включает в себя, кроме данных, элементы процедурных ти¬пов, правда, несколько иначе оформленные и с расширенным набором особенностей.
Введение нового типа данных потребовало пересмотреть некоторые концепции языка Паскаль: ввести новые понятия, как, например, «инкапсуляция», «наследование», «полиморфизм» и «виртуальность», новые зарезервированные слова, новые приемы работы с компонентами этого типа.
ООП характеризуется тремя основными свойствами: инкапсуляцией (encapsulation), наследованием (inheritance) и полиморфизмом (polymorphism).
Инкапсуляция означает объединение в одном классе и данных, и действий над ними.
Принципы инкапсуляции предполагают также отказ от непосредственного обращения к полям данных класса, хотя это в ряде случаев и возможно. Для обращения к данным обычно используют соответствующие методы. Именно с этой целью введены в ООП и свойства, позволяющие обращаться к полям посредством тех или иных методов этого класса.
Наследование позволяет создавать иерархию классов, начиная с некоторого первоначального (предка) и кончая более сложными, но включающими (наследующими) элементы предшествующих классов (потомков). Эта иерархия в общем случае может иметь довольно сложную древовидную структуру. Каждый потомок несет в себе характеристики своего предка (содержит те же данные, методы и свойства), а также обладает собственными характеристиками.
Полиморфизм означает, что для различных родственных классов можно задать единый образ действий (например, перемещение по экрану любой геометрической фигуры). Затем для каждого конкретного класса составляется своя подпрограмма, выполняющая это действие непосредственно для него (естественно, что перемещение по экрану отрезка отличается от перемещения многоугольника, а перемещение многоугольника, в свою очередь, отличается от перемещения окружности и т. д.), причем все эти подпрограммы могут иметь одно и то же имя. Когда потребуется перемещать конкретную фигуру, будет выбрана из всего множества одноименных подпрограмм соответствующая подпрограмма.
В этой возможности - иметь несколько подпрограмм с одним и тем же именем и имеющих одно и то же назначение, но для разных объектов - и заключается полиморфизм ООП. Вопрос, какая же конкретно подпрограмма будет использоваться в том или ином случае, определяется типом конкретного объекта, для которого следует выполнить соответствующие действия.