Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_2.doc
Скачиваний:
31
Добавлен:
28.03.2015
Размер:
494.59 Кб
Скачать

3.1.3. Природа объекта

В общем случае каждый объект "помнит" необходимую информацию, "умеет" выполнять некоторый набор действий и характеризуется набором свойств. То, что объект "помнит", хранится в его полях. То, что объект "умеет делать", реализуется в виде его внутренних процедур и функций, называемых методами. Свойства объектов аналогичны свойствам, которые мы наблюдаем у обычных предметов. Значения свойств можно устанавливать и читать. Программно свойства реализуются через поля и методы.

***Рисунок-представление объекта

Например, объект "кнопка" имеет свойство "цвет". Значение цвета кнопка запоминает в одном из своих полей. При изменении значения свойства "цвет" вызывается метод, который перерисовывает кнопку.

Кстати, этот пример позволяет сделать важный вывод: свойства имеют первостепенное значение для программиста, использующего объект. Чтобы понять суть и назначение объекта вы обязательно должны знать его свойства, иногда — методы, очень редко — поля (объект и сам знает, что с ними делать).

3.1.4. Понятие класса объектов

В объектных системах объекты одного типа принято объединять в классы объектов. Каждый объект всегда принадлежит некоторому классу объектов. Класс объектов — это обобщенное (абстрактное) описание множества однотипных объектов.

Объекты являются конкретными представителями своего класса, их принято называть экземплярами класса. Например, с точки зрения объектной технологии, каждый человеческий индивидуум – это экземпляр класса «Человек».

Класс объектов определяет свойства и методы, то есть тот интерфейс, который является единым для всех его экземпляров. Это определение устанавливает своего рода рамки, которые каждый экземпляр заполняет своими индивидуальными значениями. Стало быть, экземпляры имеют тип соответствующего класса.

Экземпляры одного класса могут отличаться лишь значениями своих свойств, но не своими методами. Методы устанавливаются для всех экземпляров при определении класса. Отсюда следует, что все члены одного класса обнаруживают не только идентичный интерфейс, но и идентичное «поведение».

В качестве примера представим себе класс «Треугольник», обладающий такими методами, как «Нарисовать», «Переместить», «Удалить», а также свойствами «Позиция», «Размер», «Цвет». Для этого класса определены методы и написан соответствующий код, с помощью которого треугольник рисуется, удаляется или перемещается с одной позиции на другую. Отдельные экземпляры обладают значениями свойств: определенной позицией, размером, цветом. Если требуется удалить какой-нибудь треугольник, пользуются его методом «Удалить». Хотя этот метод и определен в классе объектов, он является методом экземпляров, действующим для каждого экземпляра в отдельности, и относится непосредственно к тому треугольнику, для которого вызывается.

***Рисунок-класс и его экземпляры

3.1.5. Три кита ооп

Весь мир ООП держится на трех китах: инкапсуляции, наследовании и полиморфизме.

Объединение данных и операций в одну сущность — объект — тесно связано с понятием инкапсуляции. Инкапсуляция означает, что для внутренней реализации справедлив принцип сокрытия информации, согласно которому ни программный код, ни поля не выставляются на всеобщее обозрение и не могут использоваться за пределами объекта.

В противоположность этому объекты имеют открытый интерфейс, описываемый в виде набора свойств и методов. Методы определяют поведение объекта, а свойства – его «знания», иными словами, данные.

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

Третий кит — это полиморфизм. Он означает, что в производных классах вы можете изменять работу уже существующих в базовом классе методов. При этом весь программный код, управляющий объектами родительского класса, пригоден для управления объектами дочернего класса без всякой модификации. Например, вы можете породить новый класс кнопок с рельефной надписью, переопределив метод рисования кнопки.