
- •Ответы на вопросы
- •Основы визуального программирования. Понятие компонентов. Свойства компонента. Проектирование интерфейсных окон. Компиляция программ.
- •1.1. Краеугольные камни визуального программирования
- •1.3. Первый запуск среды Delphi
- •1.4. Исследуем среду разработки программ
- •Общие свойства компонентов
- •Понятие идентификатора. Зарезервированные (ключевые) слова. Стандартные идентификаторы. Идентификаторы программиста. Комментарии.
- •Комментарии
- •Понятие типа данных. Константы, переменные. Объявление типов, констант, переменных. Понятие типа данных
- •Константы
- •Переменные
- •. Определение новых типов данных
- •Простые типы данных (целочисленные, вещественные, символьные, булевые) Простые типы данных
- •2.3.1. Целочисленные типы данных
- •2.3.2. Вещественные типы данных
- •2.3.3. Символьные типы данных
- •2.3.4. Булевские типы данных
- •Перечисляемые и интервальные типы данных.
- •2.3.6. Перечисляемые типы данных
- •2.3.7. Интервальные типы данных
- •Выражения. Арифметические операции. Операции отношения. Булевские операции. Очередность выполнения операций.
- •2.4.1. Выражения
- •2.4.2. Арифметические операции
- •2.4.3. Операции отношения
- •2.4.4. Булевские операции
- •2.4.5. Операции с битами
- •2.4.6. Очередность выполнения операций
- •Операторы. Оператор присваивания. Оператор вызова процедуры. Составной оператор Операторы
- •2.7.1. Общие положения
- •2.7.2. Оператор присваивания
- •2.7.3. Оператор вызова процедуры
- •2.7.4. Составной оператор
- •Оператор ветвления if Оператор ветвления if
- •Оператор ветвления case . Оператор ветвления case
- •10 . Оператор повтора for.
- •11. Оператор повтора repeat
- •12. Оператор повтора while
- •13. Операторы Continue и Break
- •14. Подпрограммы. Стандартные подпрограммы.
- •2.8.1. Общие положения
- •2.8.2. Стандартные подпрограммы
- •15. Процедуры и функции программиста. Процедуры программиста
- •2.8.4. Функции программиста
- •16. Параметры процедур и функций. Структура модуля. Стандартные модули языка Delphi Параметры процедур и функций
- •Структура модуля
- •2.9.2. Стандартные модули языка Delphi
- •17. Область действия идентификаторов. Область действия идентификаторов
- •18. Строковые переменные. Операции над строками. Стандартные процедуры и функции для работы со строками. Строковые переменные
- •2.10.5. Операции над строками
- •Стандартные процедуры и функции для работы со строками
- •Массивы. Объявление массива. Работа с массивами. Динамические массивы Массивы
- •2.11.1. Объявление массива
- •2.11.2. Работа с массивами
- •Динамические массивы
- •Множества. Операции над множествами . Множества
- •2.12.1. Объявление множества
- •2.12.2. Операции над множествами
- •Записи. Записи
- •2.13.1. Объявление записи
- •2.13.2. Записи с вариантами
- •Файлы. Работа с файлами. Стандартные подпрограммы управления файлами
- •2.14. Файлы
- •2.14.1. Понятие файла
- •2.14.2. Работа с файлами
- •2.14.3. Стандартные подпрограммы управления файлами
- •Формула объекта. Три кита ооп
- •3.1. Краеугольные камни ооп
- •3.1.1. Формула объекта
- •3.1.5. Три кита ооп
- •Классы и объекты
- •3.2. Классы
- •3.3. Объекты
- •Конструкторы и деструкторы
- •3.4. Конструкторы и деструкторы
- •Методы классов
- •3.5. Методы
- •Свойства классов
- •3.6. Свойства
- •3.6.1. Понятие свойства
- •3.6.2. Методы получения и установки значений свойств
- •3.6.3. Свойства-массивы
- •3.6.4. Свойство-массив как основное свойство объекта
- •3.6.5. Методы, обслуживающие несколько свойств
- •28) Наследование
- •29) Перекрытие атрибутов в наследниках
- •30) Совместимость объектов различных классов
- •31) Понятие виртуального метода
- •32) Классы в программных модулях
- •33.Разграничение доступа к атрибутам объектов
- •34)Классы для представления списка строк
- •Свойства:
- •Методы:
- •События:
- •35. Классы для представления потока данных
- •Общие свойства:
- •Общие методы:
- •36. Обрабока исключительных ситуаций
- •4.3.1. Создание исключительной ситуации
- •4.3.2. Распознавание класса исключительной ситуации
- •4.3.3. Пример обработки исключительной ситуации
- •4.3.4. Возобновление исключительной ситуации
- •4.3.5. Доступ к объекту, описывающему исключительную ситуацию
- •37. .Защита выделенных ресурсов от пропадания
- •4.4.1. Утечка ресурсов и защита от нее
- •Сортировка массива методом прямого выбора
- •Сортировка массива методом прямого обмена (пузырьковым методом)
- •Сортировка массива методом прямого включения
- •Шейкерная сортировка
- •Сортировка массива с помощью включений с уменьшающимися расстояниями (метод Шелла)
- •Сортировка разделением (быстрая сортировка)
-
Формула объекта. Три кита ооп
Объекты — это крупнейшее достижение в современной технологии программирования. Они позволили строить программу не из чудовищных по сложности процедур и функций, а из кирпичиков-объектов, заранее наделенных нужными свойствами. Самое приятное в объктах то, что их внутренняя сложность скрыта от программиста, который просто пользуется готовым строительным материалом.
Сейчас преимущества использования объектов очевидны для всех. Однако так было не всегда. Сначала старая гвардия не поняла и не приняла объекты, поэтому они почти 20 лет потихоньку развивались в различных языках, первым из которых была Simula 67. Постепенно объектно-ориентированный подход нашел себе место и в более мощных языках, таких как C++, Delphi и множестве других языков. Блестящим примером реализации объектов была библиотека Turbo Vision, предназначенная для построения пользовательского интерфейса программ в операционной системе MS-DOS.
Полную победу объекты одержали с приходом эпохи многофункциональных графических пользовательских интерфейсов. Теперь без объектов в программировании просто не обойтись. Чтобы вы не рылись в других книгах, собирая информацию по крохам, мы не поленились и объединили в этой главе все, что нужно знать об объектах. Для новичка важнейшее здесь: инкапсуляция, наследование, полиморфизм, остальное можно просто просмотреть и возвращаться к материалу по мере накопления опыта. Профессионалу полезно прочитать внимательно все от начала до конца. Поэтому давайте засучим рукава и приступим к делу.
3.1. Краеугольные камни ооп
3.1.1. Формула объекта
Авторы надеются, что читатель помнит кое-что из главы 2 и такие понятия как тип данных, процедура, функция, запись для него не в новинку. Это прекрасно. Так вот, в конце 60-х годов кому-то пришло в голову объединить эти понятия, и то, что получилось, назвать объектом. Рассмотрение данных в неразрывной связи с методами их обработки позволило вывести формулу объекта:
Объект = Данные + Операции
На основании этой формулы была разработана методология объектно-ориентированного программирования (ООП).
3.1.5. Три кита ооп
Весь мир ООП держится на трех китах: инкапсуляции, наследовании и полиморфизме. Для начала о них надо иметь только самое общее представление.
Объединение данных и операций в одну сущность — объект — тесно связано с понятием инкапсуляции, которое означает сокрытие внутреннего устройства. Инкапсуляция делает объекты похожими на маленькие программные модули, в которых скрыты внутренние данные и у которых имеется интерфейс использования в виде подпрограмм. Переход от понятий «структура данных» и «алгоритм» к понятию «объект» значительно повысил ясность и надежность программ.
Второй кит ООП — наследование. Этот простой принцип означает, что если вы хотите создать новый класс объектов, который расширяет возможности уже существующего класса, то нет необходимости в переписывании заново всех полей, методов и свойств. Вы объявляете, что новый класс является потомком (или дочерним классом) имеющегося класса объектов, называемого предком (или родительским классом), и добавляете к нему новые поля, методы и свойства. Процесс порождения новых классов на основе других классов называется наследованием. Новые классы объектов имеют как унаследованные признаки, так и, возможно, новые. Например, класс СОБАКИ унаследовал многие свойства своих предков — ВОЛКОВ.
Третий кит — это полиморфизм. Он означает, что в производных классах вы можете изменять работу уже существующих в базовом классе методов. При этом весь программный код, управляющий объектами родительского класса, пригоден для управления объектами дочернего класса без всякой модификации. Например, вы можете породить новый класс кнопок с рельефной надписью, переопределив метод рисования кнопки. Новую кнопку можно "подсунуть" вместо стандартной в какую-нибудь подпрограмму, вызывающую рисование кнопки. При этом подпрограмма "думает", что работает со стандартной кнопкой, но на самом деле кнопка принадлежит производному классу кнопок и отображается в новом стиле. Пока достаточно самого поверхностного понимания всех приведенных выше понятий, ниже мы рассмотрим их подробнее и покажем, как они реализованы в среде Delphi.