ВУЗ: Университет управления «ТИСБИ»
Категория: Учебное пособие
Дисциплина: Объектно-ориентированное программирование
Добавлен: 20.10.2018
Просмотров: 1067
Скачиваний: 13
свойств. Это позволяет устранить целый класс неприятных логических
ошибок, таких как использование неинициализированных данных.
Для одного и того же объекта можно предусмотреть несколько
различных конструкторов, которые по-разному инициализируют свойства
создаваемого объекта. Начальные значения свойств часто передаются
конструктору как входные параметры.
Деструктор отвечает за уничтожение объекта, т.е. освобождение
памяти, выделенной объекту. В отличие от конструкторов, механизм
деструкторов реализован не во всех языках: деструкторы есть в языке С++, в
языке Delphi Pascal, предусмотрены (но практически не используются) в
языке С# и отсутствуют в языке Java. В последних двух языках вместо
деструкторов реализован специальный механизм «сборки мусора» (garbage
collect), который способен при необходимости выполнять автоматическое
освобождение памяти.
Еще одна группа очень часто используемых методов – это методы
доступа к закрытым свойствам объекта. Введение таких методов позволяет
организовать контролируемый доступ к внутренним данным объекта. В
общем случае для каждого закрытого свойства можно:
ввести два метода доступа: для чтения хранящегося в свойстве
значения (часто такие методы называют get-методами) и для
изменения значения свойства (set-метод)
ввести только один get-метод: свойство доступно только для чтения
не вводить ни одного метода доступа, что соответствует полной
закрытости элемента данных
Набор используемых с каждым свойством методов доступа
определяется при разработке объекта и позволяет для каждого свойства
организовать необходимый уровень доступа.
Иногда set-методы кроме изменения значений свойств выполняют
некоторую дополнительную работу, например – проверяют новые значения
свойств.
Кроме конструкторов и методов доступа, объекты практически всегда
имеют еще и некоторый набор специфических методов, определяющих
функциональность объекта. Например:
объект «Окружность»: отображение на экране, перемещение,
растяжение/сжатие, вычисление длины окружности.
объект «Список»: добавление элемента, удаление элемента, поиск
элемента, сортировка элементов;
объект «Окно»: отображение, перемещение, изменение атрибутов,
изменение размеров;
объект «Студент»: посещение занятий, выполнение заданий, сдача
контрольных точек, оплата обучения;
В
итоге
объектная
программа
представляет
собой
набор
взаимодействующих объектов, которые обращаются друг к другу за
выполнением необходимых действий.
При этом каждый объект проходит определенный жизненный цикл:
объект создается методом-конструктором
Объект А
конструкторы
методы доступа
открытые методы
закрытые данные
закрытые методы
Объект B
конструкторы
методы доступа
открытые методы
закрытые данные
закрытые методы
Объект C
конструкторы
методы доступа
открытые методы
закрытые данные
закрытые методы
объект используется другими объектами, предоставляя им свои
открытые методы и неявно – закрытые данные
объект уничтожается (явно деструктором или неявно механизмом
сборки мусора)
Очевидно, что при работе объектной программы одновременно может
существовать множество однотипных программных объектов (например -
множество файлов, множество окон, множество студентов). Поэтому
необходим инструмент формального описания таких однотипных
объектов и в качестве такого инструмента выступает следующее важнейшее
понятие объектного подхода - класс.