Конец описания.
Реализация
Интерфейс
Конец описания.
Понятие класса. Стр-ра и орг-я определения класса.
Классы. Для представления абстракций объектов используется специальный определяемый программистом тип данных - класс.
Класс - это структурный тип данных, который включает описание полей данных, а также процедур и функций, работающих с этими полями данных. Применительно к классам такие процедуры и функции получили название методов. Хар-ки данных и подпрограмм назыв. св-ми, а данные класса назыв. полями
В программах используются переменные типа класса. Такие переменные принято называть просто объектами.
Класс Окно:
поляX1,Y1,X2,Y2, Color
методИнициализировать(aX1,aY1,aX2,aY2,acolor)
методИзобразить
Создавая объекты типа окно, инициализируя их в соответствии с условием и посылая им сообщение «Нарисовать окно», получим разные окна на экране, причем параметры этих окон будут храниться в объектах.
Каждая переменная типа класса включает набор полей, объявленных в классе. Совокупность значений, содержащихся в этих полях, моделирует конкретное состояние объекта предметной области. Изменение этих значений в процессе работы отражает изменение состояния моделируемого объекта.
Воздействие на объект выполняется посредством изменения его полей или вызова его методов. Доступ к полям и методам объекта осуществляется, за исключением специальных случаев, с указанием имени объекта (при этом используется составные имена):
<имя объекта>.<имя поля>или<имя объекта>.<имя метода>.
Все методы объекта обязательно имеют доступ ко всем полям своего объекта. В рассматриваемых далее языках программирования это достигается через неявную передачу в метод специального параметра - адреса области данных конкретного объекта (Self - в Паскале и this - в С++). Таким образом, уменьшается количество параметров, явно передаваемых в метод.
Ограничение доступа.Большинство версий объектно-ориентированных языков позволяют ограничить доступ к некоторым полям и методам объекта, обеспечивающим функционирование «внутренностей» объекта. При наличии таких возможностей специальными средствами выделяют интерфейс и реализацию класса. Описание класса без учета синтаксиса конкретного языка выглядит следующим образом:
Класс <имя класса>
<объявление полей и методов класса, к которым возможно обращение извне>
<объявление полей и методов класса, к которым невозможно обращение извне>
объединение полей данных и процедур и функций, работающих с этими данными, в единый пакет, при наличии специальных правил доступа к элементам пакета называется инкапсуляцией.
Наличие интерфейса обеспечивает уменьшение возможности «разрушения» (несанкционированного изменения значений полей) объекта извне. Сокрытие особенностей реализации, кроме того, упрощает внесение изменений в реализацию класса, как в процессе отладки, так и при модификации программы. Таким образом, класс определяет существование глобальной области данных внутри объекта, доступной методам объекта. С другой стороны доступ к объекту регламентируется и должен выполняться через специальный интерфейс (рис. 1.18).
Рис. 1.18. Интерфейс и реализация класса
Как и любая переменная программы, объект должен быть размещен в памяти (создан) и удален из памяти (уничтожен). Причем создание и уничтожение объектов может выполняться статически и динамически.
Статическое создание объектов выполняется в процессе компиляции программы, а статическое уничтожение - при завершении программы: объект удаляется из памяти вместе с программой.
Динамическое создание и уничтожение объектов выполняется в процессе работы программы специальными командами.
Операция создания и инициализация полей объекта получила название конструирования объекта, а операция уничтожения объекта - деструкции объекта. Соответствующие методы, если они определены в классе, получили название, конструкторов и деструкторов. Конкретные особенности этих методов в различных языках программирования будут обсуждаться в соответствующих разделах.
Класс Файл
Интерфейс
Конструктор создать
Метод открыть(имя файла);
Метод добавить(фамилия, телефон);
Метод найти(фамилия);
Деструктор удалить;
Реализация
Поле Файл_переменная;
Поле Состояние файла;
Поле проверка открытия;
Конец.
После описания стр-ры класса должны быть разработаны алгоритмы методов, назначены типы полей и передаваемых параметров. Передача сообщений объектов будет реализована как вызов соотв. Метода интерфейсной части.